当前位置: 首页 > news >正文

做网站需要注意湘潭做网站 搜搜磐石网络

做网站需要注意,湘潭做网站 搜搜磐石网络,手机app编程,网站的内部优化公司说明#xff1a; activiti本身状态存库#xff0c;导致效率太低#xff0c;把中间状态封装成一个载荷类#xff0c;返回给上游#xff0c;下次请求时给带着载荷类即可。 1.pom依赖 dependencygroupIdnet.sf.json-lib/groupIdartifactIdjs…说明 activiti本身状态存库导致效率太低把中间状态封装成一个载荷类返回给上游下次请求时给带着载荷类即可。 1.pom依赖 dependencygroupIdnet.sf.json-lib/groupIdartifactIdjson-lib/artifactIdversion${json-lib.version}/versionclassifierjdk15/classifier/dependencydependencygroupIdorg.activiti/groupIdartifactIdactiviti-engine/artifactIdversion5.22.0/version/dependencydependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-converter/artifactIdversion5.22.0/version/dependencydependencygroupIdorg.activiti/groupIdartifactIdactiviti-bpmn-model/artifactIdversion5.22.0/version/dependency2.关键类 2.1解析类-BPMNService package cn.com.agree.activiti10; import org.activiti.bpmn.converter.BpmnXMLConverter; import org.activiti.bpmn.model.BpmnModel; import org.activiti.bpmn.model.CallActivity; import org.activiti.bpmn.model.EndEvent; import org.activiti.bpmn.model.ExclusiveGateway; import org.activiti.bpmn.model.FlowElement; import org.activiti.bpmn.model.FlowNode; import org.activiti.bpmn.model.InclusiveGateway; import org.activiti.bpmn.model.ParallelGateway; import org.activiti.bpmn.model.Process; import org.activiti.bpmn.model.SequenceFlow; import org.activiti.bpmn.model.StartEvent; import org.activiti.bpmn.model.SubProcess; import org.activiti.engine.impl.util.io.InputStreamSource; import org.mvel2.MVEL;import log.cn.com.agree.ab.a5.runtime.InvokeLog;import java.io.FileInputStream; import java.io.InputStream; import java.util.*; /*** 静态解析bpmn文件 -返回payLoad* payLoad:包含相关信息替代数据库中 存储的信息。比如当前交易名对象组名整体链路节点等* 每次请求时带着payLoad* author fanjinliangagree.com.cn**/ public class BPMNService {private MapString, BpmnModel bpmnModelMap new HashMap();private MapString, Process processMap new HashMap();// 初始化方法在服务启动时调用public void init(ListString bpmnFilePaths) throws Exception {for (String filePath : bpmnFilePaths) {loadBpmnModel(filePath);}}// 加载单个 BPMN 文件private void loadBpmnModel(String bpmnFilePath) throws Exception {InputStream bpmnStream new FileInputStream(bpmnFilePath);BpmnXMLConverter bpmnXMLConverter new BpmnXMLConverter();InputStreamSource inputStreamSource new InputStreamSource(bpmnStream);BpmnModel bpmnModel bpmnXMLConverter.convertToBpmnModel(inputStreamSource, false, false);bpmnStream.close();for (Process process : bpmnModel.getProcesses()) {String definitionKey process.getId();bpmnModelMap.put(definitionKey, bpmnModel);processMap.put(definitionKey, process);}}// 根据 definitionKey 获取 Processpublic Process getProcessByDefinitionKey(String definitionKey) {return processMap.get(definitionKey);}// 根据当前节点的 ID 获取下一个节点包括处理网关和嵌套流程public FlowElement getNextFlowElement(String definitionKey, String currentElementId, MapString, Object variables) throws ActivitiException{Process process getProcessByDefinitionKey(definitionKey);if (process null||process.getFlowElement(currentElementId)null) {return null;}FlowElement currentElement process.getFlowElement(currentElementId);FlowElement flowElement null;if (currentElement instanceof FlowNode) {ListSequenceFlow outgoingFlows ((FlowNode) currentElement).getOutgoingFlows();if (outgoingFlows.isEmpty()) {return null;}Class? currentElementType currentElement.getClass();switch (currentElementType.getSimpleName()) {case ExclusiveGateway:// 处理排他网关for (SequenceFlow outgoingFlow : outgoingFlows) {if (evaluateCondition(outgoingFlow.getConditionExpression(), variables)) {return process.getFlowElement(outgoingFlow.getTargetRef());}} // InvokeLog.error(网关不匹配);throw new ActivitiException(ActivitiServiceResults.BIZ002_网关未匹配); // break;case ParallelGateway:case InclusiveGateway:// 处理并行网关或包容网关假设返回第一个符合条件的目标节点for (SequenceFlow outgoingFlow : outgoingFlows) {return process.getFlowElement(outgoingFlow.getTargetRef());}break;case CallActivity:// 处理 CallActivityString calledElement ((CallActivity) currentElement).getCalledElement();Process calledProcess getProcessByDefinitionKey(calledElement);if (calledProcess ! null) {// 假设子流程的开始事件是唯一的for (FlowElement element : calledProcess.getFlowElements()) {if (element instanceof StartEvent) {return element;}}}break;case SubProcess:// 处理 SubProcessflowElement process.getFlowElement(outgoingFlows.get(0).getTargetRef());break;default:// 默认处理返回第一个目标节点flowElement process.getFlowElement(outgoingFlows.get(0).getTargetRef());break;}// if (currentElement instanceof ExclusiveGateway) {// // 处理排他网关// for (SequenceFlow outgoingFlow : outgoingFlows) {// if (evaluateCondition(outgoingFlow.getConditionExpression(), variables)) {// return process.getFlowElement(outgoingFlow.getTargetRef());// }else {// throw new RuntimeException(网关不匹配);// }// }// } else if (currentElement instanceof ParallelGateway || currentElement instanceof InclusiveGateway) {// // 处理并行网关或包容网关假设返回第一个符合条件的目标节点// for (SequenceFlow outgoingFlow : outgoingFlows) {// return process.getFlowElement(outgoingFlow.getTargetRef());// }// } else if (currentElement instanceof CallActivity) {// // 处理 callActivity// String calledElement ((CallActivity) currentElement).getCalledElement();// Process calledProcess getProcessByDefinitionKey(calledElement);// if (calledProcess ! null) {// // 假设子流程的开始事件是唯一的// for (FlowElement element : calledProcess.getFlowElements()) {// if (element instanceof StartEvent) {// return element;// }// }// }// } else if (currentElement instanceof SubProcess) {// // 处理 SubProcess// flowElement process.getFlowElement(outgoingFlows.get(0).getTargetRef());// } // else {// flowElement process.getFlowElement(outgoingFlows.get(0).getTargetRef());// // 默认处理返回第一个目标节点// }}//判断flowElement的类型if (flowElement!null) {//对象组后的汇总网关放过就行if (currentElement instanceof SubProcessflowElement instanceof ParallelGateway) {flowElementgetNextFlowElement(process, flowElement.getId(), variables);}}return flowElement;}private boolean evaluateCondition(String conditionExpression, MapString, Object variables) {if (conditionExpression null || conditionExpression.trim().isEmpty()) {return true; // 无条件表达式时默认返回 true}return MVEL.evalToBoolean(conditionExpression.replaceAll(\\$|\\{|\\}, ), variables);}public ProcessPayload startProcess(String definitionKey, MapString, Object var) throws ActivitiException {// TODO Auto-generated method stubProcess process processMap.get(definitionKey);if (processnull) {throw new ActivitiException(ActivitiServiceResults.BIZ001_流程定义不存在);}CollectionFlowElement flowElements process.getFlowElements();String startId;for (FlowElement e : flowElements) {if (e instanceof StartEvent) {startId e.getId();break;}}FlowElement nextFlowElement getNextFlowElement(definitionKey, startId, var);ProcessPayload processPayloadnew ProcessPayload(definitionKey, process.getName());refreshProcessPayload(processPayload,nextFlowElement);return processPayload;}private void refreshProcessPayload(ProcessPayload processPayload, FlowElement nextFlowElement) {// TODO Auto-generated method stubif (nextFlowElementnull) {processPayload.setEnd(true);return;}String idnextFlowElement.getId();String namenextFlowElement.getName();String type nextFlowElement.getClass().getSimpleName();SimpleFlowElement simpleFlowElement new SimpleFlowElement(id, name, type);SetString objIdsnew HashSetString();if (SubProcess.equalsIgnoreCase(type)) {//对象组simpleFlowElement.setSubProcess(true);SubProcess sub(SubProcess)nextFlowElement;ListSimpleFlowElement subSimpleFlowElementgetSubProcessSimpleFlowElement(sub);//更新当前对象组的对象列表simpleFlowElement.setSubSimpleFlowElement(subSimpleFlowElement);for (SimpleFlowElement e : subSimpleFlowElement) {objIds.add(e.getId());}//更新当前对象组的对象id列表}else if (ExclusiveGateway.equalsIgnoreCase(type)) {simpleFlowElement.setExclusiveGateway(true);objIds.add(simpleFlowElement.getId());}else if (ParallelGateway.equalsIgnoreCase(type)) {simpleFlowElement.setParallelGateway(true);objIds.add(simpleFlowElement.getId());}else {objIds.add(simpleFlowElement.getId());}processPayload.setCurrentObjtIdSet(objIds);processPayload.setCurrentFlowElement(simpleFlowElement);}/*** 获取对象组内的对象节点信息* param process* return*/private ListSimpleFlowElement getSubProcessSimpleFlowElement(SubProcess process) {// TODO Auto-generated method stubListSimpleFlowElement listnew ArrayListSimpleFlowElement();CollectionFlowElement flowElements process.getFlowElements();for (FlowElement e : flowElements) {if (!(e instanceof StartEvent || e instanceof EndEvent || e instanceof SequenceFlow)) {String ide.getId();String namee.getName();String type e.getClass().getSimpleName();SimpleFlowElement simpleFlowElement new SimpleFlowElement(id, name, type);list.add(simpleFlowElement);}}return list;}private FlowElement getNextFlowElement(Process process, String currentElementId, MapString, Object var) {if (process null) {return null;}FlowElement currentElement process.getFlowElement(currentElementId);if (currentElement null) {return null;}if (currentElement instanceof FlowNode) {ListSequenceFlow outgoingFlows ((FlowNode) currentElement).getOutgoingFlows();if (outgoingFlows.isEmpty()) {return null;}if (currentElement instanceof ExclusiveGateway) {// 处理排他网关for (SequenceFlow outgoingFlow : outgoingFlows) {if (evaluateCondition(outgoingFlow.getConditionExpression(), var)) {return process.getFlowElement(outgoingFlow.getTargetRef());}}} else if (currentElement instanceof ParallelGateway || currentElement instanceof InclusiveGateway) {// 处理并行网关或包容网关假设返回第一个符合条件的目标节点for (SequenceFlow outgoingFlow : outgoingFlows) {return process.getFlowElement(outgoingFlow.getTargetRef());}} else if (currentElement instanceof CallActivity) {// 处理 callActivityString calledElement ((CallActivity) currentElement).getCalledElement();Process calledProcess getProcessByDefinitionKey(calledElement);if (calledProcess ! null) {// 假设子流程的开始事件是唯一的for (FlowElement element : calledProcess.getFlowElements()) {if (element instanceof StartEvent) {return element;}}}} else {// 默认处理返回第一个目标节点return process.getFlowElement(outgoingFlows.get(0).getTargetRef());}}return null;}public ProcessPayload commitProcess(ProcessPayload processPayload, SetString commitObjIdSet, MapString, Object var) {try {SimpleFlowElement currentFlowElement processPayload.getCurrentFlowElement();if (currentFlowElement.isSubProcess()) {//处理对象组ListSimpleFlowElement subSimpleFlowElement currentFlowElement.getSubSimpleFlowElement();for (String string : commitObjIdSet) {for (SimpleFlowElement e : subSimpleFlowElement) {if (e.getId().equalsIgnoreCase(string)) {e.setCommit(true);processPayload.getCurrentObjtIdSet().remove(string);currentFlowElement.getFlowElementNum().addAndGet(1);}}}// if (currentFlowElement.getFlowElementNum().get()subSimpleFlowElement.size()) {// //当前对象组提交完毕// // }if (processPayload.getCurrentObjtIdSet().size()0) {//当前对象组提交完毕//1.更新当前节点状态currentFlowElement.setCommit(true);//2.更新历史节点processPayload.addHistoryFlowElement(currentFlowElement);//3.获取下一节点并且封装对象FlowElement nextFlowElement getNextFlowElement(processPayload.getId(), currentFlowElement.getId(), var);refreshProcessPayload(processPayload, nextFlowElement); // return processPayload;}else {//仍然返回当前节点 // return processPayload;}}else {//非对象组currentFlowElement.setCommit(true);//2.更新历史节点processPayload.addHistoryFlowElement(currentFlowElement);//3.获取下一节点并且封装对象FlowElement nextFlowElement getNextFlowElement(processPayload.getId(), currentFlowElement.getId(), var);refreshProcessPayload(processPayload, nextFlowElement);}} catch (Exception e) {e.printStackTrace();if (e instanceof ActivitiException) {ActivitiException ae(ActivitiException) e;processPayload.setErrorInfo(ae);}}return processPayload;}} 2.2 自定义节点类-SimpleFlowElement package cn.com.agree.activiti10;import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger;public class SimpleFlowElement {private String id;private String name;private String type; // Task, Event, Gateway, etc./* 标识对象是否提交 */private boolean isCommitfalse;/* 当前节点是否是对象组 */private boolean isSubProcess;/* 当前节点是否是排他网关 */private boolean isExclusiveGateway;/* 当前节点是否是并行网关 */private boolean isParallelGateway;/* 如果是对象组保留组内对象 */ListSimpleFlowElement subSimpleFlowElementnew ArrayListSimpleFlowElement();private AtomicInteger flowElementNumnew AtomicInteger(0);public SimpleFlowElement(String id, String name, String type) {this.id id;this.name name;this.type type;}public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getType() {return type;}public void setType(String type) {this.type type;}public boolean isCommit() {return isCommit;}public void setCommit(boolean isCommit) {this.isCommit isCommit;}public boolean isSubProcess() {return isSubProcess;}public void setSubProcess(boolean isSubProcess) {this.isSubProcess isSubProcess;}public ListSimpleFlowElement getSubSimpleFlowElement() {return subSimpleFlowElement;}public void setSubSimpleFlowElement(ListSimpleFlowElement subSimpleFlowElement) {this.subSimpleFlowElement subSimpleFlowElement;}public boolean isExclusiveGateway() {return isExclusiveGateway;}public void setExclusiveGateway(boolean isExclusiveGateway) {this.isExclusiveGateway isExclusiveGateway;}public boolean isParallelGateway() {return isParallelGateway;}public void setParallelGateway(boolean isParallelGateway) {this.isParallelGateway isParallelGateway;}public AtomicInteger getFlowElementNum() {return flowElementNum;}public void setFlowElementNum(AtomicInteger flowElementNum) {this.flowElementNum flowElementNum;}} 2.3 自定义载荷类 package cn.com.agree.activiti10;import java.util.ArrayList; import java.util.List; import java.util.Set;public class ProcessPayload {/* 活动ID */private String id;/* 活动name */private String name;/* 当前节点 */private SimpleFlowElement currentFlowElement;/* 历史节点 */private ListSimpleFlowElement historyFlowElementnew ArrayListSimpleFlowElement();// /* 一级流程下的节点ID ---合并到currentFlowElement*/ // private String currentObjtId;/* 提交上来的taskId */ // private SetString commitObjtId;// /* 当前节点是否是对象组 ---合并到currentFlowElement */ // private boolean isSubProcess;// /* 当前待做的taskId,如果是对象组那就是多个 ---合并到currentFlowElement*/private SetString currentObjtIdSet;private boolean endfalse;//TODO 接收到json串的时候记得把上次可能存在的错误信息给重置下private String code200;private String message;public ProcessPayload() {}public ProcessPayload(String id, String name) {this.id id;this.name name;}public ProcessPayload errorProcessPayload(String msg) {this.setCode(400);this.setMessage(msg);return this;}public String getId() {return id;}public void setId(String id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public SimpleFlowElement getCurrentFlowElement() {return currentFlowElement;}public void setCurrentFlowElement(SimpleFlowElement currentFlowElement) {this.currentFlowElement currentFlowElement;}// public SetString getCommitObjtId() { // return commitObjtId; // } // // // // public void setCommitObjtId(SetString commitObjtId) { // this.commitObjtId commitObjtId; // }public boolean isEnd() {return end;}public void setEnd(boolean end) {this.end end;}public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getMessage() {return message;}public void setMessage(String message) {this.message message;}public ListSimpleFlowElement getHistoryFlowElement() {return historyFlowElement;}public void setHistoryFlowElement(ListSimpleFlowElement historyFlowElement) {this.historyFlowElement historyFlowElement;}public SetString getCurrentObjtIdSet() {return currentObjtIdSet;}public void setCurrentObjtIdSet(SetString currentObjtIdSet) {this.currentObjtIdSet currentObjtIdSet;}public void addHistoryFlowElement(SimpleFlowElement historyFlowElement) {getHistoryFlowElement().add(historyFlowElement);}public void setErrorInfo(ActivitiException ae) {this.setCode(ae.getCode());this.setMessage(ae.getMessage());}} 2.4 测试类 package cn.com.agree.activiti10;import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set;import org.activiti.bpmn.model.FlowElement;import com.alibaba.fastjson.JSON;public class Test {public static void main(String[] args) {try {BPMNService bpmnService new BPMNService();// bpmnService.init(Arrays.asList(bpmn\\index.flow.bpmn));// String definitionKey trade/test;// String startNodeId task2;bpmnService.init(Arrays.asList(bpmn\\index.activity.bpmn));String definitionKey publicAc;MapString,Objectvarnew HashMapString,Object();var.put(a, 2);ProcessPayload processPayloadbpmnService.startProcess(definitionKey,var);String jsonString JSON.toJSONString(processPayload);System.out.println(jsonString);while (!processPayload.isEnd()) {SimpleFlowElement currentFlowElement processPayload.getCurrentFlowElement();System.out.println(currentFlowElement ID: currentFlowElement.getId());System.out.println(currentFlowElement Name: currentFlowElement.getName());System.out.println(currentObjIds : processPayload.getCurrentObjtIdSet());System.out.println();SetString currentObjtIdSet processPayload.getCurrentObjtIdSet();SetStringcommitObjIdSetnew HashSetString();commitObjIdSet.addAll(currentObjtIdSet);processPayloadbpmnService.commitProcess(processPayload,commitObjIdSet,var);if (!200.equalsIgnoreCase(processPayload.getCode())) {System.out.println(processPayload.getCode()--processPayload.getMessage());break;} // jsonString JSON.toJSONString(processPayload); // System.out.println(processPayloadjsonString);}} catch (Exception e) {e.printStackTrace();}} } 2.5 其他类 package cn.com.agree.activiti10;public class ActivitiException extends Exception{/*** */private static final long serialVersionUID 1L;private String code;private String detail;public ActivitiException(ActivitiServiceResults callResult){super(callResult.getMessage());this.code callResult.getCode();}public ActivitiException(ActivitiServiceResults callResult, String detail){this(callResult);this.detail detail;}public ActivitiException() {}public String getCode() {return code;}public void setCode(String code) {this.code code;}public String getDetail() {return detail;}public void setDetail(String detail) {this.detail detail;}} package cn.com.agree.activiti10; public enum ActivitiServiceResults {BIZ001_流程定义不存在(BIZ001, 流程定义不存在),BIZ002_网关未匹配(BIZ002, 网关未匹配);private String code;private String message;ActivitiServiceResults(String code, String message){this.code code;this.message message;}/*** return the code*/public String getCode(){return code;}/*** return the message*/public String getMessage(){return message;}/*** param code* the code to set*/public void setCode(String code){this.code code;}/*** param message* the message to set*/public void setMessage(String message){this.message message;} } 2.6 bpmn文件 ?xml version1.0 encodingUTF-8? definitions xmlnshttp://www.omg.org/spec/BPMN/20100524/MODEL xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchema xmlns:activitihttp://activiti.org/bpmn xmlns:bpmndihttp://www.omg.org/spec/BPMN/20100524/DI xmlns:omgdchttp://www.omg.org/spec/DD/20100524/DC xmlns:omgdihttp://www.omg.org/spec/DD/20100524/DI typeLanguagehttp://www.w3.org/2001/XMLSchema expressionLanguagehttp://www.w3.org/1999/XPath targetNamespacehttp://www.activiti.org/testprocess isExecutabletrue idpublicAc name通用活动startEvent idstartEvent1 namestartEvent /endEvent idendEvent1 nameendEvent /userTask idpubObj_subObject1 name账务提交处理 objectEntryConditionsextensionElementsactiviti:formProperty idCPCP条件 default /activiti:formProperty idpojoPath defaultBankCModule/scene/activity/publicAc/pubObj/pubObj //extensionElements/userTaskparallelGateway idparallelGateway_subProcess1 nameparallelGateway_风控对象组 /sequenceFlow idsequenceFlow_subProcess1 name sourceRefsubProcess1 targetRefparallelGateway_subProcess1 /subProcess idsubProcess1 name风控对象组startEvent idsubProcess1_start namestartEvent /endEvent idsubProcess_end_authCheck_subObject2 nameendEvent /sequenceFlow idsequenceFlow_start_authCheck_subObject2 name sourceRefsubProcess1_start targetRefauthCheck_subObject2 /sequenceFlow idsequenceFlow_end_authCheck_subObject2 name sourceRefauthCheck_subObject2 targetRefsubProcess_end_authCheck_subObject2 /userTask idauthCheck_subObject2 name授权对象处理 objectEntryConditionsdocumentation{quot;idquot;:quot;subProcess1quot;,quot;namequot;:quot;风控对象组quot;}/documentationextensionElementsactiviti:formProperty idCPCP条件 default /activiti:formProperty idpojoPath defaultBankCModule/processes/authCheck/authCheck //extensionElements/userTaskendEvent idsubProcess_end_reviewCheck_subObject3 nameendEvent /sequenceFlow idsequenceFlow_start_reviewCheck_subObject3 name sourceRefsubProcess1_start targetRefreviewCheck_subObject3 /sequenceFlow idsequenceFlow_end_reviewCheck_subObject3 name sourceRefreviewCheck_subObject3 targetRefsubProcess_end_reviewCheck_subObject3 /userTask idreviewCheck_subObject3 name复核对象处理 objectEntryConditionsdocumentation{quot;idquot;:quot;subProcess1quot;,quot;namequot;:quot;风控对象组quot;}/documentationextensionElementsactiviti:formProperty idCPCP条件 default /activiti:formProperty idpojoPath defaultBankCModule/processes/reviewCheck/reviewCheck //extensionElements/userTask/subProcesssequenceFlow idsequenceFlow5 name sourceRefparallelGateway_subProcess1 targetRefpubObj_subObject1 /sequenceFlow idsequenceFlow6 name sourceRefstartEvent1 targetRefsubProcess1 /exclusiveGateway idexclusiveGateway1 name网关 /userTask idsubObject4 name网关1 objectEntryConditions /sequenceFlow idsequenceFlow7 name条件 sourceRefexclusiveGateway1 targetRefsubObject4conditionExpression xsi:typetFormalExpression${a#39;1#39;}/conditionExpression/sequenceFlowuserTask idsubObject5 name网关2 objectEntryConditions /sequenceFlow idsequenceFlow8 name条件 sourceRefexclusiveGateway1 targetRefsubObject5conditionExpression xsi:typetFormalExpression${a#39;2#39;}/conditionExpression/sequenceFlowsequenceFlow idsequenceFlow9 name sourceRefpubObj_subObject1 targetRefexclusiveGateway1 /userTask idsubObject6 name对象 objectEntryConditions /sequenceFlow idsequenceFlow10 name sourceRefsubObject4 targetRefsubObject6 /sequenceFlow idsequenceFlow12 name sourceRefsubObject6 targetRefendEvent1 /sequenceFlow idsequenceFlow13 name sourceRefsubObject5 targetRefendEvent1 //processbpmndi:BPMNDiagram idBPMNDiagram_通用活动 xmlnshttp://www.omg.org/spec/BPMN/20100524/DIbpmndi:BPMNPlane bpmnElement通用活动 idBPMNPlane_通用活动bpmndi:BPMNShape idBPMNShape_startEvent1 bpmnElementstartEvent1omgdc:Bounds x65 y85 height50 width50 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_endEvent1 bpmnElementendEvent1omgdc:Bounds x950 y185 height50 width50 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_pubObj_subObject1 bpmnElementpubObj_subObject1omgdc:Bounds x530 y85 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_authCheck_subObject2 bpmnElementauthCheck_subObject2omgdc:Bounds x40 y33 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_reviewCheck_subObject3 bpmnElementreviewCheck_subObject3omgdc:Bounds x160 y35 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_subProcess1 bpmnElementsubProcess1omgdc:Bounds x230 y52 height115 width265 //bpmndi:BPMNShapebpmndi:BPMNEdge idBPMNEdge_sequenceFlow5 bpmnElementsequenceFlow5omgdi:waypoint x495 y109.5 /omgdi:waypoint x530 y110 //bpmndi:BPMNEdgebpmndi:BPMNEdge idBPMNEdge_sequenceFlow6 bpmnElementsequenceFlow6omgdi:waypoint x115 y110 /omgdi:waypoint x230 y109.5 //bpmndi:BPMNEdgebpmndi:BPMNShape idBPMNShape_exclusiveGateway1 bpmnElementexclusiveGateway1omgdc:Bounds x535 y235 height30 width30 //bpmndi:BPMNShapebpmndi:BPMNShape idBPMNShape_subObject4 bpmnElementsubObject4omgdc:Bounds x620 y145 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNEdge idBPMNEdge_sequenceFlow7 bpmnElementsequenceFlow7omgdi:waypoint x565 y250 /omgdi:waypoint x620 y170 //bpmndi:BPMNEdgebpmndi:BPMNShape idBPMNShape_subObject5 bpmnElementsubObject5omgdc:Bounds x615 y285 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNEdge idBPMNEdge_sequenceFlow8 bpmnElementsequenceFlow8omgdi:waypoint x565 y250 /omgdi:waypoint x615 y310 //bpmndi:BPMNEdgebpmndi:BPMNEdge idBPMNEdge_sequenceFlow9 bpmnElementsequenceFlow9omgdi:waypoint x620 y110 /omgdi:waypoint x535 y250 //bpmndi:BPMNEdgebpmndi:BPMNShape idBPMNShape_subObject6 bpmnElementsubObject6omgdc:Bounds x810 y185 height50 width90 //bpmndi:BPMNShapebpmndi:BPMNEdge idBPMNEdge_sequenceFlow10 bpmnElementsequenceFlow10omgdi:waypoint x710 y170 /omgdi:waypoint x810 y210 //bpmndi:BPMNEdgebpmndi:BPMNEdge idBPMNEdge_sequenceFlow12 bpmnElementsequenceFlow12omgdi:waypoint x900 y210 /omgdi:waypoint x950 y210 //bpmndi:BPMNEdgebpmndi:BPMNEdge idBPMNEdge_sequenceFlow13 bpmnElementsequenceFlow13omgdi:waypoint x705 y310 /omgdi:waypoint x950 y210 //bpmndi:BPMNEdge/bpmndi:BPMNPlane/bpmndi:BPMNDiagram /definitions
http://www.dnsts.com.cn/news/252827.html

相关文章:

  • ipv6网站建设东莞商标购买平台
  • 自己做网站需要买哪些东西手机网站下拉刷新
  • 找人做app网站五华建设银行网站
  • 广州 营销型网站建设网络网站建设电话推销
  • 预定型网站有哪些有什么好的免费网站做教育宣传
  • 长沙做网站公司wap网站在线生成app
  • 网站推广网站制作网站建设公司做贸易常用的网站
  • 深圳好的网站建设公司排名做布料的著名网站
  • 网站模板怎么编辑小型项目外包网站
  • asp网站源码下载建设部四库一平台查询网站
  • 什么网站做电器出租网站推广方案中评价效果是指
  • 怎么做网站跟域名网站优点
  • 网站设计与建设课程发号网站源码
  • 蓝鸟E4A做网站程序广州市医院网站建设哪家好
  • 云虚拟主机怎么建网站如何制定网站建设规划
  • wordpress页面链接地址上海自动seo
  • 龙岩网站建设找哪家建永久网站
  • 建设网站的获客渠道wordpress 阿里短信
  • 网站域名注册需要什么手续建设银行员工网站
  • 深圳 网站网站站seo教程
  • 桥西区附近网站建设价格在百度备案网站
  • 公司申请网站需要哪些材料最受关注的十大公众号
  • 中国网站建设网页设计做淘客的网站
  • 做网站公司哪家好html后台网站模板
  • 易语言 做网站mysql河源市住房和城乡建设局网站
  • a市最牛的网站门户网站推广渠道
  • 建设公司建站系统泰安市泰山区招聘信息
  • 河南网站设计公司价格wordpress youku videos
  • 网站建设的主要流程有哪些公司邮箱价格
  • 网站优化原理成都小程序开发报价