web工作流管理系统开发11-15

上传人:沈*** 文档编号:98320989 上传时间:2022-05-29 格式:DOC 页数:19 大小:509.89KB
返回 下载 相关 举报
web工作流管理系统开发11-15_第1页
第1页 / 共19页
web工作流管理系统开发11-15_第2页
第2页 / 共19页
web工作流管理系统开发11-15_第3页
第3页 / 共19页
点击查看更多>>
资源描述
十一 流程数据与业务数据的交互通常工作流系统在设计之初,都会明确的区分流程数据和业务数据。工作流引擎只关心流程数据,为实现工作流的流转,会为工作流引擎设计一套工作流的表结构,来辅助流程引擎的实现。业务数据是千变万化的,为实现各自的业务,会设计一系列业务表。业务表,工作流系统是不关心的。但是工作流数据和业务数据又是交互的关联的。1. 流程和业务数据的基本关联:为了将业务数据和流程数据关联起来,会有一个关联表,将流程实例和业务数据关联。在eworkflow中,这层关系的设置在 流程实例表(wf_wfentry)中。每个流程实例都会和具体的一张业务表关联,(流程需要实现的主业务表),并指明业务表的id字段和描述字段,描述字段可有可无。每个业务表中都多设置一个流程实例wf_id字段,此字段即wf_wfentry.id。通过设置 业务表.wf_id = wf_wfentry.id 和 wf_wfentry.bs_table wf_wfentry.bs_id_field = 业务表.id 将流程和业务关联起来;2. 流程和业务数据的交互:在流程定义和运行的上下文中经常会需要引入业务数据。比如报销流程中的,流程定义和运行时,都需要取 报销金额 做为判断几级审核的条件,上级审核,也需要取审核结果作为流转到下一步的依据。这样就势必在流程上下文中引入业务数据:在eworkflow中,是这样引入的:在业务数据的维护模块,即业务自定义表单中:业务数据集,将业务关键字段勾选为 “流程用”。即将此业务关键字标识为可供流程上下文使用了。在流程定义时:动作(关联到的业务表单的动作)的前缀函数设置一个ActionPreFunction,此类负责将业务表单中,勾选的流程用的关键字段 持久化到流程上下文中。然后动作的结果中,就可以运用业务关键了。动作结果中设置:关键字段类型不同,做判断的规则和写法略不同,遵循java的语法规则。字符型的变量比较propertySet.getString(关键字名).equals(值) 整数型propertySet.getLong(关键字名)=3 操作符号=,3.5 操作符号=, 日期型的java.util.DpareTo(propertySet.getDate(关键字名),anotherDate) 操作符号/另外:propertySet还可以在前置后置函数中 propertySet.setString(caller, caller);设置变量值 十二 同一张表单在流程多节点中流转的权限控件以前写过一篇 表单权限与流程的权限控制;文章,没有具体的去实现,实践证明,同一张表单在多流程节点中流转,是工作流和电子表单必须要处理的问题。工作流系统和电子表单相结合,达到同一张表单在流程的各个节点中的权限不同。例如一张表单包含,录入部分信息,审核部分信息;当表单在录入的时候,需要将审核部分信息全部屏蔽;当上级审核时,录入部分的信息需要只读,只能填写审核部分;当审核完成后,所有的信息都变成只读,不能再修改了。所有这些节点调用同一张电子表单来实现,则需要根据人员角色的不通,表单中各控件分别设置为 只读, 禁用,隐藏;通过设置控件的这些属性达到各人员角色的不通访问权限;但是单有这一层控制还是不够的,还需要设置控件在流程的各节点的权限,通过设置控件在指定流程的各个动作节点的访问权限,来达到控件在流程的某个节点的 只读,禁用,隐藏。只读 对应 readonly禁用 对应 disabled=true;隐藏 对应 display = none实现的过程:1、在电子表单制作的时候,各个控件属性页中,设置控件的权限:分 设置用户,设置角色,设置群组,设置流程节点;如下图:2、设置完成的控件权限属性(带控件id)会生成一个xml的格式串,保存在电子表单中。 xml格式如下:李明truefalsefalse普通职员truefalsefalse record根结点下可包含4种字节点, user role group节点的机构相同,flow节点,多几个wf_name,wf_version,action_id节点属性flow节点格式:actionnametruefalsefalse3、当电子表单打开的时候,打开表单之前会执行一个后台事件,装入表单中的权限xml串,分析xml串,并按html控件节点生成好html控件的属性字符串,返回到页面上,作用于html的控件节点,达到html的控件节点的 ,只读,禁用,或隐藏 等属性。(后台的java 代码位于:.fcsoft.report.ext.EformRole.java public String roleCheck(HttpServletRequest req) throws UserException;)分析xml串,生成html控件节点的属性过程:1).先分析设置的用户权限,然后分析角色,再分析群组;如果用户的应用系统有扩展的功能,如增加岗位等属性,需要在此再添加分析岗位的代码;2). 再分析被当前用户代理的人权限;一个用户可能代理多个人执行业务,所以此处循环分析各被代理人的权限;也是按被代理人用户,角色,群组等 分析;注:如果有某被代理人无权限分析结果html控件的属性字符串返回,则表示某被代理人有此控件的所有权限,在清空所有的html控件权限属性串,跳 出循环。3).最后分析流程的节点权限,获取流程的英文名和版本号,动作id,分析在此流程节点,是否有操作权限,返回控件的html属性权限串。4).返回分析到的html属性权限串到电子表单,加载html控件的属性,达到控件的只读,禁用,隐藏 等功能。和应用系统集成的时候,如果这些权限的设置还不能满足用户的需求,需要做更多个性化的定制时候,还可以做更多的功能扩展:点击电子表单中的 权限设置 按钮,调用的代码位于: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 EformCheckRoleInfo().此函数中利用ajax提交到后台,触发后台的表单打开事件:.fcsoft.report.ext.EformRole.java public String roleCheck(HttpServletRequest req) throws UserException;将生成的html控件的权限属性串,返回到页面,作用于页面的控件。十三 流程与电子表单集成之事件实现篇一般工作流管理系统分为,流程引擎,电子表单系统(自定义表单),流程设计器,流程管理监控平台等主要模块。流程引擎和电子表单系统应该是弱耦合的,各自都能独立的完成功能。同时流程引擎和电子表单都设计好接口事件等,便于相互集成或和其它系统的集成。一、流程引擎的事件接口:流程定义描述时候,步骤节点,动作节点,动作结果节点,均设置有前置后置事件函数;当流程流转到这些节点时,会触发节点的前置事件函数;当离开节点时,会触发后置事件;注:但是流程引擎驱动电子表单不是用事件接口的方式来实现:流程引擎 的动作节点中有个view属性,挂接表单的url,当流程运行到此动作节点时,即读出view属性的url,打开并运行此表单。此表单可以是eform自 定义工具定义的表单,也可以是用户自主开发的jsp页面等。节点的前置后置事件函数:所有的前置后置函数都统一实现一个接口FunctionProviderFunctionProvider.java接口,只有一个方法execute,所有实现此接口的类,都需要实现这个方法。public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException;Map transientVars:流程上下文信息可以从此map中获得;Map args :节点定义时候的参数可以从此map中获得;PropertySet ps:流程实例中的持久化变量从此获得。条件节点的判断函数接口:流程引擎的动作结果中可以定义条件,工作流引擎定义了一些内置的条件判断,也可以通过实现Condition.java接口,扩展出一些自定义的条件判断函数。Condition.java接口中只有一个方法,所有实现此接口的条件函数都必须实现此方法:public boolean passesCondition(Map transientVars, Map args, PropertySet ps) throws WorkflowException;Map transientVars:流程上下文信息可以从此map中获得;Map args :节点定义时候的参数可以从此map中获得;PropertySet ps:流程实例中的持久化变量从此获得。在条件节点定义的时候,引入此条件判断函数,在流程运行的时候,引擎中就执行自定义函数中的passesCondition()函数,返回真假结果。二、电子表单的事件接口:所有电子表单的事件接口类:所有的事件注册的类:此类负责注册前置后置事件类,并利用反射实例化前置后置事件类。例如 电子表单的保存前置后置事件,先注册在此类中,.fcsoft.eworkflow.WorkflowDoAction.java类为的电子表单保存后执行的事件,此类负责在电子表单保存后,继续执行流程的递进。所有电子表单中的事件前置后置函数均实现EventProvider接口,定义的类均在EventResolver类内注册,利用反射机制,在需要触发的地方得到类的实例,执行execute()方法,执行自定义的事件功能。十四 流程设计器属性页面之实现篇在工作流管理系统中,可视化流程设计器是必须要实现的。流程引擎可以是默默的运行,但流程设计器就必须要展现出来。所以界面的美观,操作简便易用,是必须要考虑的问题。流程设计器,主要完成流程定义文件的建立和编辑,可视化的完成流程中各节点信息的增删改,并图形化的方式展现出一个业务流程。所以流程设计器需要完成基本的节点元素的创建,删除,移动,拖拽,连线等等,以及基本的undo,redo,编辑,删除,右键菜单等。这些都是基本的功能,各节点的属性页面,才是流程引擎关心的,必须要体现流程各节点的定义信息。因此各个属性页面的界面,操作是否方便易用,是比较重要的。一般来说,工作流管理系统还必须要实现一个电子表单。电子表单是一个可视化的快速搭建和实现表单的工具,业务模块可以通过电子表单快速实现,并挂接到流程定义文件的节点上,这样在流程实例运行时,就能实现业务按预定义的流程流转。比较有意思的是,流程设计器的各属性页面也是用电子表单工具搭建的,这样维护起来更加方便和快捷。当然这也得益于eform电子表单对外提供的是表单的url,并且一张表单就是一个htm文件。所以很方便的就可以和其它系统集成。例如 步骤的属性页面-用电子表单系统搭建的属性页面。在页面的装入事件中,将节点的信息,按格式取出来,赋值到页面的各个控件中。然后页面用户编辑,设置各个属性。在页面的确定按钮中,收集各个控件的属性,形成流程节点的属性,返回到对象中保存。动作的属性页中,也包含,条件,前置函数,后置函数。界面的编辑风格与步骤一致。流程定义文件中,包含 条件,前置函数,后置函数的节点有:步骤,动作,动作结果,合并。所以这几种节点采用统一的方式来编辑节点属性,代码也可以共用啦,节省了不少心力。条件的设置页面:通过,增加行,选择不同的行,可以设置多个条件,每个条件都可以单独在上面编辑。前置后置函数也是类似的编辑方式,选择用户,角色,群组等调用的是相同模块实现,也便于用户做扩展。如和应用系统集成时,比如可以将群组的功能修改成应用系统的部门。十五 流程变量与表达式工作流系统和业务系统的结合,不仅仅是表之间的关联(即流程实例id和业务数据的关联),还有很多变量的关联。变量的关联表现在很多方面,通常都是在流程定义时,需要引入这些变量,辅助流程的定义。 如,流程在运行时,需要获取具体业务数据某个关键字段的值。费用报销申请流程中,需要将用户的报销金额获取,流程按照报销金额的大小来决定是否需要2级审核。还有的需要获取流程上下文中的流程定义信息,操作用户等,流程定义信息包含流程名称,流程中文描述名,流程版本,节点的名称等等。例如流程实例运行时,需要在生成的任务提醒中获取流程中文描述,如,您需要审核 某某 填写的 费用报销申请。某某为流程实例运行时的操作用户,费用报销申请为流程中文名。变量还分为临时变量和持久化变量,这有点类似局部变量和全局变量的意思;临时变量仅存在于一次流程运转过程,提交返回后,就失效了;持久化变量通常为一些业务变量,因为持久化到数据库中的,所以只要发生过,无论什么时候都能获取到值。综合一下,流程中需要使用的变量类型:业务变量: 业务关键字段的值,通常作为显示或条件判断用,为持久化变量。流程上下文变量:获取流程运行时的执行者信息,流程定义信息,流程实例信息,通常为临时变量。业务数据字典等变量:业务变量的延伸,code对应中文名称,通常用表达式来转换出中文名称。在eworkflow工作流系统中,变量的使用场合通常是,流程定义文件的自定义参数,自定义脚本中,通过表达式来引入这些变量。工作流引擎在解释流程定义文件时,根据实时的情况,解释表达式,得到变量的值。如,引入用户名称的表达式:$oCaller.name引入业务关键字段信息,如审核结果: $result; 审核结果数据字典(中文): $result.审核结果引入流程实例id: $entry.id在自定义脚本中还可以如编写java代码一样,来作为变量引用,就更加的灵活和多样了。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!