欢迎来到天天文库
浏览记录
ID:13234956
大小:1.11 MB
页数:29页
时间:2018-07-21
《web工作流管理系统开发26-30》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、二十六.net工作流系统之扩展性.net工作流系统之扩展性最近为用户做工作流实施时,都无一例外的提出工作流系统的扩展性问题。事件一:eworkflow工作流系统预置了一些系统的条件,前置后置函数等。如果这些不能满足业务需要,用户需要定制自己的业务规则,业务过程,该如何做?解决方案:eworkflow系统预置了很多系统的条件类,前置后置函数类。简单一些的业务规则,可以直接用自定义脚本,写个表达式的方式来实现。 如条件类的:判断用户是否有某个角色 cn.com.fcsoft.workflow.util.UserHasRoleCondition 判断是否是竞争
2、型任务的签收人cn.com.fcsoft.workflow.util.CompetitionTaskCondition .... 事件类:将指定步骤的执行人保存到mostRecentCaller变量中cn.com.fcsoft.workflow.util.MostRecentCaller ... 打开我们的任意一个条件类,可以看到,条件类必须实现Condition接口,实现passesCondition()方法 ///判断调用者caller是否属于role参数所指的角色 ///ca
3、ller:userid role:roleid /// publicclassUserHasRoleCondition:Condition { //~Methods//////////////////////////////////////////////////////////////// publicvirtualboolpassesCondition(System.Collections.IDictionarytransientVars,System.Collections.IDictionaryargs,PropertySetps) ....
4、 流程的上下文、相关的业务参数、数据库连接、当前操作员id等,均可以在passesCondition的三个参数中获得。 因此在需要扩展业务规则的时候,可以扩展这种条件类,只需要在用户的应用系统中引用eworkflow.dll(java版的就是引入eworkflow.jar),新建业务规则类,实现Condition接口,在passesCondition方法中写业务规则就可以了,所有和流程相关的信息,节点定义的属性,业务参数,均可以从passesCondition方法的三个参数中获得。 将写好的条件类注册到WF_DSN_CLASS表中,在流程定义的时候,从节点的属性页中选择出
5、这些扩展的业务规则,挂接到流程的节点上。在流程实例运行到此节点的时候,就会执行这些节点上定义的业务规则类,作出规则判断。 下面是一个判断当前操作员用户,是否属于某个区域的业务规则的判断 -----------------------------------------条件和事件的分隔线----------------------------------------------- 打开任意一个事件函数类,可以看到,事件函数类的,必须实现FunctionProvider接口,实现execute()方法 publicclassMostRecentCaller:
6、FunctionProvider { //~Methods//////////////////////////////////////////////////////////////// publicvirtualvoid execute(System.Collections.IDictionarytransientVars,System.Collections.IDictionaryargs,PropertySetps) 和条件类的接口一样,流程的上下文、相关的业务参数、数据库连接、当前操作员id等,均可以在execute的三个参数中获得。集成开发文档中会有这三
7、个参数的详细描述。 在需要扩展业务事件,业务过程的时候,只需要在用户的应用系统中引用eworkflow项目或者eworkflow.dll((java版的就是引入eworkflow.jar),新建这种事件类,实现FunctionProvider接口,在execute()方法中写业务实现,所有和流程相关的信息,节点定义的属性,业务参数,均可以从execute方法的三个参数中获得。 将写好的类注册到WF_DSN_CLASS表中,在流程定义的时候,从节点的属性页中选择出这些扩展的业务事件类,
此文档下载收益归作者所有