工作流引擎Activiti系列(二)——流程设计工具

版权声明:http://blog.csdn.net/anxpp https://blog.csdn.net/anxpp/article/details/53946420

    虽然我们也可以直接编辑XML完成流程的设计,但这稍显麻烦不说,还不直观,所以,这里介绍的是Activiti拖拽式的流程设计工具。

    主要有两种工具:官方提供的Activiti Modeler和Eclipse的Activiti designer插件。

1、Activiti BPMN 2.0 designer

    还是先说说这款Eclipse的插件吧,毕竟我们开发已经比较依赖Eclipse了,使用这个插件当前更加愉快。

    界面是这样的:

a

    安装大家应该都会,这里还是提一下:

  •     打开Eclipse选择菜单-->Help-->Install New Software...
  •     然后Work With点Add...:
  •         Name随便写一个;
  •         Location填:http://activiti.org/designer/update/

    OK,接下来就是选择并一步一步安装了。

    不过这个方法国内是行不通的(天朝墙,高又高哇),需要科学上网。

    文末会给一个zip格式的压缩包,可以直接安装,步骤与上面类似,不过Loaction选择的时候直接找个这个zip压缩包就行了,不过如果不是科学上网,也不一定能安装上。所以文尾还会提供一个已经安装好Activiti Design的并包含jee开发相关插件的Eclipse压缩包。

    提示:如果科学上网使用的是Shadowsocks,那么需要配置下Eclipse的代理:

        菜单-->Windows-->Preferences-->general-->Network Connections-->Active Provider选择Manual,并将下方各项Host设置为127.0.0.1,Port为1080(Shadowsocks默认,如果有修改就按实际的填就行了)。

    使用Activiti Designer大大的简化了我们的流程设计工作,比官方的Activiti Modeler更容易,比如我们添加监听器可以直接选择对应的监听器实现就行了,而且就在我们敲代码的IDE上岂不是更爽。

2、Activiti Modeler

    Activiti Modeler是基于B/S架构的流程设计器,我们在流程已经部署好后,还可以修改流程实现重新部署,这时候Activiti Modeler就派上用场了,我们可以将其集成到系统中,在浏览器端修改流程后重新部署,这也是很方便的,所以此处不多介绍,系列文章后续会添加Activiti Modeler的集成,到时候会细说。

3、设计流程

    上面提到的两个流程设计器使用起来都特别容易,即使是非开发人员简单了解后也能快速上手,所以更好的方式是由业务人员使用以上任一工具设计好最初的流程,然后由开发人员基于代码层面的完善。

    这里以《工作流引擎Activiti系列(一)——初识》文中的例子为例,演示流程的设计。

    首先新建一个流程文件:

1

     然后就是拖拽式的流程设计了,感觉好像也没啥说的,去拖几个就熟悉了。

    先拖一个开始和结束事件:

2

    然后添加一个用户任务,并连接起来:

3

    添加领导审批任务创建监听器:

4

    xml会自动生成对应的代码:

<?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: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/test">
  <process id="simpleProcess" name="simpleProcess" isExecutable="true">
    <extensionElements>
      <activiti:executionListener event="end" class="com.anxpp.demo.activiti.simple.listener.SimpleProcessEndListener"></activiti:executionListener>
    </extensionElements>
    <startEvent id="startevent_simple" name="Start"></startEvent>
    <userTask id="usertask1" name="领导审批">
      <extensionElements>
        <activiti:taskListener event="create" class="com.anxpp.demo.activiti.simple.listener.LeaderCheckListener"></activiti:taskListener>
      </extensionElements>
    </userTask>
    <endEvent id="endevent_simple" name="End"></endEvent>
    <sequenceFlow id="flow1" sourceRef="startevent_simple" targetRef="usertask1"></sequenceFlow>
    <sequenceFlow id="flow2" sourceRef="usertask1" targetRef="endevent_simple"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_myProcess">
    <bpmndi:BPMNPlane bpmnElement="myProcess" id="BPMNPlane_myProcess">
      <bpmndi:BPMNShape bpmnElement="startevent_simple" id="BPMNShape_startevent_simple">
        <omgdc:Bounds height="35.0" width="35.0" x="170.0" y="290.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="usertask1" id="BPMNShape_usertask1">
        <omgdc:Bounds height="55.0" width="105.0" x="290.0" y="280.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="endevent_simple" id="BPMNShape_endevent_simple">
        <omgdc:Bounds height="35.0" width="35.0" x="500.0" y="290.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="205.0" y="307.0"></omgdi:waypoint>
        <omgdi:waypoint x="290.0" y="307.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="395.0" y="307.0"></omgdi:waypoint>
        <omgdi:waypoint x="500.0" y="307.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

   可能有些更细粒度的流程设计还是需要手动编辑XML,慢慢就熟了。

    上面流程的例子完整源码已经在Github上:https://github.com/anxpp/activitiSimpleDemo.git

    如果不想用git,也可以直接下载源码:http://download.csdn.net/detail/anxpp/9725907

    activiti designer插件zip安装包:http://download.csdn.net/detail/anxpp/9725902

    带activiti designer插件基于JEE的eclipse4.6绿色压缩包:http://download.csdn.net/detail/anxpp/9725904

猜你喜欢

转载自blog.csdn.net/anxpp/article/details/53946420