- 浏览: 55433 次
文章分类
最新评论
-
蒙奇君杰:
煎蛋就是幸福 写道我想说,lz你英语水平真不咋的,错误信息提示 ...
tomcat在Debug模式下无法启动解决办法 -
煎蛋就是幸福:
我想说,lz你英语水平真不咋的,错误信息提示的是在45秒内启动 ...
tomcat在Debug模式下无法启动解决办法
VisualRules实例二(下)
书接上回,在这篇实例的最后一部分介绍一下“员工月工资管理”的相关内容。
一、员工月工资管理需求
我们以月为单位来计算员工的月工资,首先我们定义的一个初始化逻辑,根据员工的入职时间,将当月在职的员工的基本工资初始化到月工资表中。
初始化之后,就有了员工工资的基本信息,然后设置员工当月的奖金以及惩罚金额。根据这些设置最后计算员工工资数据。
最后员工就可以查询自己的月工资信息了。
在工资管理工程下面,建立一个员工月工资规则组。该规则组下面维护月工资相关的规则包。
我们首先需要建立一个月工资初始化的规则包,这个规则包传入月份后,就可以初始化月工资数据。
我们再做一个月工资维护的规则包。这个规则包,显示员工的月基本工资、奖金、惩罚金额。
计算工资规则包,根据录入的数据,计算月工资、扣款、实发工资。
最后再作一个查询功能,根据员工姓名,查询员工的月工资清单。
二、月工资初始化规则包
首先我们在规则组下面新建一个月工资初始化的规则包,然后将该规则包的外部调用名命名为wage.salary.init。
这个初始化的规则,是根据需要计算的月份,从员工信息表中将入职日期在该月之前的员工的基本工资取出来,作为员工的基本数据,然后将这些数据初始化到员工该月的基本工资。
最后将这些月工资数据,更新到月工资表中。
1.定义数据源
我们在规则包的对象库中,添加一个hr数据源,然后在其下面导入月工资表。另外我们在建立一个取入职日期在该月之前的员工的基本工资的sql查询。如下所示:
这个sql可以通过向导生成,然后将sql语句做相应的修改,变量名称如果需要可读性强些,也可以进行定义。
2.定义内存表
我们可以在hr数据源下面也可以直接在对象库下面建立内存表。本例中我们在hr数据源下面建立月工资的内存表。
如下所示,右键点击hr数据源,选择“添加计算表格”:
然后将内存表的显示名称改为“月工资内存表”,如下所示:
点击确定后,系统会在hr数据源下面建立一个月工资内存表。下面我们需要定义月工资内存表的列信息。这些列信息,可以从月工资表的字段复制过来。在本例中,我们只需要初始化员工编号、年、月、基本工资,奖金和惩罚我们都设置为0,当月工资为基本工资,所得税和税后工资暂时都设为0,表示还没有进行计算。
首先到月工资表的也工资表结构,选中所有的表的字段,然后右键选择复制:
然后点击月工资内存表,在其编辑窗口,右键选择“粘贴”:
粘贴后,会在内存表中,设定完和月工资表一致的列信息。我们选中所有的列,并且在前面打上勾,这样会将所有的列设成是可以选中的:
3.定义变量
初始化月工资表,需要输入设置的月的年份和月份。我们分别定义变量sayear,samonth两个变量在对象库的传入数据中:
我们在本例的业务逻辑处理时,需要根据年份和月份取得该月的最后一天,因此我们需要定义一个临时变量,这个临时变量存储该月最后一天。
另外我们再定义一个外部方法 ,这个方法用于根据年份和月份,取得该月的最后一天。此方法在com.flagleader.util.DateUtil中的getCurMonthLastDay方法定义:点击对象库的外部调用中的添加按钮,弹出类名的输入框:
然后在类名的输入框中输入com.flagleader.util.DateUtil,点击回车后,出现类的静态方法的选择窗体,在此选择窗体中,选择getCurMonthLastDay方法:
点击确定后,在外部调用里面就会增加一个方法,我们将其显示名称修改为“取{arg1}年 {arg2}月的最后一天”,如下所示:
4.定义规则
定义完了对象库之后,我们来定义操作这些数据的逻辑。首先我们根据传入的年份和月份,然后取得入职日期在该月最后一天之前的那些员工的基本工资,然后这些员工信息添加到月工资内存表中。在将内存表中员工的其他信息进行初始化。最后将这些员工信息,存入数据库表中。
(1)有效月份判断规则集
首先定义一个校验是否输入有限的年份和月份的规则集:
(2)读取员工信息规则
我们在规则集下面建立一个规则,名为读取员工信息,我们先设置该月最后一天,赋值给临时变量:
设置完之后,我们根据该月最后一天执行取员工的基本工资的sql查询语句:
我们在将查询后的数据,导入到月工资内存表中:
添加了将查询结果“请点击选择”中的数据根据设定的列对应关系全部导入到表格(月工资内存表)中的方法后,我们点击“请点击选择”,然后再输入框中,选择“入职日期之前的员工基本信息”查询作为来源列表数据,列的对应关系,如下所示进行设置:
点击确定后,就设置了将查询的结果集数据导入到内存表中的操作。
(3)初始化月工资数据规则
接下来我们需要初始化月工资数据,我们要把月工资内存表中的奖金设为0,惩罚设为0,月工资设为已经分配的基本工资,所得税扣款设为0,税后工资设为0。
先添加一个规则,命名为初始化月工资。然后通过其属性窗口,将其中的遍历表格属性打上勾,选择表格属性,选择“月工资内存表”。如下所示:
设置完后,我们再设置具体的逻辑,我们设置多个赋值语句,被赋值的为月工资内存表的列,如下所示:
最后我们将内存表的数据写入数据库,我们建立一个名为“写入数据库”的规则。将其遍历表格属性打上勾,选择表格属性,选择“月工资内存表”。
我们通过向导设置表的赋值语句,并且赋值语句的值的来源,选自月工资内存表,如下,我们先选择右键点击“写入数据库”规则,选择“对表字段赋值向导”:
然后我们选择“月工资表”下面所有的字段,并且将包含插入操作和包含更新操作打上勾,如下所示:
点击确定后,会自动添加插入表语句,由于月工资内存表的所属年和所属月字段和输入的年和月一致,因此缺省选择的根据变量赋值给表字段的操作,不用做修改。如下所示:
5.定义页面
业务逻辑定义完毕后,我们需要定义调用页面。这个页面通过在维护月工资数据时发起,因此我们将其设置为判断处理页面,并且设置成无错就直接返回到table.jsp页面。
init.jsp页面不能单独显示,在table.jsp通过提交调用。
三、月工资维护规则包
我们需要通过输入年月来查询该月的月工资数据,可以通过初始化月工资数据,可以看到该月所有员工的月工资数据,并且进行修改维护。可以对这些维护的数据,自动计算所得税和税后工资,可以将修改的数据保存到数据库中。
我们在员工月工资规则组下面,新建一个名为“月工资维护”的规则包,将其外部调用名定义为 wage.salary.table。
1.定义数据源
我们在对象库下面新建一个hr数据源,并且在hr数据源下面建立一个查询,如下所示:
这是根据所属年和月,查询该月的工资表数据。
2.定义内存表
由于我们需要以纵横表格的形式来显示数据,因此在纵轴上我们希望显示员工姓名,在横轴上我们希望显示月份。这样我们在取得的数据中,需要包含一列信息是月份信息的。因此我们定义一个内存表,增加一列信息,用于表示月份信息。
我们在hr数据源下面,增加一个名为“员工月工资内存表”的计算表格,然后设置其信息如下所示:
其中monthinfo为我们需要增加的月份信息,其他字段可以直接从sql查询中得到。
3.定义变量
我们再定义需要的变量,本例中根据输入年和输入月,来查询得到月工资表,因此需要定义输入年和输入月两个变量。另外需要定义一个salarylist变量,用于从内存表中取值,另外我们还需要定义一个变量表示数据是查询页面提交上来的:
4.定义规则
具体的业务逻辑如下,首先是根据传入年和月查询该月工资表,将该工资表赋值给内存表,将其中的月信息描述成中文,最后将此数据返回给salarylist变量传到页面。
(1)提交查询规则集
我们定义一个规则集,其进入条件是提交不为空,并且输入年和月信息合法:
(2)读取表数据规则
我们在规则集下面新建一个“读取表数据”的规则,规则逻辑为先根据输入年和月执行sql语句,再将sql查询的结果集赋值给内存表。
其中列对应关系为:
(3)更新月描述信息规则
我们在规则集下面,建立一个“更新月描述信息”规则,将此规则属性的遍历表格属性打上勾,选择表格属性,选择“员工月工资内存表”。
然后我们在具体的逻辑中,增加一条赋值语句,被赋值为内存表的月份信息。我们需要将月份信息设置为 输入年+“年”+输入月+“月”这种形式。由于输入年和输入月为数值型,而月份信息的类型为字符串型。因此需要先设置,可以将数值型设置为字符串型。
定义的赋值语句如下:
然后我们点击工程菜单中的设置,如下所示:
然后我们将编辑选项中的“自动转换其他类型为字符串”打上勾,如下所示:
这样我们就可以在赋值语句中选择到输入年和输入月:
设置完成后,如下所示:
(4)取内存表数据规则
最后我们定义一个取内存表数据的规则,将内存表的数据赋值给salarylist变量,赋值语句如下所示:
属性栏设置为:
5.定义table.jsp页面
我们用xy纵横表格来显示月工资表,首先我们在规则包下面新建一个jsp页面,然后设置该jsp页面的模板文件为“纵横表格显示”,显示导航属性为“显示并包含返回按钮”,检索条件为“不显示”,快速检索为“不显示”,提交页面为table.jsp,保存页面为“save.jsp”,查询页面为“select.jsp”:
然后我们设置页面的字段信息,我们将输入年的录入方式设置为“隐含字段”,将输入月的录入方式设置为“隐含字段”,将月工资表的输出方式设置为“纵横表格”,将提交的录入方式设置为“不设置”,如下所示:
接下来,我们为月工资表的纵横表格,设置纵轴、横轴和中间值的信息。首先我们右键点击月工资表,在弹出的菜单中,选择“添加列字段向导”:
然后弹出的选择窗体中,我们选择“员工月工资内存表”下面一些列作为显示,其中员工姓名在纵轴上显示,月份信息在横轴上显示。
这样会在月工资表的纵横表格下面,建立值信息,缺省情况下,这些值都被设置成中间值,我们需要做以下的修改:当月基本工资、当月奖金、惩罚扣除的录入方式设置为“文本输入框”,员工姓名的字段类型设置为“纵横显示”,月份信息的字段类型设置为“横轴显示”,然后调整“月份信息”,“员工姓名”位置:
接下来我们设置字段的扩展属性,我们将月工资表纵横表格的扩展属性做如下的修改:exportExcel属性设置为true,表示可以直接可以生成Excel数据。valuetop属性设置为true,将值设成是横向排列。hiddencolamount属性设置为true,表示隐藏汇总的列信息。
在纵横表格的中间值中,当月工资是由当月基本工资+奖金+惩罚得到的。其中惩罚为负数。因此当月工资我们设成是公式。
我们在当月工资字段的扩展属性中,将其formula属性设置为 @3+@4+@5:
接下来,我们需要为页面增加一个“初始化”按钮,因此我们在jsp页面的页面元素窗体中,点击添加按钮,在弹出的输入框中输入如下:
添加确定后,会增加一个页面元素,我们将其扩展属性做如下的设置:
table.jsp我们设置完后,我们需要一个select.jsp来调用它。
6.设定select.jsp页面
我们在规则包下面添加一个jsp页面,并且将其名称设置为wage/salary/select.jsp,另外我们将其模板文件设置为“录入提交页面”,另外我们将提交页面设置为“table.jsp”页面:
我们设置页面的字段信息,由于select.jsp页面不处理salarylist,因此将此字段删除。我们要将年和月合并在一起显示,因此我们要通过扩展属性来进行设置。首先我们将sayear的录入方式设置为“文本输入框”,并且其显示名称设置为“请选择:”,另外我们将samonth的录入方式设置为“下拉式菜单选择框”,将其显示名称设置为空。我们将提交设置“提交按钮”,如下所示:
接下来我们设置sayear的扩展属性,我们将其width设置为40,将posfix设置为年,表示后缀显示为年,hasnext设置为samonth:
我们在设置samonth的扩展属性,我们将其postfix的属性设置为“月”,并且我们添加多个“单个菜单项”,分别用于表示下拉选择1到12月,如下所示:
定义完页面后保存,通过jsp web浏览器打开select.jsp,出现如下界面:
点击提交后,出现2009年3月的月工资表,但是是空白的:
点击初始化后,再查询,就出现如下界面:
这样就初始设置了这些员工的基本工资等信息。
三、月工资表保存规则包
在月工资表维护界面,当修改了基本工资、奖金、惩罚等数据后,点击保存。需要激活保存规则包。点击保存时,首先需要根据基本工资、奖金、惩罚计算月工资,然后根据月工资计算所得税,最后计算实发工资,最后把这些数据存到月工资表中。
我们在员工月工资规则组下面建立“月工资表保存”规则包,并把其外部调用名设置为 wage.salary.save
1.设定数据源
我们在规则包的对象库中建立hr数据源,并且导入hr_salary表。
2.设定内存表
我们定义一个内存表和月工资维护的员工月工资内存表一致,因此我们直接从月工资维护规则包中复制过来。
首先我们在月工资维护规则包中,右键点击员工月工资内存表,选择复制。
然后我们在月工资表保存规则包中的hr数据源,右键点击,并选择“粘贴”:
3.定义变量
我们从月工资维护规则包的对象库中,直接复制sayear,samonth,salarylist三个变量。
另外我们保存之后,需要根据所得税表格计算工资,因此我们定义一些临时变量来进行设置,可以直接从原先例子中计算所得税规则包中直接复制过来,这样就可以直接复制原先的规则来用。
4.定义规则
我们的业务逻辑是当输入了有效的年月之后,我们首先将传入的salarylist重新导入到内存表中,然后逐条数据进行处理。在处理一条员工工资数据时,先将数据的值赋值给临时变量,然后通过计算所得税的那些规则来进行计算。最后将计算结果再赋值给内存表。最后将内存表的数据更新到数据库中。
(1)有效输入年月规则集
我们定义有效输入年月规则集,进入条件如下:
(2)导入工资数据规则
接下来我们定义导入工资数据规则,执行内存表的以下方法:
(3)逐条处理内存表记录规则
我们将前面的例子中已经完成的计算所得税的规则包的“月工资大于零”的规则集整个复制过来,粘贴到“有效年月”的规则集下:
粘贴后,我们将月工资大于零规则集的遍历表格属性打上勾,并且将选择表格设为“月工资内存表”。另外我们将进入条件设为空。
(4)修改计算应纳税所得额
我们将计算应纳税所得额规则,做一下修改。添加上将内存表中的当月工资数据赋值给临时变量:
(5)修改计算税后工资规则
设置税率的决策表不做调整,我们在计算税后工资的规则中增加将临时变量的值,再赋值给内存表:
(5)写入数据库规则
最后我们在增加一个写入数据库的规则,将此内存表的数据更新到数据库中:
以上完成了业务逻辑的设置。如下所示:
5.定义页面
最后我们设置保存页面,由于保存页面是一个没有界面的操作,是直接根据月工资维护页面的提交数据,然后更新数据库。最后直接再返回页面进行显示。因此我们将此页面设定为判断处理页面:
这样保存好,在月工资维护页面,当修改了数据后,点击保存,计算所得税和税后工资。
再查询就可以看到修改奖金、惩罚扣除后的数据信息了:
提交后就可以查看到具体的工资情况:
上面这些例子讲述了利用VisualRules进行数据库开发的操作。
发表评论
-
规则引擎Visual Rules Solution开发基础教程【连载24】-- 使用VisualRules规则引擎实现业务逻辑
2016-04-29 09:33 911使用VisualRules规则引擎实现业务逻辑 ... -
规则引擎Visual Rules Solution开发基础教程【连载23】--规则协同管理之系统管理
2016-04-22 15:44 999规则协同管理之系统管 ... -
规则引擎Visual Rules Solution开发基础教程【连载22】--规则协同管理之信息维护
2016-01-25 09:12 1015规则协同管理之信息维护 信息维护只有两个部分 ... -
规则引擎Visual Rules Solution开发基础教程【连载21】--规则协同管理之权限管理
2016-01-18 09:47 1325规则协同管理之权限管理 权限管理由三部分组成 ... -
规则引擎Visual Rules Solution开发基础教程【连载20】--规则协同管理之规则管理
2016-01-11 09:48 1476规则协同管理之规则管理 一、规则上传 我们 ... -
规则引擎Visual Rules Solution开发基础教程【连载19】--规则协同管理介绍
2016-01-07 09:20 670规则协同管理介绍 一、简介 在团队开发项目 ... -
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
2015-12-21 10:15 1266Linux环境 安装配置说明 一、安装配置测试环境及版本 ... -
规则引擎Visual Rules Solution开发基础教程【连载17】--VisualRules接口调用(六)
2015-12-16 11:28 1021VisualRules接口调用(六) ——Java类中含类 ... -
规则引擎Visual Rules Solution开发基础教程【连载16】--VisualRules接口调用(五)
2015-12-07 09:09 1387VisualRules接口调用(五) Java类中的List ... -
规则引擎Visual Rules Solution开发基础教程【连载15】--VisualRules接口调用(四)
2015-11-30 09:11 1048VisualRules接口调用(四) 一、Java类调用服务 ... -
规则引擎Visual Rules Solution开发基础教程【连载14】--VisualRules接口调用(三)
2015-11-23 09:23 948VisualRules接口调用(三 ... -
规则引擎Visual Rules Solution开发基础教程【连载13】--VisualRules接口调用(二)
2015-11-16 10:31 929VisualRules接口调用(二) 接上一篇,下面介绍一下 ... -
规则引擎Visual Rules Solution开发基础教程【连载12】--VisualRules接口调用(一)
2015-11-09 10:25 1766VisualRules接口调用(一 ... -
规则引擎Visual Rules Solution开发基础教程【连载11】--WebService 搭建及调用
2015-11-02 10:15 1313WebService 搭建及调用 webs ... -
规则引擎Visual Rules Solution开发基础教程【连载10】--VisualRules的组成及执行原理
2015-10-26 17:41 1176VisualRules的组成及执行原理 在 ... -
规则引擎Visual Rules Solution开发基础教程【连载8】--VisualRules实例二(中)
2015-10-12 10:11 1043VisualRules实例二(中) 上一篇 ... -
规则引擎Visual Rules Solution开发基础教程【连载7】--VisualRules实例二(上)
2015-10-08 11:45 988VisualRules实例二(上) ... -
规则引擎Visual Rules Solution开发基础教程【连载6】--VisualRules实例一
2015-09-28 11:22 668VisualRules实例一 以下通过一个 ... -
规则引擎Visual Rules Solution开发基础教程【连载5】--VisualRules深入了解
2015-09-21 10:02 1731VisualRules深入了解 通过前两篇的 ... -
规则引擎Visual Rules Solution开发基础教程【连载4】--VRS相关调用篇
2015-09-14 10:10 988VRS相关调用 一、Java类 ...
相关推荐
Visual Basic 6.0程序设计基础教程---李锦--大连理工大学出版社--2007.8.pdf
《Visual C++6.0实例教程》是一份专为初学者设计的教程,旨在通过具体的实例来教授如何在Microsoft Visual C++ 6.0(简称VC++6.0)环境中进行C++编程。Visual C++6.0是微软公司发布的一款强大的集成开发环境,它不仅...
《Visual Rules规则引擎产品详解》 Visual Rules是一款由旗正信息公司自主研发的规则引擎产品,拥有完全独立的知识产权,专为中国市场打造。该产品旨在帮助企业高效管理业务规则,实现业务规则的快速更新和优化,...
在描述中提到的Visual Rules Solution旗正规则引擎中,决策池扮演了这样的角色。 1. **决策池功能介绍** 决策池的设计目标是提高规则的复用性和效率。在规则开发中,如果某些规则被频繁使用,将这些规则放入决策池...
在这样的背景下,规则管理系统作为业务支撑系统IT架构的基础组件之一,扮演着至关重要的角色。它不仅能够帮助运营商快速响应市场变化,还能确保业务政策的有效实施。本文将详细介绍基于VisualRules的电信业务支撑...
《Visual C++开发实例大全9-15章(基础卷)源代码》涵盖了C++编程在Windows环境下的多个重要领域,这些章节包含了丰富的实例和部分配套视频教程,旨在帮助开发者深入理解和掌握Visual C++的使用技巧。以下是这些章节...
Visual Basic 6.0程序设计教程---曾强聪--中国水利水电出版社--2003.7.pdf
《Visual C++游戏开发技术与实例》是一本专为游戏开发者和初学者设计的教程,旨在通过实践案例帮助读者深入理解和掌握使用Visual C++进行游戏开发的核心技能。Visual C++作为Microsoft开发的一款强大的编程环境,...
根据提供的文件信息,“AutoCAD VBA _ VB.NET开发基础与实例教程 第2版.pdf”,我们可以推断出这是一本关于如何使用Visual Basic for Applications (VBA) 和 Visual Basic .NET (VB.NET) 开发AutoCAD应用程序的专业...
Visual Basic程序开发完整实例教程
Visual C++串口通信工程开发实例导航 - [求是科技].pdf
不过,我将根据标题、描述以及文件名中提及的“Visual C++数据库开发经典实例精解”这一主题,为您提供与该主题相关联的知识点。 Visual C++数据库开发是面向数据库编程的一个领域,主要侧重于使用Visual C++这一...
《Visual Basic 2005基础与实例教程》是一本专为初学者设计的编程教材,旨在帮助读者掌握Visual Basic 2005这一强大的编程工具。VB(Visual Basic)是微软公司推出的一种面向对象的事件驱动编程语言,是.NET框架的一...
《Visual C++程序设计案例教程》是张荣梅教授编著的一本面向实践的编程教材,旨在帮助读者深入理解和掌握Visual C++编程技术。这本书涵盖了从基础到高级的各种主题,结合丰富的实例,使得学习者能够从实践中理解理论...
.NET开发基础与实例教程第二版随书光盘》是一部专为学习AUTOCAD编程的读者准备的教程资源。该教程涵盖了VBA(Visual Basic for Applications)和VB.NET(Visual Basic .NET)两种语言在AUTOCAD环境中的应用,旨在...
《Visual C++ 6.0 实例教程》是一本针对初学者和有一定基础的程序员设计的教程,旨在帮助读者深入理解和掌握Microsoft的Visual C++ 6.0开发环境。Visual C++是C++编程语言的强大集成开发环境(IDE),它不仅支持C++...
Visual C++程序设计实例教程-张荣梅书籍的配套源代码(注意不是写了源码的电子版,而是源代码文件),一共有9章代码。
Microsoft Visual FoxPro 6.0是一款经典的数据库开发工具,它基于FoxBase的Xbase语言,由微软公司开发。本教程是专为初学者设计的,旨在帮助用户掌握Visual FoxPro的基础知识和操作技能。 在开始学习之前,了解基础...
[Visual.C.权威剖析--MFC的原理、机制与开发实例].辛长安.王颜国.扫描版~~~~~好不好大家知道~ 下载完整后解压,谢谢~~
尽管已经过去多年,Visual C++这个IDE依然不过时,熟练使用它最好的方式就是通过大量的实战,《Visual C++ 6.0开发实例大全_基础卷》从visual c++6.0和C++语法讲起,一步一步带你成为C++大神。