flowable springboot2.0,springboot+flowable

  flowable springboot2.0,springboot+flowable

  最近工作中有用到工作流的开发,引入了易流动的工作流框架,在此记录一下跳羚整合易流动的工作流框架的过程,以便后续再次使用到时可以做一些参考使用,如果项目中有涉及到流程审批的话,可以使用该框架帮我们实现流程图示化展示的功能,为了快速了解易流动的工作流框架的一个使用过程,我们直接步入主题,跳靴整合易流动的工作流框架的步骤如下:

  

1、首先创建一个springboot工程,然后引入flowable pom依赖,代码如下:

依赖关系groupIdorg.flowable/groupId artifactId flowerable-spring-boot-starter/artifactId版本6 .7 .0/版本/依赖项

2、创建流程图定义文档

这里有一个使用可流动用户界面可视化的工程来创建流程图定义文档,https://www.wandouip.com/t5i212543/,具体实施过程如下:

 

  先从https://github.com/flowable/flowable-engine/releases上下载一个发布文档,这里选择6.7.2易流动的释放;然后解压缩文件,将里面的战争文档下的两个冲突包(易流动-休息.战争、易流动-ui。战争)部署到雄猫下,放到开发文件加下,点击运行,运行存在一个解压缩文件的过程,会产生易流动的休息,易流动的用户界面文件夹,浏览器输入http://localhost :8080/flow able-ui如下图:

  用户名密码输入管理/测试,如下图:

  点击建模器应用程序,点击右上角"创建流程",填写相关信息,进去后就可以可视化地创建流程,如下图:

  上面初步展示了使用可视化制作工具制作流程图的过程,然后导出BPMN2文件,文件内容大概如下:

  ?可扩展标记语言版本=1.0 编码=UTF八号?定义xmlns= http://www。OMG。org/spec/BPMN/2010 05 24/MODEL xmlns : xsi= http://www。w3。org/2001/XML架构实例 xmlns : xsd= http://www。w3。org/2001/XML schema xmlns : flowerable= http://flowerable。org/bpmn xmlns 333333初级管理员flow able : form field validation= true /用户任务序列流id= sid-bd25a 451-66 f1-4a f1-B954-5e E5 BC 5a 5782 source ref= start event 1 target ref= sid-ee 908 BC 6-94 a5-4C9A-B53A-68890d 1241 bb /se

  quenceFlow> <exclusiveGateway id="sid-57C003F8-C0F3-4499-8B1D-0B29223DB541"></exclusiveGateway> <sequenceFlow id="sid-D9571C82-9071-41EA-9858-D10FF50B4396" sourceRef="sid-EE908BC6-94A5-4C9A-B53A-68890D1241BB" targetRef="sid-57C003F8-C0F3-4499-8B1D-0B29223DB541"></sequenceFlow> <userTask id="sid-1EF0B969-8092-4EC5-9899-16D066122EC8" name="高级管理员" flowable:formFieldValidation="true"></userTask> <sequenceFlow id="sid-7E40EF52-4ED7-4785-954B-3530C3400D81" sourceRef="sid-57C003F8-C0F3-4499-8B1D-0B29223DB541" targetRef="sid-1EF0B969-8092-4EC5-9899-16D066122EC8"></sequenceFlow> <intermediateThrowEvent id="sid-13E2B97C-78C9-4A4B-BAD8-A47038668B5F"></intermediateThrowEvent> <sequenceFlow id="sid-72B217BF-4F36-446E-B48F-741E3F38B66F" sourceRef="sid-57C003F8-C0F3-4499-8B1D-0B29223DB541" targetRef="sid-13E2B97C-78C9-4A4B-BAD8-A47038668B5F"></sequenceFlow> <exclusiveGateway id="sid-DB335453-27CB-4992-824A-3C060312F59F"></exclusiveGateway> <sequenceFlow id="sid-60B0EF34-8DB4-421C-A265-59E8A5B7C35F" sourceRef="sid-1EF0B969-8092-4EC5-9899-16D066122EC8" targetRef="sid-DB335453-27CB-4992-824A-3C060312F59F"></sequenceFlow> <intermediateThrowEvent id="sid-D6512D07-3215-48FC-A568-227A718EC174"></intermediateThrowEvent> <sequenceFlow id="sid-0ABE9D33-F08C-4787-A827-27639909C63A" sourceRef="sid-DB335453-27CB-4992-824A-3C060312F59F" targetRef="sid-D6512D07-3215-48FC-A568-227A718EC174"></sequenceFlow> <intermediateThrowEvent id="sid-3F43BAB4-6D7A-4705-A527-D78CF919EEC2"></intermediateThrowEvent> <sequenceFlow id="sid-50C31AEE-6B3A-48A2-92D3-7D640E5FF60E" sourceRef="sid-DB335453-27CB-4992-824A-3C060312F59F" targetRef="sid-3F43BAB4-6D7A-4705-A527-D78CF919EEC2"></sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_test"> <bpmndi:BPMNPlane bpmnElement="test" id="BPMNPlane_test"> <bpmndi:BPMNShape bpmnElement="startEvent1" id="BPMNShape_startEvent1"> <omgdc:Bounds height="30.0" width="30.0" x="90.0" y="166.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-EE908BC6-94A5-4C9A-B53A-68890D1241BB" id="BPMNShape_sid-EE908BC6-94A5-4C9A-B53A-68890D1241BB"> <omgdc:Bounds height="80.0" width="100.0" x="240.0" y="141.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-57C003F8-C0F3-4499-8B1D-0B29223DB541" id="BPMNShape_sid-57C003F8-C0F3-4499-8B1D-0B29223DB541"> <omgdc:Bounds height="40.0" width="40.0" x="385.0" y="161.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-1EF0B969-8092-4EC5-9899-16D066122EC8" id="BPMNShape_sid-1EF0B969-8092-4EC5-9899-16D066122EC8"> <omgdc:Bounds height="80.0" width="100.0" x="470.0" y="141.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-13E2B97C-78C9-4A4B-BAD8-A47038668B5F" id="BPMNShape_sid-13E2B97C-78C9-4A4B-BAD8-A47038668B5F"> <omgdc:Bounds height="30.0" width="30.0" x="390.0" y="270.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-DB335453-27CB-4992-824A-3C060312F59F" id="BPMNShape_sid-DB335453-27CB-4992-824A-3C060312F59F"> <omgdc:Bounds height="40.0" width="40.0" x="615.0" y="161.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-D6512D07-3215-48FC-A568-227A718EC174" id="BPMNShape_sid-D6512D07-3215-48FC-A568-227A718EC174"> <omgdc:Bounds height="30.0" width="30.0" x="700.0" y="166.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sid-3F43BAB4-6D7A-4705-A527-D78CF919EEC2" id="BPMNShape_sid-3F43BAB4-6D7A-4705-A527-D78CF919EEC2"> <omgdc:Bounds height="30.0" width="30.0" x="620.0" y="270.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="sid-0ABE9D33-F08C-4787-A827-27639909C63A" id="BPMNEdge_sid-0ABE9D33-F08C-4787-A827-27639909C63A" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="15.0" flowable:targetDockerY="15.0"> <omgdi:waypoint x="654.557806573957" y="181.379746835443"></omgdi:waypoint> <omgdi:waypoint x="700.0002881553987" y="181.0940234142237"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-72B217BF-4F36-446E-B48F-741E3F38B66F" id="BPMNEdge_sid-72B217BF-4F36-446E-B48F-741E3F38B66F" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="15.5" flowable:targetDockerY="3.0"> <omgdi:waypoint x="405.5" y="200.43965611353715"></omgdi:waypoint> <omgdi:waypoint x="405.5" y="270.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-BD25A451-66F1-4AF1-B954-5EE5BC5A5782" id="BPMNEdge_sid-BD25A451-66F1-4AF1-B954-5EE5BC5A5782" flowable:sourceDockerX="15.0" flowable:sourceDockerY="15.0" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0"> <omgdi:waypoint x="119.94999946593475" y="181.0"></omgdi:waypoint> <omgdi:waypoint x="239.9999999999298" y="181.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-D9571C82-9071-41EA-9858-D10FF50B4396" id="BPMNEdge_sid-D9571C82-9071-41EA-9858-D10FF50B4396" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5"> <omgdi:waypoint x="339.9499999999977" y="181.21623376623376"></omgdi:waypoint> <omgdi:waypoint x="385.4130434782609" y="181.41304347826087"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-7E40EF52-4ED7-4785-954B-3530C3400D81" id="BPMNEdge_sid-7E40EF52-4ED7-4785-954B-3530C3400D81" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="50.0" flowable:targetDockerY="40.0"> <omgdi:waypoint x="424.52473707274277" y="181.41666666666666"></omgdi:waypoint> <omgdi:waypoint x="469.99999999999386" y="181.21812227074238"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-60B0EF34-8DB4-421C-A265-59E8A5B7C35F" id="BPMNEdge_sid-60B0EF34-8DB4-421C-A265-59E8A5B7C35F" flowable:sourceDockerX="50.0" flowable:sourceDockerY="40.0" flowable:targetDockerX="20.5" flowable:targetDockerY="20.5"> <omgdi:waypoint x="569.9499999999981" y="181.21623376623378"></omgdi:waypoint> <omgdi:waypoint x="615.4130434782609" y="181.41304347826087"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sid-50C31AEE-6B3A-48A2-92D3-7D640E5FF60E" id="BPMNEdge_sid-50C31AEE-6B3A-48A2-92D3-7D640E5FF60E" flowable:sourceDockerX="20.5" flowable:sourceDockerY="20.5" flowable:targetDockerX="15.0" flowable:targetDockerY="15.0"> <omgdi:waypoint x="635.4077669902913" y="200.53271096023283"></omgdi:waypoint> <omgdi:waypoint x="635.072221397189" y="270.00017140256364"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>以上初步实现怎么使用可视化工具来创建流程图定义文件,里面更为具体的使用方法还有待探索,上面的步骤执行完毕后,我们就可以运行我们的springboot工程了,在配置文件中配置好数据库链接相关的信息后,然后配置flowable相关信息:

  

flowable: aysnc-executor-activate: false database-schema-update: true process-definition-location-prefix: classpath*:/processes/ process-definition-location-suffixes: "**.bpmn20.xml, **.bpmn"

 

  

上面的信息配置完毕后,就可以运行我们的工程了,在运行工程之前,在工程的resources文件夹下创建一个processes文件夹,我们的流程定义文档就放在这个文件夹下,创建一个process-test.bpmn20.xml放到processes文件夹下,具体内容定义如下:

 

  

<?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/test"> <process id="processTest" name="Request Resource Approval " isExecutable="true"> <startEvent id="starter" name="Starter"></startEvent> <serviceTask id="sendJuniorRejectEmail" name="发送初级审批拒绝邮件" activiti:class="com.chinaums.web.controller.flowable2.delegate.SendJuniorRejectionMailDelegate"> </serviceTask> <endEvent id="juniorRejectEnd" name="Junior Reject End"></endEvent> <sequenceFlow id="flow5" sourceRef="sendJuniorRejectEmail" targetRef="juniorRejectEnd"></sequenceFlow> <userTask id="seniorApproval" name="高级审批" activiti:assignee="${seniorAdmin}"></userTask> <userTask id="juniorApproval" name="初级审批" activiti:assignee="${juniorAdmin}"></userTask> <exclusiveGateway id="exclusivegateway1" name="Exclusive Gateway1"></exclusiveGateway> <sequenceFlow id="juniorSuccessFlow" name="同意" sourceRef="exclusivegateway1" targetRef="seniorApproval"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${approved==Y}]]> </conditionExpression> </sequenceFlow> <sequenceFlow id="juniorRejectFlow" name="拒绝" sourceRef="exclusivegateway1" targetRef="sendJuniorRejectEmail"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${approved==N}]]> </conditionExpression> </sequenceFlow> <exclusiveGateway id="exclusivegateway2" name="Exclusive Gateway2"></exclusiveGateway> <sequenceFlow id="flow7" sourceRef="seniorApproval" targetRef="exclusivegateway2"></sequenceFlow> <endEvent id="approvalSuccessEnd" name="Approval Success End"></endEvent> <sequenceFlow id="seniorSuccessFlow" name="同意" sourceRef="exclusivegateway2" targetRef="sendApprovalSuccessEmail"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${approved==Y}]]> </conditionExpression> </sequenceFlow> <serviceTask id="sendSeniorRejectEmail" name="发送高级审批拒绝邮件" activiti:class="com.chinaums.web.controller.flowable2.delegate.SendSeniorRejectionMailDelegate"> </serviceTask> <endEvent id="seniorRejectEnd" name="Senior Reject End"></endEvent> <sequenceFlow id="seniorRejectFlow" name="拒绝" sourceRef="exclusivegateway2" targetRef="sendSeniorRejectEmail"> <conditionExpression xsi:type="tFormalExpression"> <![CDATA[${approved==N}]]> </conditionExpression> </sequenceFlow> <sequenceFlow id="flow9" sourceRef="sendSeniorRejectEmail" targetRef="seniorRejectEnd"></sequenceFlow> <sequenceFlow id="flow11" sourceRef="juniorApproval" targetRef="exclusivegateway1"></sequenceFlow> <sequenceFlow id="flow12" sourceRef="starter" targetRef="juniorApproval"></sequenceFlow> <serviceTask id="sendApprovalSuccessEmail" name="发送审批通过邮件" activiti:class="com.chinaums.web.controller.flowable2.delegate.SendApprovalSuccessEmailDelegate"></serviceTask> <sequenceFlow id="flow13" sourceRef="sendApprovalSuccessEmail" targetRef="approvalSuccessEnd"></sequenceFlow> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_requestResourceApprovalProcess"> <bpmndi:BPMNPlane bpmnElement="requestResourceApprovalProcess" id="BPMNPlane_requestResourceApprovalProcess"> <bpmndi:BPMNShape bpmnElement="starter" id="BPMNShape_starter"> <omgdc:Bounds height="35.0" width="35.0" x="45.0" y="118.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sendJuniorRejectEmail" id="BPMNShape_sendJuniorRejectEmail"> <omgdc:Bounds height="71.0" width="171.0" x="340.0" y="230.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="juniorRejectEnd" id="BPMNShape_juniorRejectEnd"> <omgdc:Bounds height="35.0" width="35.0" x="408.0" y="385.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="seniorApproval" id="BPMNShape_seniorApproval"> <omgdc:Bounds height="78.0" width="121.0" x="575.0" y="95.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="juniorApproval" id="BPMNShape_juniorApproval"> <omgdc:Bounds height="81.0" width="115.0" x="170.0" y="95.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="exclusivegateway1" id="BPMNShape_exclusivegateway1"> <omgdc:Bounds height="40.0" width="40.0" x="405.0" y="113.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="exclusivegateway2" id="BPMNShape_exclusivegateway2"> <omgdc:Bounds height="40.0" width="40.0" x="765.0" y="115.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="approvalSuccessEnd" id="BPMNShape_approvalSuccessEnd"> <omgdc:Bounds height="35.0" width="35.0" x="1140.0" y="117.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sendSeniorRejectEmail" id="BPMNShape_sendSeniorRejectEmail"> <omgdc:Bounds height="71.0" width="192.0" x="690.0" y="230.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="seniorRejectEnd" id="BPMNShape_seniorRejectEnd"> <omgdc:Bounds height="35.0" width="35.0" x="768.0" y="385.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="sendApprovalSuccessEmail" id="BPMNShape_sendApprovalSuccessEmail"> <omgdc:Bounds height="75.0" width="141.0" x="920.0" y="96.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5"> <omgdi:waypoint x="425.0" y="301.0"></omgdi:waypoint> <omgdi:waypoint x="425.0" y="385.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="juniorSuccessFlow" id="BPMNEdge_juniorSuccessFlow"> <omgdi:waypoint x="445.0" y="133.0"></omgdi:waypoint> <omgdi:waypoint x="575.0" y="134.0"></omgdi:waypoint> <bpmndi:BPMNLabel> <omgdc:Bounds height="16.0" width="32.0" x="445.0" y="133.0"></omgdc:Bounds> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="juniorRejectFlow" id="BPMNEdge_juniorRejectFlow"> <omgdi:waypoint x="425.0" y="153.0"></omgdi:waypoint> <omgdi:waypoint x="425.0" y="230.0"></omgdi:waypoint> <bpmndi:BPMNLabel> <omgdc:Bounds height="16.0" width="32.0" x="425.0" y="153.0"></omgdc:Bounds> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7"> <omgdi:waypoint x="696.0" y="134.0"></omgdi:waypoint> <omgdi:waypoint x="765.0" y="135.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="seniorSuccessFlow" id="BPMNEdge_seniorSuccessFlow"> <omgdi:waypoint x="805.0" y="135.0"></omgdi:waypoint> <omgdi:waypoint x="920.0" y="133.0"></omgdi:waypoint> <bpmndi:BPMNLabel> <omgdc:Bounds height="16.0" width="32.0" x="805.0" y="135.0"></omgdc:Bounds> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="seniorRejectFlow" id="BPMNEdge_seniorRejectFlow"> <omgdi:waypoint x="785.0" y="155.0"></omgdi:waypoint> <omgdi:waypoint x="786.0" y="230.0"></omgdi:waypoint> <bpmndi:BPMNLabel> <omgdc:Bounds height="16.0" width="32.0" x="785.0" y="155.0"></omgdc:Bounds> </bpmndi:BPMNLabel> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9"> <omgdi:waypoint x="786.0" y="301.0"></omgdi:waypoint> <omgdi:waypoint x="785.0" y="385.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow11" id="BPMNEdge_flow11"> <omgdi:waypoint x="285.0" y="135.0"></omgdi:waypoint> <omgdi:waypoint x="405.0" y="133.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12"> <omgdi:waypoint x="80.0" y="135.0"></omgdi:waypoint> <omgdi:waypoint x="170.0" y="135.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13"> <omgdi:waypoint x="1061.0" y="133.0"></omgdi:waypoint> <omgdi:waypoint x="1140.0" y="134.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>

上面文件中的process标签的id值是该流程定义的唯一标识,在创建流程实例时需要传入processId标识,上面的assignee变量后面定义了一个变量${seniorAdmin},这个是由接口调用时传入的,activiti:class后面的值是一个类,表示执行到这个步骤时会触发执行某个动作,比如id为sendJuniorRectEmail的serviceTask中的class定义如下:

 

  

@Slf4jpublic class SendJuniorRejectionMailDelegate implements JavaDelegate { @Override public void execute(DelegateExecution execution) { String requestUser = (String) execution.getVariable("requestUser"); String resourceId = (String) execution.getVariable("resourceId"); System.out.println("SendJuniorRejectionMailDelegate"); log.info("send approval success mail for user [" + requestUser + "] with apply resource [" + resourceId + "]"); }}

上面的类需要实现JavaDelegate这个接口,上面的内容定义完毕后,就可以定义我们的实现方法了,先创建一个接口,定义一些方法:

 

  

public interface IProcess { /** * 创建一个流程实例,创建实例时会登记一些信息,这些信息可以通过调用 * queryProcessVariables方法获取到,调用时需要传递processInstanceId * @param paramObj * @return */ ProcessInstanceEntity startProcess(ParamObj paramObj); /** * 获取指定工作人的代办任务 * @param assignee * @return */ List<TaskInstanceEntity> taskInstance(String assignee); /** * 处理工作 * @param paramObj       

	  
	  
	  
	  
	  
	  
        

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: