当前位置:文档之家› activiti5.17流程进入阻塞状态,定时任务根据数据库状态推动流程到下个节点

activiti5.17流程进入阻塞状态,定时任务根据数据库状态推动流程到下个节点

文件代码:<?xml version="1.0"encoding="UTF-8"?><definitions xmlns="/spec/BPMN/20100524/MODEL"xmlns:xsi="http://ww /2001/XMLSchema-instance"xmlns:xsd="/2001/XMLSchema"xmlns:activiti="/b pmn"xmlns:bpmndi="/spec/BPMN/20100524/DI"xmlns:omgdc="http://ww /spec/DD/20100524/DC"xmlns:omgdi="/spec/DD/20100524/DI" typeLanguage="/2001/XMLSchema"expressionLanguage="http://www.w3. org/1999/XPath"targetNamespace="/test"><process id="accruedexpense"name="预提申请"isExecutable="true"><startEvent id="startevent1"name="Start"activiti:initiator="applyUserId"></startEvent><userTask id="usertask1"name="经理审批"activiti:candidateUsers="${userInfoService.getCandidateUsers(companyUUID,departmentU UID,'部门经理')}"activiti:formKey="redirect:/accruedexpense/doTask1?f=1"></userTask><userTask id="usertask2"name="财务审批"activiti:candidateUsers="${userInfoService.getCandidateUsers(companyUUID,'','财务总监')}"activiti:formKey="redirect:/accruedexpense/doTask2?f=1"></userTask> <sequenceFlow id="flow2"sourceRef="usertask1"targetRef="exclusivegateway2"></sequ enceFlow><exclusiveGateway id="exclusivegateway2"name="Exclusive Gateway"></exclusiveGatew ay><sequenceFlow id="flow7"name="同意"sourceRef="exclusivegateway2"targetRef="usertask2"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${task1aggree==true}]]></ conditionExpression></sequenceFlow><sequenceFlow id="flow8"sourceRef="startevent1"targetRef="usertask1"></sequenceFlo w><sequenceFlow id="flow9"name="不同意"sourceRef="exclusivegateway2"targetRef="usertask3"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${task1aggree==false}]]> </conditionExpression></sequenceFlow><userTask id="usertask3"name="修改申请"activiti:assignee="${applyUserId}"activiti:formKey="redirect:/accruedexpense/modifyApply?f =1"></userTask><exclusiveGateway id="exclusivegateway3"name="Exclusive Gateway"></exclusiveGatew ay><sequenceFlow id="flow13"sourceRef="usertask2"targetRef="exclusivegateway3"></seq uenceFlow><sequenceFlow id="flow14"name="不同意"sourceRef="exclusivegateway3"targetRef="usertask3"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${task2aggree==false}]]> </conditionExpression></sequenceFlow><sequenceFlow id="flow15"sourceRef="usertask3"targetRef="usertask1"></sequenceFlo w><userTask id="usertask4"name="导出凭证"activiti:candidateUsers="${userInfoService.getCandidateUsers(companyUUID,'','核算中心主管')}"activiti:formKey="redirect:/accruedexpense/exportProof?f=1"></userTask><sequenceFlow id="flow16"name="同意"sourceRef="exclusivegateway3"targetRef="usertask4"><conditionExpression xsi:type="tFormalExpression"><![CDATA[${task2aggree==true}]]></ conditionExpression></sequenceFlow><endEvent id="endevent1"name="End"></endEvent><sequenceFlow id="flow19"name="成功"sourceRef="waitTask"targetRef="endevent1"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${eviResult==true}]]></co nditionExpression></sequenceFlow><sequenceFlow id="flow20"name="失败"sourceRef="waitTask"targetRef="usertask4"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${eviResult==false}]]></c onditionExpression></sequenceFlow><receiveTask id="waitTask"name="等待反馈"></receiveTask><sequenceFlow id="flow21"sourceRef="usertask4"targetRef="waitTask"></sequenceFlow> </process><bpmndi:BPMNDiagram id="BPMNDiagram_accruedexpense"><bpmndi:BPMNPlane bpmnElement="accruedexpense"id="BPMNPlane_accruedexpense"> <bpmndi:BPMNShape bpmnElement="startevent1"id="BPMNShape_startevent1"><omgdc:Bounds height="35.0"width="35.0"x="32.0"y="178.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask1"id="BPMNShape_usertask1"><omgdc:Bounds height="55.0"width="105.0"x="120.0"y="168.0"></omgdc:Bounds> </bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask2"id="BPMNShape_usertask2"><omgdc:Bounds height="55.0"width="105.0"x="428.0"y="168.0"></omgdc:Bounds> </bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="exclusivegateway2"id="BPMNShape_exclusivega teway2"><omgdc:Bounds height="40.0"width="40.0"x="309.0"y="175.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask3"id="BPMNShape_usertask3"><omgdc:Bounds height="55.0"width="105.0"x="277.0"y="40.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="exclusivegateway3"id="BPMNShape_exclusivega teway3"><omgdc:Bounds height="40.0"width="40.0"x="589.0"y="175.0"></omgdc:Bounds></bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="usertask4"id="BPMNShape_usertask4"><omgdc:Bounds height="55.0"width="105.0"x="680.0"y="168.0"></omgdc:Bounds> </bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="endevent1"id="BPMNShape_endevent1"><omgdc:Bounds height="35.0"width="35.0"x="1000.0"y="178.0"></omgdc:Bounds> </bpmndi:BPMNShape><bpmndi:BPMNShape bpmnElement="waitTask"id="BPMNShape_waitTask"><omgdc:Bounds height="55.0"width="105.0"x="830.0"y="168.0"></omgdc:Bounds> </bpmndi:BPMNShape><bpmndi:BPMNEdge bpmnElement="flow2"id="BPMNEdge_flow2"><omgdi:waypoint x="225.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="309.0"y="195.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow7"id="BPMNEdge_flow7"><omgdi:waypoint x="349.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="428.0"y="195.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="14.0"width="24.0"x="369.0"y="195.0"></omgdc:Bounds></bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow8"id="BPMNEdge_flow8"><omgdi:waypoint x="67.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="120.0"y="195.0"></omgdi:waypoint><bpmndi:BPMNEdge bpmnElement="flow9"id="BPMNEdge_flow9"><omgdi:waypoint x="329.0"y="175.0"></omgdi:waypoint><omgdi:waypoint x="329.0"y="95.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="14.0"width="36.0"x="335.0"y="141.0"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow13"id="BPMNEdge_flow13"><omgdi:waypoint x="533.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="589.0"y="195.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow14"id="BPMNEdge_flow14"><omgdi:waypoint x="609.0"y="175.0"></omgdi:waypoint><omgdi:waypoint x="609.0"y="67.0"></omgdi:waypoint><omgdi:waypoint x="382.0"y="67.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="14.0"width="36.0"x="560.0"y="71.0"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow15"id="BPMNEdge_flow15"><omgdi:waypoint x="277.0"y="67.0"></omgdi:waypoint><omgdi:waypoint x="172.0"y="67.0"></omgdi:waypoint><omgdi:waypoint x="172.0"y="168.0"></omgdi:waypoint></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow16"id="BPMNEdge_flow16"><omgdi:waypoint x="629.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="680.0"y="195.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="14.0"width="24.0"x="639.0"y="195.0"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow19"id="BPMNEdge_flow19"><omgdi:waypoint x="935.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="1000.0"y="195.0"></omgdi:waypoint><bpmndi:BPMNLabel><omgdc:Bounds height="14.0"width="24.0"x="949.0"y="195.0"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow20"id="BPMNEdge_flow20"><omgdi:waypoint x="882.0"y="168.0"></omgdi:waypoint><omgdi:waypoint x="882.0"y="80.0"></omgdi:waypoint><omgdi:waypoint x="731.0"y="80.0"></omgdi:waypoint><omgdi:waypoint x="732.0"y="168.0"></omgdi:waypoint><omgdc:Bounds height="14.0"width="24.0"x="796.0"y="84.0"></omgdc:Bounds> </bpmndi:BPMNLabel></bpmndi:BPMNEdge><bpmndi:BPMNEdge bpmnElement="flow21"id="BPMNEdge_flow21"><omgdi:waypoint x="785.0"y="195.0"></omgdi:waypoint><omgdi:waypoint x="830.0"y="195.0"></omgdi:waypoint></bpmndi:BPMNEdge></bpmndi:BPMNPlane></bpmndi:BPMNDiagram></definitions>定时器代码(直接eclipse复制下来的格式不太好,可以直接复制到eclipse里面看起来方便):package .newglobe.oa.job;import java.util.HashMap;import java.util.List;import java.util.Map;import org.activiti.engine.RepositoryService;import org.activiti.engine.RuntimeService;import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; import org.activiti.engine.impl.pvm.process.ActivityImpl;import org.activiti.engine.runtime.Execution;import org.activiti.engine.runtime.ProcessInstance;import org.springframework.beans.factory.annotation.Autowired;import ponent;import .newglobe.oa.db.mybatis.BaseDao;@Componentpublic class FlowJob {@Autowiredprivate BaseDao baseDao;@Autowiredprivate RuntimeService runtimeService;@Autowiredprivate RepositoryService repositoryService;public void updateFlowByEvidenc(){//查询所有有结果的导出凭证Map<String,Object> paramMap = new HashMap<String,Object>();paramMap.put("sqlId","EvidenceReadDao.selectEvidenceByResult");List<Map<String,Object>> eviList =baseDao.selectList(paramMap);//查询业务list数据for(Map<String, Object> evi : eviList){String businessNo = (String) evi.get("evi_no");//业务编号,导出凭证节点的时候作为流程参数传递给流程的,所以可以根据业务编号查询唯一流程实例String result = (String)evi.get("result");//业务反馈结果//根据凭证号查询流程实例ProcessInstance processInstance =runtimeService.createProcessInstanceQuery().variableValueEquals("businessNo", businessNo).singleResult();//根据业务编号查询流程实例if(null != processInstance){String processDefinitionId = processInstance.getProcessDefinitionId();//流程定义idStringprocessInstanceId=processInstance.getProcessInstanceId();//流程实例id//判断是不是等待反馈节点ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity)repositoryService.getProcessDefinition(processDefinitionI d);//流程定义实体String activitiId = processInstance.getActivityId();//活动节点idActivityImpl activity =definitionEntity.findActivity(activitiId);//得到节点实例String activName = (String)activity.getProperty("name");//得到name名称if("等待反馈".equals(activName)){//如果是则需要处理Execution execution =runtimeService.createExecutionQuery().processInstanceId(processInstanceId).activityId(activitiId).singleResult();Map<String,Object> variables = new HashMap<String,Object>();if("1".equals(result)){//导出成功,eviResult作为判断流程走向的条件参数variables.put("eviResult", true);}else if("2".equals(result)){//导出失败variables.put("eviResult", false);}runtimeService.signal(execution.getId(), variables);//完成等待反馈节点,推动流程,并且放参数}}}}}。

相关主题