这篇我们将使用Eclipse来创建activiti流程文件,并且在上面尝试绘制请假的流程图。绘制好以后对流程图进行完善,在具体对应的事件中添加表单。后面我们将针对这个请假流程进行相应的编码实现一个简单的流程来深度了解流程引擎。
首先这边我们定义请假的流程图如下:
接下来我们开始绘制我们的请假流程图。
1、在Eclipse中创建一个Activiti文件:
选择对应的目录,New->Other->Activiti->Activiti Diagram 即可创建一个activiti流程图。操作如下:
这里我将这个流程图的名字命名为:LeaveProcess.bpmn,这里流程图bpmn格式的文件。其实我们在图形化的界面中操作,其实它是添加一段一段的字段,类似一个XML文件格式。
2、创建请假流程图的主要流程:
创建成功后我们进入流程图的绘制界面,如下:
我们从右边托出一个StartEvent的开始节点:
然后我们鼠标点击这个开始节点后可以看到如下图,这里我们创建一个new user task,然后里面我们写入填写请假申请的事件名:
我们再创建一个排他性网网关,用于后面我们的流程图的分支:
按照流程图一直类似操作到最后画出我们的结束节点:
然后我们就可以看到一个主要的流程:
3、对排他性网关创建分支:
我们先对第一个排他性网关创建一个分支,连向结束节点。一旦用户填写了请假申请但是不想提交可以直接选择不提交,将流程结束。我们选择这个网关点击 new end event创建结束节点即可。
对于第二个网关分支指向 填写请假申请 事件,点击Create connection,然后连向该事件:
第三个排他性网关也进行同样操作,最后可以得到完整的流程图:
4、填写各个控件的控件名:
对这些空间我们逐个命名,为了后面我们更好的理解这个流程图,避免控件的ID与控件内容不符。
首先如果没有Properties窗口的话,我们需要先打开它,操作如下:
然后我们先点击流程图的空白处,将这个流程图命名为LeaveProcess。
开始节点我命名为startevent:
填写请假申请 事件命名为submitform:
第一个网关我命名为decideSubmit:
部门主管审批 事件命名为ZG_approve:
第二个网关我命名为decideZGapprove:
总经理审批 事件命名为ZJL_approve:
第三个网关我命名为decideZJLapprove:
结束节点命名为endevent:
千万别忘了分支中的结束节点:
5、对三个事件添加相对应的表单:
因为分支我们要通过表单的某一项数据来判断流程往哪边走,并且正常请假流程需要一些填写的内容,我们都写在对应事件的表单Form中。
我们点击 填写请假申请 事件,在Properties中点击Form,然后再点击右边的New创建一个属性。
这里我们添加一个message,里面关于请假的申请信息。注意Required改为true,说明是必填选项。
这个表单中我们还是需要一个提交时间的,这里创建一个submitTime属性,Type是date,然后我们输入一个时间格式如下,我设定的是 yyyy-MM-dd 时间格式:
最后创建好的表单如下图:
部门主管审批的表单如下:
总经理审批事件的表单如下:
6、填写分支的判定条件:
这里我们点击分支的线,然后选择Main config,在Condition中输入 ${submitType=="y" || submitType=="Y"} ,注意这里的是 {} 花括号,之前我打成了(),编译会一直报错!!这里的 submitType 是填写请假申请事件中的Form表单中的一条属性,这里我们将用它来判断流程是否走向部门主管审批。
这根线的Condition中输入 ${submitType=="n" || submitType=="N"} ,如果用户输入n或者N则直接结束这个流程:
第二个排他性网关操作的表单数据是前面 部门主管审批 事件中的ZGapprove属性:
同样也是将两条线的Condition中输入语句,这里就指示了同意的情况。
第三个排他性网关操作的表单数据是前面 总经理审批 事件中的ZJLapprove属性:
输入Y或y则结束进程,若是输入n或N则返回到员工重新填写请假信息事件中。
以上一个比较完善的请假流程图就被我们绘制好了。