`
何必如此
  • 浏览: 53596 次
社区版块
存档分类
最新评论

规则引擎Visual Rules Solution开发基础教程【连载8】--VisualRules实例二(中)

阅读更多
VisualRules实例二(中)


         上一篇介绍了关于准备数据库、配置数据源和员工信息管理等的相关规则配置方法,下面看一下关于部门信息管理和员工月工资管理的相关规则配置。

一、部门信息管理

         我们希望以树状菜单的形式来显示并维护部门信息,点击部门后,会显示该部门下面所有的员工信息。
         我们在工程下面,建立一个部门信息规则组。然后我们在这个规则组下面建立部门信息相关的规则包。


1.部门菜单规则包

         我们在部门信息规则组下面建立一个名为“部门菜单”的规则包,并将其外部调用名定义为“wage.department.tree”。

2.设置数据源

         然后我们在该规则包的对象库中,采用导入的方式添加一个hr_deparment的表。另外我们在添加一个查询所有部门的查询结果集,由于我们在显示树状部门时候,我们希望通过显示顺序来对部门进行排列,所以我们的SQL语句定义为:select hr_department.depid, hr_department.depname, hr_department.superid  from hr_department order by hr_vieworder。





3.定义变量

         我们首先需要定义一个名为deplist,类型为list<list>的变量,用于存储所有部门信息。我们还需要定义树状菜单提交上来的部门编号、部门名称、显示顺序以及上级部门信息。树状菜单在提交数据时,会缺省用nID来传递主键信息,因此。部门编号的名称定义为nID。另外还需要定义一个树状菜单提交上来的操作类型,缺省的名称为hidAct。如果是新增则为“add”,修改为“edit”,删除为“del”。对象库变量的定义如下所示:




4.定义规则

         在树状显示部门信息的逻辑中,首先是如果菜单有数据提交则处理提交的数据,提交分为新增、修改和删除,然后,是将所有部门查询出来,显示到页面上。
         因此我们需要建立三个规则集,分别处理,新增、修改和删除的逻辑,最后添加一个规则,将部门信息取出来。
         首先添加一个新增规则集,其进入条件为hidAct等于“add”。如下:





         然后再其下面添加一个添加记录规则,其逻辑如下:分别设置部门信息表的上级部门字段、显示顺序字段以及部门名称字段,最后执行insert语句完成添加记录操作。可以根据“对表字段赋值向导”完成这个规则的操作。




         然后我们添加一个修改规则集,其进入条件为hidAct等于“mod”。如下所示:




         我们在修改下面,添加一个修改记录的规则,其逻辑如下:我们只需要设置部门信息表的上级部门字段、显示顺序、部门名称以及部门编号字段的值。然后执行update语句,规则包在执行的时候,会自动根据部门编号这个主键去更新部门信息表。可以根据“对表字段赋值向导”完成这个规则的操作。




         然后再添加一个删除规则集,其进入条件为hidAct等于“del”。如下所示:




         我们在删除规则集下面,新建一个删除记录的规则,其逻辑如下:将部门信息表的部门编号字段设置值,然后执行delete操作。规则包执行时,就可以根据部门编号的主键值去删除对应的部门信息表。可以根据“对表字段赋值向导”完成这个规则的操作。




         最后添加一个读取信息的规则,其逻辑如下:








5.定义框架页面

         设置完业务逻辑后,需要设置对应显示的页面。树状菜单显示分为两个页面,一个是frames的框架页面,一个是tree的树状页面。
         我们先在规则包下面,新建一个jsp页面,这个jsp页面先将其显示名称修改为wage/department/frames.jsp,模板文件属性设置为“页面框架”,规则执行设置为“预处理字段值”,左边页面url设置为tree.jsp,左窗体宽度设置为120,右边页面url设置为 ../employee/list.jsp。右窗体宽度设为*。如下所示:









6.定义树状菜单页面

         我们再新建一个jsp页面,这个jsp页面的模板文件属性设置为“树状页面显示Ⅱ”,并且将其右键菜单属性设置为“显示”。接着通过其编辑窗口设置其字段,首先我们将deplist的输出方式设置为“树状显示”,将nID字段的录入方式设置“不设置”或“隐含字段”,将depid字段的录入方式设置为“隐含字段”,将depname字段的录入方式设置为“隐含字段”,将显示顺序字段的录入方式设置为“隐含字段”,将上级部门的录入方式设置为“隐含字段”,将hidAct的录入方式设置为“不设置”或“隐含字段”。




         然后我们在设置这些字段的扩展属性。我们设置deplist的扩展属性。弹出的扩展属性窗口中,我们首先修改treeurl属性,我们将他设置为:
         .. /employee/list.jsp?id=<%=((java.util.List)deplist.get(i)).get(0)%>。点击确定后,会修改treeurl。另外我们在增加四个弹出菜单,分别为新建部门,其值为tree_edit('popadd.jsp','add');修改部门,其属性值tree_edit('popedit.jsp','mod');删除部门,其属性值为tree_del('del');部门属性,其属性值为tree_view ('popview.jsp')。这些定义表示当点击树状菜单中的某个部门,可以选择对其的操作,包括新建下级部门,修改当前部门,删除当前部门和查看当前部门详细信息。如下:





         我们再设置部门名称的valuepos属性为0,设置显示顺序的valuepos属性为1,设置上级部门的valuepos属性为2。




         我们定义了对树状菜单中的元素的操作之后,可以对部门进行操作,我们还需要定义一个对全局的新建一级部门的操作,这个操作需要定义在jsp页面的参数设置中。
         我们在jsp页面的参数设置窗体双击,然后再弹出的窗口中,选择“弹出式菜单名称及click事件”,属性名输入为:popup_新建部门,属性值设置为:tree_new('popadd.jsp','add')。如下所示:








         点击确定后,完成设置。
         我们用jsp web浏览器打开frames.jsp页面,出现如下界面:





         表示页面设置完成。

7.部门信息规则包

         定义了树状显示的部门菜单之后,我们需要定义输入部门信息的输入窗体,这些窗体我们在前面的页面中定义为popadd.jsp,popedit.jsp,popview.jsp。这些页面都是根据部门编号自动显示部门信息,进行修改。
         在弹出这些窗体页面时,系统会将被点击的部门编号,以nID的名称传过去:
我们先在部门信息规则组下面新建一个“部门信息”规则包,并且将其外部调用名设置为“wage.department.pop”。


8.定义数据源

         我们在对象库中,导入添加hr数据源以及hr_department表。

9.定义变量

         我们在对象库中,首先定义一个nID变量,这个变量是缺省情况下,从页面上传入的。然后是hidAct变量,这个变量表示当前是什么操作,弹出的这个页面。
         然后再定义读取hr_department表的字段depid、depname、vieworder、superid,nID,hidAct字段,如下所示:





         这些定义,也可以直接从部门菜单的对象库中,复制过来。

10.定义规则

         定义完变量和数据源之后,我们需要定义处理的规则。这个规则包的逻辑如下:首先判断此操作类型。如果操作类型不是是add,并且nID大于0则我们显示该部门下的所有信息。
         我们添加一个判断操作的规则集,进入条件为操作不等于“add”并且nID大于零:





         添加页面信息规则,显示部门名称,顺序,上级部门:








         如果传入是是add操作,并且nID大于零,则我们把上级部门设置为该部门编号也就是nID。先添加判断操作的规则集:








11.定义页面

         我们将这个规则包用于三个页面的业务逻辑层处理。因此我们需要定义三个页面。首先我们添加popadd.jsp页面。
         我们先在规则包下面添加一个jsp页面,将其名称修改为wage/department/popadd.jsp,并且将模板文件设置为“弹出式输入页面”,将字符长度设置为“按字符数校验”。





         然后我们在该jsp页面的编辑窗体,设置其字段。如下,我们将nID字段的录入方式设置为隐含字段,将depid字段的录入方式设置为隐含字段;将superid字段的录入方式为隐含字段,将hidAct字段的录入方式设置为隐含字段。




         然后,我们根据向导更新字段的长度,另外我们在设置字段的扩展属性。我们将depname的valuepos设为0,将vieworder的valuepos设为1,将superid的valuepos设为2。




         添加完popadd.jsp后,我们在添加popedit.jsp。我们复制已经定义的popadd.jsp,然后将复制后的popadd.jsp名称修改为popedit.jsp,将其标题设置为“修改部门”:




         最后我们添加popview.jsp页面。我们复制已经定义的popadd.jsp,然后将复制后的popadd.jsp名称修改为popview.jsp,将其标题设置为“部门属性”,数据提交区为关闭按钮:





         另外,我们在该popview.jsp的编辑窗口,设置字段的显示方式,我们将depname和vieworder字段的非空设置为“静态文本显示”,设置上级部门为数字输入框,其录入字段为非空设置为“静态文本显示“:




         通过以上的设置就完成了部门信息的维护工作。
         我们通过jsp web浏览器打开frames.jsp页面,通过该页面就可以进行新建部门、修改部门和删除的操作,如下所示:





         关于员工工资管理要完成以下需求:
         我们以月为单位来计算员工的月工资,首先我们定义的一个初始化逻辑,根据员工的入职时间,将当月在职的员工的基本工资初始化到月工资表中。
         初始化之后,就有了员工工资的基本信息,然后设置员工当月的奖金以及惩罚金额。根据这些设置最后计算员工工资数据。
         最后员工就可以查询自己的月工资信息了。
         具体的操作,放到下一节去详细介绍。
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics