1、下载activiti工作流源码,下载完成后将,activiti-app.war部署到tomcat容器中

2、启动tomcat,启动成功后,访问http://localhost:8080/activiti-app/#/login;出现如下界面,输入用户名(admin)密码(test),登录

3、登录成功后,显示下面界面。

4、选择Kickstart App项,显示如下界面,由于我做过三个测试因此,这里有三个已经定制的工作,如果第一次进行,显示为空。

5、选择 Create Process 选项,创建工作流,显示如下界面

6、输入工作流名称,工作流标识等信息,选择Create new model选项,就进入了工作流定制界面。系统并已经在操作区为我们创建了一个圆圈,这个圆圈就是启动事件,如下图:

7、选中这个圆圈(启动事件),界面下面就会出现相关的配置信息,修改这个启动事件的相关属性,需要修改的主要有三个,分别是Id,Name和Initiator。分别记录启动事件的ID,名称和实例化用户的变量。Initiator这个属性配置的变量即当前步骤的操作用户,如果在后面的步骤中不需要用到这个变量可以不用配置,如果需要用到这个变量可以用${}格式进行调用。比如我这里设置的变量为userId,则在后面的调用就可以是${userId}。这个如下图:

8、选择启动事件,会出现许多其他的按钮,然后选择头像按钮就是创建一个用户任务。如下图表示:

9、选中用户任务,在下方出现用户任务的相关属性配置,配置用户任务的ID及名称,如下图:

10、然后选择Assignments选项,会弹出Assignment对话框用于配置这个任务相关的操作用户信息,如下图:

11、选择Fixed values选项卡,出现如下界面:

12、这个界面中一个有三个配置,Assignee,Candidate Users,Candidate groups,分别配置当前一个操作用户,多个用户和多个用户组。如果我需要设置当前操作用户为第一步的创建人,可以在Assignee中输入${userId},则这一步的操作人不是第一步的创建人(因为我在第一步创建了一个userId变量记录第一步的操作人,因此在这里可以使用这个变量)。当前也可以指定一个用户,直接输入用户ID即可。如下图的配置:

13、然后再选中审核任务这个任务,在右边出现的按钮中选择有叉号的按钮,这个是用于控制流程分支,即根据判断的结果进行分支。如下图:

14、选中分支结点,然后创建两个任务,一个用户任务,一个结束任务(两个圆圈的即结束任务),修改用户为重新修改,并退回到审核任务,设置用户为第一步的操作人,如下图:

15、选择分支节点和重新修改任务之间的那条连接线,修改连接线的属性配置,在连接线的flow Condition选项中需要输入审核的状态,我这里配置了pass变量,因此在做工作流流转功能时,需要针对这个工作流设置一个pass变量用于控制工作流的流转状态如下图:

16、设置分支任务和结束任务之间的连接线,如下图:

17、到这里,这个流程就设置完了。这个流程是:当一个用户填写完申请表单后,发送给当前这个用户审核,如果这个用户审核不通过,再返回当前用户重新修改表单,再次提交给自己审核,如果审核通过则结束流程。

在整个流程中设置了两个变量,一个为userId变量,一个为pass变量。由于userId变量为第一步时工作流指定的,因此我们在进行编码时不需要考虑,但是pass变量是需要我们在做审核操作时,需要设置的变量。

另外由于我们主用了一个用户不涉及用户组的问题,但是我们在实际的工作流中需要和我们自己的用户组进行定制,因此需要涉及我们自己的用户及用户组同activiti相关接口的对接问题。我在后续补充自定义用户及用户组相关的说明。

附 生成的文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/processdef">
  <process id="my-workflow" name="my-workflow" isExecutable="true">
    <documentation>test</documentation>
    <startEvent id="start" name="启动" activiti:initiator="userId"></startEvent>
    <userTask id="user_task" name="审核任务" activiti:assignee="${userId}">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <sequenceFlow id="sid-5318A2F8-DD69-474B-8E34-968106712F0A" sourceRef="start" targetRef="user_task"></sequenceFlow>
    <exclusiveGateway id="sid-CFC5B105-4542-491E-B567-8159151C84E5"></exclusiveGateway>
    <sequenceFlow id="sid-7DA85E30-066C-4F78-8B49-FB3FE57BA405" sourceRef="user_task" targetRef="sid-CFC5B105-4542-491E-B567-8159151C84E5"></sequenceFlow>
    <userTask id="edit" name="重新修改" activiti:assignee="${userId}">
      <extensionElements>
        <modeler:initiator-can-complete xmlns:modeler="http://activiti.com/modeler"><![CDATA[false]]></modeler:initiator-can-complete>
      </extensionElements>
    </userTask>
    <intermediateThrowEvent id="sid-186705E8-AC1C-4660-AE1E-D682F36116F9"></intermediateThrowEvent>
    <sequenceFlow id="sid-0D77E0BC-63E8-48BC-B236-904AEC5EE49D" sourceRef="edit" targetRef="user_task"></sequenceFlow>
    <sequenceFlow id="no" name="不通过" sourceRef="sid-CFC5B105-4542-491E-B567-8159151C84E5" targetRef="edit">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!pass}]]></conditionExpression>
    </sequenceFlow>
    <sequenceFlow id="ok" name="通过" sourceRef="sid-CFC5B105-4542-491E-B567-8159151C84E5" targetRef="sid-186705E8-AC1C-4660-AE1E-D682F36116F9">
      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass}]]></conditionExpression>
    </sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_my-workflow">
    <bpmndi:BPMNPlane bpmnElement="my-workflow" id="BPMNPlane_my-workflow">
      <bpmndi:BPMNShape bpmnElement="start" id="BPMNShape_start">
        <omgdc:Bounds height="30.0" width="30.0" x="100.0" y="163.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="user_task" id="BPMNShape_user_task">
        <omgdc:Bounds height="80.0" width="100.0" x="175.0" y="138.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-CFC5B105-4542-491E-B567-8159151C84E5" id="BPMNShape_sid-CFC5B105-4542-491E-B567-8159151C84E5">
        <omgdc:Bounds height="40.0" width="40.0" x="330.0" y="158.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="edit" id="BPMNShape_edit">
        <omgdc:Bounds height="80.0" width="100.0" x="175.0" y="285.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="sid-186705E8-AC1C-4660-AE1E-D682F36116F9" id="BPMNShape_sid-186705E8-AC1C-4660-AE1E-D682F36116F9">
        <omgdc:Bounds height="30.0" width="30.0" x="555.0" y="163.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="sid-5318A2F8-DD69-474B-8E34-968106712F0A" id="BPMNEdge_sid-5318A2F8-DD69-474B-8E34-968106712F0A">
        <omgdi:waypoint x="130.0" y="178.0"></omgdi:waypoint>
        <omgdi:waypoint x="175.0" y="178.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="no" id="BPMNEdge_no">
        <omgdi:waypoint x="350.5" y="197.5"></omgdi:waypoint>
        <omgdi:waypoint x="350.5" y="325.0"></omgdi:waypoint>
        <omgdi:waypoint x="275.0" y="325.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-7DA85E30-066C-4F78-8B49-FB3FE57BA405" id="BPMNEdge_sid-7DA85E30-066C-4F78-8B49-FB3FE57BA405">
        <omgdi:waypoint x="275.0" y="178.199203187251"></omgdi:waypoint>
        <omgdi:waypoint x="330.42" y="178.42000000000002"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="ok" id="BPMNEdge_ok">
        <omgdi:waypoint x="369.5433789954338" y="178.45662100456622"></omgdi:waypoint>
        <omgdi:waypoint x="555.0000389162095" y="178.03416847627287"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="sid-0D77E0BC-63E8-48BC-B236-904AEC5EE49D" id="BPMNEdge_sid-0D77E0BC-63E8-48BC-B236-904AEC5EE49D">
        <omgdi:waypoint x="225.0" y="285.0"></omgdi:waypoint>
        <omgdi:waypoint x="225.0" y="218.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐