您的位置:首页>>eworkflow工作流>>集成自定义表单

eworkflow集成自定义表单

工作流引擎实现抽象流程的流转,业务的实现在表单模块中完成。如报销流程,填写报销单,审核报销单,都对应一个业务模块,在业务模块中实现将数据保存到数据库表中,实现业务数据的持久化。工作流引擎负责将这些业务模块串起来,实现业务流的流转。

曾经的业务系统,业务流的流转通常是采用对状态字段的控制来实现的。当报销单填写完成后,单据状态为1,经理审核的时候,就查询出单据状态为1的记录,做审核,审核完成后,也是修改审核状态,这样来达到业务流的流转。

当应用了工作流系统后,业务流的流转,就不需要根据状态字段来控制了,业务流的流转按照业务流程建模的节点规则向前流转,状态字段退化成纯粹的业务数据,只表示当前的业务状态。

工作流系统在集成业务模块时,只要将业务模块实现的表单,挂接到流程的节点上,就可以了。业务表单,可以是定制的,如jsp页面,aspx页面,甚至htm页面。也可以是用表单工具生成的表单,将通用表单工具生成的表单挂接到流程的节点上。

流程运行时,按照流程节点向前运行,取出节点的表单,打开运行,待用户输入完成后,提交,一并做业务数据的提交和流程节点的提交。这里就涉及到工作流引擎和业务模块集成。

集成通常分为几个方面:

表单数据的提交+工作流节点的流转:需要在一个事务中完成。

表单中的一些业务数据,需要能传递到流程引擎中,做流程流转控制用,如报销流程,报销金额大于1000元的需要总经理特别审批,就需要将用户填写的报销金额值传递到流程引擎中。

表单中也需要能获得流程的一些数据,如流程实例id,节点id等等,便于做业务数据和流程实例的关联,另外也可以做一些权限控制等。

集成的过程,需要调用流程引擎的api来实现,当流程引擎和通用的自定义表单工具集成时,这些集成是都完成了的。只需要在表单设计器中完成业务表单模块。调用相应的功能,即可完成和流程的关联。

eform自定义表单工具和eworkflow的集成表现在如下几个方面:

表单数据的提交+流程的节点的执行 :

是在表单数据提交的后置事件中,做了流程的节点的执行。如果流程还未初始化,即未生成流程实例id,则在表单数据提交的前置事件中,调用流程引擎的api,执行流程的初始化,得到流程实例id。

表单数据的提交+流程节点的运行是在一个事务中实现的。

表单中关键业务数据传递到流程引擎中的实现:

在eform表单的数据集中设置了,选择流程用,提交表单时,扫描出流程用的数据,按关键字,数据类型和值,形成一个map对象(java是map,.net是IDictionary),在执行流程引擎的节点时,送入流程中,供流程使用。

工作流引擎的初始化

public long initialize(String workflowName, int initalVersion, int initialAction, Map inputs) throws InvalidRoleException, InvalidInputException, WorkflowException, InvalidEntryStateException, InvalidActionException;

执行动作的方法

public void doAction(long id, int actionId, Map inputs) throws InvalidInputException, WorkflowException;

表单中接收流程的相关信息,是在打开业务表单的时候,将流程的一些相关信息,拼到url中,表单再获取这些url中的值。

为了便于更快速的制作业务表单,eform提供了自定义工具条的功能,在制作表单时,可以自定义工具条的内容。

如费用报销单的自定义工具条的 定义操作界面如下:

自定义工具栏

点击添加按钮,还可以从下拉中选择表单中需要的功能。每个按钮可以设置权限,不可用或隐藏等

工具条按钮权限设置界面:

权限按钮的设置

费用报销单流程:

费用报销单流程图

启动流程实例后,费用报销单运行时的展现

报销单

这个是填写单据的界面,审核信息不可见。当审核的时候,审核的信息,就可编辑,并且单据主体的信息不能修改,这个是单据中的权限设置完成的。