web工作流管理系统开发11-15(精品)

上传人:re****.1 文档编号:494017310 上传时间:2024-01-23 格式:DOC 页数:19 大小:509.89KB
返回 下载 相关 举报
web工作流管理系统开发11-15(精品)_第1页
第1页 / 共19页
web工作流管理系统开发11-15(精品)_第2页
第2页 / 共19页
web工作流管理系统开发11-15(精品)_第3页
第3页 / 共19页
web工作流管理系统开发11-15(精品)_第4页
第4页 / 共19页
web工作流管理系统开发11-15(精品)_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《web工作流管理系统开发11-15(精品)》由会员分享,可在线阅读,更多相关《web工作流管理系统开发11-15(精品)(19页珍藏版)》请在金锄头文库上搜索。

1、十一 流程数据与业务数据的交互通常工作流系统在设计之初,都会明确的区分流程数据和业务数据。工作流引擎只关心流程数据,为实现工作流的流转,会为工作流引擎设计一套工作流的表结构,来辅助流程引擎的实现。业务数据是千变万化的,为实现各自的业务,会设计一系列业务表。业务表,工作流系统是不关心的。但是工作流数据和业务数据又是交互的关联的。1. 流程和业务数据的基本关联:为了将业务数据和流程数据关联起来,会有一个关联表,将流程实例和业务数据关联。在eworkflow中,这层关系的设置在 流程实例表(wf_wfentry)中。每个流程实例都会和具体的一张业务表关联,(流程需要实现的主业务表),并指明业务表的i

2、d字段和描述字段,描述字段可有可无。每个业务表中都多设置一个流程实例wf_id字段,此字段即wf_wfentry.id。通过设置 业务表.wf_id = wf_wfentry.id 和 wf_wfentry.bs_table wf_wfentry.bs_id_field = 业务表.id 将流程和业务关联起来;2. 流程和业务数据的交互:在流程定义和运行的上下文中经常会需要引入业务数据。比如报销流程中的,流程定义和运行时,都需要取 报销金额 做为判断几级审核的条件,上级审核,也需要取审核结果作为流转到下一步的依据。这样就势必在流程上下文中引入业务数据:在eworkflow中,是这样引入的:在业

3、务数据的维护模块,即业务自定义表单中:业务数据集,将业务关键字段勾选为 “流程用”。即将此业务关键字标识为可供流程上下文使用了。在流程定义时:动作(关联到的业务表单的动作)的前缀函数设置一个ActionPreFunction,此类负责将业务表单中,勾选的流程用的关键字段 持久化到流程上下文中。然后动作的结果中,就可以运用业务关键了。动作结果中设置:关键字段类型不同,做判断的规则和写法略不同,遵循java的语法规则。字符型的变量比较propertySet.getString(关键字名).equals(值) 整数型propertySet.getLong(关键字名)=3 操作符号=,3.5 操作符号

4、=, 日期型的java.util.DpareTo(propertySet.getDate(关键字名),anotherDate) 操作符号/另外:propertySet还可以在前置后置函数中 propertySet.setString(caller, caller);设置变量值 十二 同一张表单在流程多节点中流转的权限控件以前写过一篇 表单权限与流程的权限控制;文章,没有具体的去实现,实践证明,同一张表单在多流程节点中流转,是工作流和电子表单必须要处理的问题。工作流系统和电子表单相结合,达到同一张表单在流程的各个节点中的权限不同。例如一张表单包含,录入部分信息,审核部分信息;当表单在录入的时候,

5、需要将审核部分信息全部屏蔽;当上级审核时,录入部分的信息需要只读,只能填写审核部分;当审核完成后,所有的信息都变成只读,不能再修改了。所有这些节点调用同一张电子表单来实现,则需要根据人员角色的不通,表单中各控件分别设置为 只读, 禁用,隐藏;通过设置控件的这些属性达到各人员角色的不通访问权限;但是单有这一层控制还是不够的,还需要设置控件在流程的各节点的权限,通过设置控件在指定流程的各个动作节点的访问权限,来达到控件在流程的某个节点的 只读,禁用,隐藏。只读 对应 readonly禁用 对应 disabled=true;隐藏 对应 display = none实现的过程:1、在电子表单制作的时候

6、,各个控件属性页中,设置控件的权限:分 设置用户,设置角色,设置群组,设置流程节点;如下图:2、设置完成的控件权限属性(带控件id)会生成一个xml的格式串,保存在电子表单中。 xml格式如下:李明truefalsefalse普通职员truefalsefalse record根结点下可包含4种字节点, user role group节点的机构相同,flow节点,多几个wf_name,wf_version,action_id节点属性flow节点格式:actionnametruefalsefalse3、当电子表单打开的时候,打开表单之前会执行一个后台事件,装入表单中的权限xml串,分析xml串,并

7、按html控件节点生成好html控件的属性字符串,返回到页面上,作用于html的控件节点,达到html的控件节点的 ,只读,禁用,或隐藏 等属性。(后台的java 代码位于:.fcsoft.report.ext.EformRole.java public String roleCheck(HttpServletRequest req) throws UserException;)分析xml串,生成html控件节点的属性过程:1).先分析设置的用户权限,然后分析角色,再分析群组;如果用户的应用系统有扩展的功能,如增加岗位等属性,需要在此再添加分析岗位的代码;2). 再分析被当前用户代理的人权限;

8、一个用户可能代理多个人执行业务,所以此处循环分析各被代理人的权限;也是按被代理人用户,角色,群组等 分析;注:如果有某被代理人无权限分析结果html控件的属性字符串返回,则表示某被代理人有此控件的所有权限,在清空所有的html控件权限属性串,跳 出循环。3).最后分析流程的节点权限,获取流程的英文名和版本号,动作id,分析在此流程节点,是否有操作权限,返回控件的html属性权限串。4).返回分析到的html属性权限串到电子表单,加载html控件的属性,达到控件的只读,禁用,隐藏 等功能。和应用系统集成的时候,如果这些权限的设置还不能满足用户的需求,需要做更多个性化的定制时候,还可以做更多的功能

9、扩展:点击电子表单中的 权限设置 按钮,调用的代码位于:ebsys/fceformext/js/userfunc.js文件/* 打开表单元素权限设置窗口 added by liuxr at 2008-3-14* 此函数在属性窗口的权限设置按钮的点击事件上调用*/function EformActionButtonClick().当表单打开的时候,首先调用位于:ebsys/fceformext/js/userfunc.js文件 的/*页面运行时表单元素的权限检查 added by liuxr at 2008-3-14* 此函数在表单打开事件中调用,也可以在自己需要时调用*/function Ef

10、ormCheckRoleInfo().此函数中利用ajax提交到后台,触发后台的表单打开事件:.fcsoft.report.ext.EformRole.java public String roleCheck(HttpServletRequest req) throws UserException;将生成的html控件的权限属性串,返回到页面,作用于页面的控件。十三 流程与电子表单集成之事件实现篇一般工作流管理系统分为,流程引擎,电子表单系统(自定义表单),流程设计器,流程管理监控平台等主要模块。流程引擎和电子表单系统应该是弱耦合的,各自都能独立的完成功能。同时流程引擎和电子表单都设计好接口事

11、件等,便于相互集成或和其它系统的集成。一、流程引擎的事件接口:流程定义描述时候,步骤节点,动作节点,动作结果节点,均设置有前置后置事件函数;当流程流转到这些节点时,会触发节点的前置事件函数;当离开节点时,会触发后置事件;注:但是流程引擎驱动电子表单不是用事件接口的方式来实现:流程引擎 的动作节点中有个view属性,挂接表单的url,当流程运行到此动作节点时,即读出view属性的url,打开并运行此表单。此表单可以是eform自 定义工具定义的表单,也可以是用户自主开发的jsp页面等。节点的前置后置事件函数:所有的前置后置函数都统一实现一个接口FunctionProviderFunctionPr

12、ovider.java接口,只有一个方法execute,所有实现此接口的类,都需要实现这个方法。public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException;Map transientVars:流程上下文信息可以从此map中获得;Map args :节点定义时候的参数可以从此map中获得;PropertySet ps:流程实例中的持久化变量从此获得。条件节点的判断函数接口:流程引擎的动作结果中可以定义条件,工作流引擎定义了一些内置的条件判断,也可以通过实现Condition.j

13、ava接口,扩展出一些自定义的条件判断函数。Condition.java接口中只有一个方法,所有实现此接口的条件函数都必须实现此方法:public boolean passesCondition(Map transientVars, Map args, PropertySet ps) throws WorkflowException;Map transientVars:流程上下文信息可以从此map中获得;Map args :节点定义时候的参数可以从此map中获得;PropertySet ps:流程实例中的持久化变量从此获得。在条件节点定义的时候,引入此条件判断函数,在流程运行的时候,引擎中就执行自定义函数中的passesCondition()函数,返回真假结果。二、电子表单的事件接口:所有电子表单的事件接口类:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号