web工作流管理系统开发26-30.doc

上传人:M****1 文档编号:547547674 上传时间:2022-10-31 格式:DOC 页数:29 大小:1.11MB
返回 下载 相关 举报
web工作流管理系统开发26-30.doc_第1页
第1页 / 共29页
web工作流管理系统开发26-30.doc_第2页
第2页 / 共29页
web工作流管理系统开发26-30.doc_第3页
第3页 / 共29页
web工作流管理系统开发26-30.doc_第4页
第4页 / 共29页
web工作流管理系统开发26-30.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

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

1、二十六 .net工作流系统之扩展性.net工作流系统之扩展性最近为用户做工作流实施时,都无一例外的提出工作流系统的扩展性问题。事件一:eworkflow工作流系统预置了一些系统的条件,前置后置函数等。如果这些不能满足业务需要,用户需要定制自己的业务规则,业务过程,该如何做?解决方案:eworkflow系统预置了很多系统的条件类,前置后置函数类。简单一些的业务规则,可以直接用自定义脚本,写个表达式的方式来实现。如条件类的:判断用户是否有某个角色 .fcsoft.workflow.util.UserHasRoleCondition 判断是否是竞争型任务的签收人 .fcsoft.workflow.u

2、til.CompetitionTaskCondition . 事件类:将指定步骤的执行人保存到mostRecentCaller变量中 .fcsoft.workflow.util.MostRecentCaller . 打开我们的任意一个条件类 ,可以看到,条件类必须实现Condition接口,实现passesCondition()方法/ 判断调用者caller是否属于role参数所指的角色/ caller: userid role: roleid/ public class UserHasRoleCondition : Condition/ Methods /public virtual boo

3、l passesCondition(System.Collections.IDictionary transientVars, System.Collections.IDictionary args, PropertySet ps) . 流程的上下文、相关的业务参数、数据库连接、当前操作员id等,均可以在passesCondition的三个参数中获得。因 此在需要扩展业务规则的时候,可以扩展这种条件类,只需要在用户的应用系统中引用eworkflow.dll(java版的就是引入 eworkflow.jar),新建业务规则类,实现Condition接口,在passesCondition方法中写业

4、务规则就可以了,所有和流程相 关的信息,节点定义的属性,业务参数,均可以从passesCondition方法的三个参数中获得。将写好的条件类注册到 WF_DSN_CLASS表中,在流程定义的时候,从节点的属性页中选择出这些扩展的业务规则,挂接到流程的节点上。在流程实例运行到此节点的时候,就会执行这些节点上定义的业务规则类,作出规则判断。 下面是一个判断 当前操作员用户,是否属于某个区域的业务规则的判断-条件和事件的分隔线- 打开任意一个事件函数类,可以看到,事件函数类的,必须实现FunctionProvider接口,实现execute()方法 public class MostRecentCa

5、ller : FunctionProvider/ Methods /public virtual void execute(System.Collections.IDictionary transientVars, System.Collections.IDictionary args, PropertySet ps)和条件类的接口一样,流程的上下文、相关的业务参数、数据库连接、当前操作员id等,均可以在execute的三个参数中获得。集成开发文档中会有这三个参数的详细描述。在 需要扩展业务事件,业务过程的时候,只需要在用户的应用系统中引用eworkflow项目或者eworkflow.dll(

6、(java版的就是引入 eworkflow.jar),新建这种事件类,实现FunctionProvider接口,在execute()方法中写业务实现,所有和流程相关的信 息,节点定义的属性,业务参数,均可以从execute方法的三个参数中获得。将写好的类注册到 WF_DSN_CLASS 表中,在流程定义的时候,从节点的属性页中选择出这些扩展的业务事件类,挂接到流程上。这样流程实例运行的时候,流转到相应的节点,就会执行节点上定义的这些业务事件。例如将当前操作员信息保存到流程的上下文中:事件二:我们的eworkflow工作流系统的 待办任务列表 只有流程相关的信息,业务信息部分较少,集成到用户系统

7、时,用户希望能自定义一些业务列信息。解决方案:eworkflow工作流系统的任务表中,任务名称,是支持表达式的,在表达式中可以引入业务信息。例如任务名称为:审核 业务部 李明 的报销单。 业务部 李明 这两个信息均来自表达式,获取的是报销单中的记录信息。如果这样还是不能满足用户的需要,用户需要扩展列出多列业务表中的记录值。那就只能通过调用流程的获取待办任务列表的api函数来做了。具体过程如下:先通过调用工作流的api函数,获取待办任务列表ArrayList getCurrentTasks(System.String type, System.String wfId, System.String

8、 stepId);得到的是一个list,list的每一条是对应一条任务表的一个 IDictionary对象(java版的就是map对象),任务表的字段名为key,记录值为value。任务表中会记录任务信息关联的流程实例id, 通过流程实例id获得 和业务表的关联,找到业务表的记录,然后取出业务表中的多列信息,和任务信息 一起返回到页面显示,这样就获得了一个 包含多列具体业务信息的待办任务列表了。标签: java工作流, 自定义工作流, web工作流, 工作流引擎, dotnet工作流引擎, .net工作流, .net工作流系统二十七 .net工作流系统集成自定义表单.net工作流系统集成自定义

9、表单工作流系统一般都包含工作流引擎,工作流引擎是对业务流程的抽象,是实现流程自动化的微内核,利用工作流引擎的基本元素能搭建出各种各样的流程,但仅限于流程,不涉及到业务实现。流程的每个节点上可以挂接需要处理的业务模块,例如一个简单的报销流程,如下图:在填写报销单的流程节点上,就可以挂接上 填写报销单 这样一个业务模块;到审批的节点上,挂接 审批报销单模块。 工作流引擎是不负责这些具体业务模块的实现的,否则就不是对业务流程的抽象了。这些具体业务模块的实现,可以是开发人员做好的一些业务模块,也可以是用一些表单工具做的自定义业务表单。无论是定制的业务模块,还是利用表单工具做的自定义表单,都需要在这些模

10、块中集成流程。好的工作流引擎都应该是封装好的,对外仅提供调用的api函数。这样才能方便的将流程与业务模块集成在一起。工作流引擎对外提供的api应该包含:流程的初始化函数:给定一个具体的业务流程名称,启动流程,获得一个流程实例id.流程的执行函数 :给定一个具体的流程实例id, 执行他的任务,使得流程递进,达到流程的流转。获得与修改流程实例的状态:获得与修改一个具体流程实例的状态。指流程实例的 激活,挂起,与 完成 等状态。获得流程定义任意节点的信息:获得指定流程指定节点的任务信息,包括流程定义的属性,自定义信息等等。在业务模块中,嵌入流程引擎的api函数的调用,启动一个流程,或 通过给定的流程

11、实例id,去执行它的当前任务,将当前任务提交,使得流程流转。当然,业务模块的业务数据提交和流程的流转应该保持在一个事务中,达到流程的长事务一致性。下面以+为例,说明.net工作流系统与自定义表单系统的集成。还是以报销流程为例,先将业务流程转换成eworkflow的流程。(流程图如上图中简单报销流程)再设计好业务表,这里我们设计了两张表,报销主表和明细表。从上面的流程中可以看出,需要有报销单填写模块,和审核模块。用eform画好 报销单,如下:注:eworkflow .net工作流系统中已经集成好了eform .net自定义表单系统了。表单属性中 选择 工作流工具栏工作流工具栏也是用eform设

12、计的一个页面,此页面中已经做好了和流程的集成。在表单提交到后台保存的之后,再执行流程的相应动作,达到流程的递进。用eform画好 报销单的审核 如下:(同样在表单属性中,选择 工作流工具栏)画好的页面保存在workflowexample_dj目录中。在流程设计器中,打开报销流程,在相应节点上挂接好 业务表单。这样报销流程就设计好了,可以启动执行了。有更细一些的控制,就在流程设计器中打开报销流程,修改流程节点的属性,或修改流程的流转。在eform自定义表单系统的代码中已经有通用的模块集成了eworkflow .net工作流系统了,所以不需要再写代码调用流程api了。二十八 工作流系统实例演练工作

13、流系统实例演练有了工作流引擎,工作流设计器,工作流管理平台,自定义表单,然后业务流程确定之后,就可以快速的做好能运行的流程了。首先业务要确定,包括业务细节部分。以一个 问题跟踪流程为例,实战演练一下,如何快速的搭建一个可以运行的业务流程。业务需求:用户在使用 我们公司的产品时,经常会遇到一些问题,有的是不会使用的问题,有的是误解,有的是bug,也有的是对产品的建议等等。我们拟收集这些用户遇到的问题以及处理过程,所以设计如下流程:流程如上面过程,具体的细节要求:1、相关人员审核问题,通过则发送到技术人员解决问题,拒绝,则表示问题描述不够,打回原填写人继续填写。2、原填写人收到打回的问题,可以继续

14、完善,再次发送给审核,也可以直接作废问题,结束这次问题描述。3、技术人员解决问题,有个锁定问题的过程,即谁先锁定了问题,就由谁解决。4、解决的问题反馈给用户,用户查看处理结果,无异议则结束流程,也可以继续提出疑问,和技术人员继续沟通解决。分析需求:根据上面的需求描述,设计问题跟踪表如下:根据业务过程和表,得出,至少需要设计三张表单:用户提出问题表单技术人员处理问题表单反馈给用户时的,用户查看和继续提出疑问的表单流程设计过程:根据上面的业务流程:用户提出问题审核部门审核问题技术解决问题反馈给用户结束可以看出整个业务流程分为,4个环节,提出问题审核解决问题反馈所以用eworkflow的流程设计器,新建一流程,流程属性页设置业务标签页面填写 问题跟踪表名 和主键字段名.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 服装配饰

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