From 8bc7ed85e44faedc35d5a31ff698c536afec6855 Mon Sep 17 00:00:00 2001 From: weizhiqiang <598748873@qq.com> Date: Sat, 18 Dec 2021 23:32:47 +0800 Subject: [PATCH] =?UTF-8?q?Activiti5=E5=8D=87=E7=BA=A7flowable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 1 + skyeye-activiti/lib/dcharts-widget-0.10.0.jar | Bin 611262 -> 0 bytes skyeye-activiti/pom.xml | 64 +- ...bstractGateWayRollbackOperateStrategy.java | 201 +++ .../AbstractRollbackOperateStrategy.java | 232 +++ .../DefaultRollbackStrategyFactoryBean.java | 226 +++ .../activiti/cmd/rollback/RollbackCmd.java | 90 ++ .../cmd/rollback/RollbackConstants.java | 37 + .../cmd/rollback/RollbackOperateStrategy.java | 63 + .../cmd/rollback/RollbackParamsTemplate.java | 63 + .../cmd/rollback/RollbackStrategyFactory.java | 27 + ...tiInstanceTaskRollbackOperateStrategy.java | 322 ++++ ...extDefaultTaskRollbackOperateStrategy.java | 197 +++ ...askNextGatewayRollbackOperateStrategy.java | 56 + ...xtCallActivityRollbackOperateStrategy.java | 149 ++ ...efaultUserTaskRollbackOperateStrategy.java | 50 + ...NextSubProcessRollbackOperateStrategy.java | 176 +++ .../listeners/RollbackEventListener.java | 78 + .../skyeye/activiti/entity/ActAssignee.java | 157 -- .../skyeye/activiti/entity/ActDeployment.java | 37 - .../com/skyeye/activiti/entity/ActModel.java | 47 - .../com/skyeye/activiti/entity/BaseTask.java | 227 --- .../activiti/entity/DeploymentResponse.java | 72 - .../skyeye/activiti/entity/LeaveOpinion.java | 33 - .../activiti/entity/ProcessDefinition.java | 51 - .../java/com/skyeye/activiti/entity/Task.java | 45 - .../com/skyeye/activiti/entity/UserLeave.java | 126 -- .../activiti/factory/ActivitiFactory.java | 2 +- .../activiti/flowimg/FlowImgService.java | 305 ++++ .../img/CustomProcessDiagramCanvas.java | 1331 +++++++++++++++++ .../img/CustomProcessDiagramGenerator.java | 1008 +++++++++++++ .../listener/MultiInstanceloopListener.java | 7 +- .../activiti/mapper/ActAssigneeMapper.java | 10 - .../mapper/HistoryActivityInstanceMapper.java | 29 + .../activiti/service/ActAssigneeService.java | 17 - .../service/ActivitiModelService.java | 2 +- .../activiti/service/ActivitiTaskService.java | 11 +- .../activiti/service/CounterSignService.java | 15 +- .../service/impl/ActAssigneeServiceImpl.java | 60 - .../impl/ActivitiModelServiceImpl.java | 140 +- .../impl/ActivitiProcessServiceImpl.java | 224 +-- .../service/impl/ActivitiService.java | 269 +--- .../service/impl/ActivitiTaskServiceImpl.java | 77 +- .../service/impl/ActivitiUserServiceImpl.java | 16 +- .../service/impl/CounterSignServiceImpl.java | 79 +- .../impl/DsFormActivitiServiceImpl.java | 2 +- .../service/impl/ActModleTypeServiceImpl.java | 10 +- .../main/StencilsetRestResource.java | 19 +- .../model/ModelEditorJsonRestResource.java | 23 +- .../model/ModelSaveRestResource.java | 22 +- .../org/flowable/db/properties/db2.properties | 1 + .../org/flowable/db/properties/h2.properties | 0 .../flowable/db/properties/hsql.properties | 0 .../flowable/db/properties/mssql.properties | 1 + .../flowable/db/properties/mysql.properties | 0 .../flowable/db/properties/oracle.properties | 1 + .../db/properties/postgres.properties | 1 + .../service/AssetPurchaseNodeListener.java | 17 +- .../service/AssetReturnNodeListener.java | 17 +- .../service/AssetUseNodeListener.java | 15 +- .../AssetsArticlesPurchaseNodeListener.java | 17 +- .../AssetsArticlesUseNodeListener.java | 18 +- .../ConferenceroomReserveNodeListener.java | 17 +- .../service/LicenceBorrowNodeListener.java | 15 +- .../service/LicenceRevertNodeListener.java | 17 +- .../service/SealBorrowNodeListener.java | 17 +- .../service/SealRevertNodeListener.java | 17 +- .../service/VehicleUseNodeListener.java | 17 +- .../impl/AssetApplyPurchaseServiceImpl.java | 8 +- .../impl/AssetApplyReturnServiceImpl.java | 8 +- .../impl/AssetApplyUseServiceImpl.java | 8 +- ...AssetArticlesApplyPurchaseServiceImpl.java | 8 +- .../AssetArticlesApplyUseServiceImpl.java | 8 +- .../ConferenceRoomReserveServiceImpl.java | 8 +- .../impl/LicenceApplyBorrowServiceImpl.java | 8 +- .../impl/LicenceApplyRevertServiceImpl.java | 8 +- .../impl/SealApplyBorrowServiceImpl.java | 8 +- .../impl/SealApplyRevertServiceImpl.java | 8 +- .../impl/VehicleApplyUseServiceImpl.java | 6 +- .../CheckWorkBusinessTripNodeListener.java | 10 +- .../CheckWorkCancelLeaveNodeListener.java | 15 +- .../service/CheckWorkLeaveNodeListener.java | 15 +- .../CheckWorkOvertimeNodeListener.java | 16 +- .../CheckWorkBusinessTripServiceImpl.java | 8 +- .../impl/CheckWorkCancelLeaveServiceImpl.java | 8 +- .../impl/CheckWorkLeaveServiceImpl.java | 8 +- .../impl/CheckWorkOvertimeServiceImpl.java | 8 +- .../java/com/skyeye/common/util/ToolUtil.java | 1 - .../service/ContractCheckNodeListener.java | 17 +- .../OpportunityTypeOneNodeListener.java | 17 +- .../service/impl/CrmContractServiceImpl.java | 8 +- .../impl/CrmOpportunityServiceImpl.java | 8 +- .../service/impl/CustomerServiceImpl.java | 2 +- .../listenner/OtherOutLetsNodeListenner.java | 10 +- .../listenner/OtherWareHousNodeListenner.java | 10 +- .../listenner/PurchaseOrderNodeListenner.java | 10 +- .../listenner/PurchasePutNodeListenner.java | 10 +- .../PurchaseReturnsNodeListenner.java | 10 +- .../listenner/RetailOutLetNodeListenner.java | 10 +- .../listenner/RetailReturnsNodeListenner.java | 10 +- .../listenner/SalesOrderNodeListenner.java | 10 +- .../listenner/SalesOutLetNodeListenner.java | 10 +- .../listenner/SalesReturnsNodeListenner.java | 10 +- .../service/impl/ErpCommonServiceImpl.java | 2 +- .../service/impl/OtherOutLetsServiceImpl.java | 4 +- .../impl/OtherWareHousServiceImpl.java | 4 +- .../impl/PurchaseOrderServiceImpl.java | 4 +- .../service/impl/PurchasePutServiceImpl.java | 4 +- .../impl/PurchaseReturnsServiceImpl.java | 4 +- .../service/impl/RetailOutLetServiceImpl.java | 4 +- .../impl/RetailReturnsServiceImpl.java | 4 +- .../service/impl/SalesOrderServiceImpl.java | 4 +- .../service/impl/SalesOutLetServiceImpl.java | 4 +- .../service/impl/SalesReturnsServiceImpl.java | 4 +- .../service/ProCostExpenseNodeListener.java | 15 +- .../service/ProFileNodeListener.java | 17 +- .../service/ProProjectNodeListener.java | 15 +- .../service/ProTaskNodeListener.java | 16 +- .../service/ProWorkloadNodeListener.java | 17 +- .../impl/ProCostExpenseServiceImpl.java | 8 +- .../service/impl/ProFileServiceImpl.java | 8 +- .../service/impl/ProProjectServiceImpl.java | 8 +- .../service/impl/ProTaskServiceImpl.java | 8 +- .../service/impl/ProWorkloadServiceImpl.java | 8 +- .../com/skyeye/quartz/config/TaskRunner.java | 1 + .../src/main/java/com/SkyEyeApplication.java | 7 +- .../skyeye/common/filter/SessionFilter.java | 6 - .../db/config/ActivitiDataSourceConfig.java | 71 - .../db/config/BaseDataSourceConfig.java | 198 ++- .../src/main/resources/application.properties | 0 skyeye-web/src/main/resources/application.yml | 7 - 131 files changed, 5391 insertions(+), 2081 deletions(-) delete mode 100644 skyeye-activiti/lib/dcharts-widget-0.10.0.jar create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractGateWayRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/DefaultRollbackStrategyFactoryBean.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackCmd.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackConstants.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackParamsTemplate.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackStrategyFactory.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/ActiveMultiInstanceTaskRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/DefaultTaskNextGatewayRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextCallActivityRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextDefaultUserTaskRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextSubProcessRollbackOperateStrategy.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/listeners/RollbackEventListener.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActAssignee.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActDeployment.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActModel.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/BaseTask.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/DeploymentResponse.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/LeaveOpinion.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ProcessDefinition.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/Task.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/entity/UserLeave.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/FlowImgService.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramCanvas.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramGenerator.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/ActAssigneeMapper.java create mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/HistoryActivityInstanceMapper.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActAssigneeService.java delete mode 100644 skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActAssigneeServiceImpl.java rename skyeye-activiti/src/main/java/com/skyeye/{activity => flowable}/main/StencilsetRestResource.java (76%) rename skyeye-activiti/src/main/java/com/skyeye/{activity => flowable}/model/ModelEditorJsonRestResource.java (78%) rename skyeye-activiti/src/main/java/com/skyeye/{activity => flowable}/model/ModelSaveRestResource.java (82%) create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/db2.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/h2.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/hsql.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/mssql.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/mysql.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/oracle.properties create mode 100644 skyeye-activiti/src/main/resources/org/flowable/db/properties/postgres.properties delete mode 100644 skyeye-web/src/main/java/com/skyeye/db/config/ActivitiDataSourceConfig.java create mode 100644 skyeye-web/src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index 0f3c5b48f..e38457f4f 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> + <flowable.version>6.4.2</flowable.version> </properties> <dependencies> diff --git a/skyeye-activiti/lib/dcharts-widget-0.10.0.jar b/skyeye-activiti/lib/dcharts-widget-0.10.0.jar deleted file mode 100644 index bed11e0ab6979925920f3b791be7fe32800d57a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 611262 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%0AZ94H6ayjKMDT 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%0DiW@Npiy;vGcRIgPP%d{yfJljSOvv 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ÿ^a=g`+uu`~EJ;TGVU!(Dira8LZCwWd32al;N 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�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¨r?|FpS*IAki;=Fe9$Kmtn(>YH#c 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 Ouh|B}zEyBj!~X&5GuONT diff --git a/skyeye-activiti/pom.xml b/skyeye-activiti/pom.xml index 2eef3693a..b9458ae95 100644 --- a/skyeye-activiti/pom.xml +++ b/skyeye-activiti/pom.xml @@ -28,23 +28,33 @@ <artifactId>skyeye-userauth</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> - - <!-- activitiå·¥ä½œæµ --> + + <!-- flowable æ ¸å¿ƒåŒ… --> + <dependency> + <groupId>org.flowable</groupId> + <artifactId>flowable-spring-boot-starter</artifactId> + <version>${flowable.version}</version> + </dependency> + + <!-- flowable json转æ¢åŒ… --> <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-spring-boot-starter-basic</artifactId> - <version>${activiti.version}</version> + <groupId>org.flowable</groupId> + <artifactId>flowable-json-converter</artifactId> + <version>${flowable.version}</version> </dependency> <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-spring-boot-starter-actuator</artifactId> - <version>${activiti.version}</version> + <groupId>org.flowable</groupId> + <artifactId>flowable-bpmn-converter</artifactId> + <version>${flowable.version}</version> </dependency> + + <!-- flowable 设计器接å£åŒ… --> <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-rest</artifactId> - <version>${activiti.version}</version> + <groupId>org.flowable</groupId> + <artifactId>flowable-ui-modeler-rest</artifactId> + <version>${flowable.version}</version> </dependency> + <dependency> <groupId>org.apache.xmlgraphics</groupId> <artifactId>batik-codec</artifactId> @@ -65,38 +75,6 @@ <artifactId>batik-svggen</artifactId> <version>1.7</version> </dependency> - <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-explorer</artifactId> - <version>${activiti.version}</version> - </dependency> - <dependency> - <groupId>org.vaadin.addons</groupId> - <artifactId>dcharts-widget</artifactId> - <version>0.10.0</version> - <scope>system</scope> - <systemPath>${basedir}/lib/dcharts-widget-0.10.0.jar</systemPath> - </dependency> - <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-modeler</artifactId> - <version>${activiti.version}</version> - </dependency> - <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-diagram-rest</artifactId> - <version>${activiti.version}</version> - </dependency> - <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-simple-workflow</artifactId> - <version>${activiti.version}</version> - </dependency> - <dependency> - <groupId>org.activiti</groupId> - <artifactId>activiti-spring</artifactId> - <version>${activiti.version}</version> - </dependency> </dependencies> <build> diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractGateWayRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractGateWayRollbackOperateStrategy.java new file mode 100644 index 000000000..8cdfb37ad --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractGateWayRollbackOperateStrategy.java @@ -0,0 +1,201 @@ +package com.skyeye.activiti.cmd.rollback; + +import lombok.extern.slf4j.Slf4j; +import org.flowable.bpmn.model.FlowElement; +import org.flowable.bpmn.model.Gateway; +import org.flowable.bpmn.model.SequenceFlow; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * + * @ClassName: AbstractGateWayRollbackOperateStrategy + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:29 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Slf4j +public abstract class AbstractGateWayRollbackOperateStrategy extends AbstractRollbackOperateStrategy{ + + public AbstractGateWayRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void existNextFinishedTask() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + List<HistoricTaskInstance> historicTaskInstanceList = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTaskInstancesByQueryCriteria( + (HistoricTaskInstanceQueryImpl) new HistoricTaskInstanceQueryImpl() + .finished() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskCompletedAfter(hisTask.getEndTime()) + ); + + if (!historicTaskInstanceList + .stream() + .filter(obj -> paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())) + .collect(Collectors.toList()) + .isEmpty()) { + String msg = "å˜åœ¨å·²å®Œæˆä¸‹ä¸€èŠ‚点任务"; + throw new FlowableException(msg); + } + } + + + + @Override + public void deleteRuntimeTasks() { + + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + // åˆ é™¤æ£åœ¨æ‰§è¡Œä»»åŠ¡ + List<Task> taskList = CommandContextUtil.getTaskService(commandContext) + .createTaskQuery() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskCreatedAfter(hisTask.getEndTime()) + .list(); + taskList.stream() + .filter(obj -> paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())) + .forEach(obj -> { + log.info("åˆ é™¤è¿è¡Œæ—¶ä»»åŠ¡ï¼š" + obj); + removeRuntimeTaskOperate((TaskEntity) obj); + }); + + // åˆ é™¤åŽ†å²ä»»åŠ¡ + List<HistoricTaskInstanceEntity> historicTaskInstances = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTasksByProcessInstanceId(hisTask.getProcessInstanceId()); + historicTaskInstances.forEach(obj -> { + if (obj.getCreateTime().getTime() <= hisTask.getEndTime().getTime() && paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())) { + log.info("åˆ é™¤åŽ†å²ä»»åŠ¡ï¼š" + obj); + CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask(obj); + } + }); + } + + /** + * 使用并行网关进行 线æ¡æµæ±‡æ€»æ—¶å€™,会出现 特殊bug + * + * @param parent + */ + protected void processGateway(ExecutionEntity parent) { + + // 当å‰æ£åœ¨è¿è¡Œæ‰€ä»¥ä»»åŠ¡ + List<TaskEntity> taskEntityList = CommandContextUtil.getTaskService(commandContext) + .findTasksByProcessInstanceId(parent.getProcessInstanceId()); + + boolean isExistPassGatewayTask = false; + + // 下一节点任务 + List<TaskEntity> nextTaskList = taskEntityList.stream() + .filter(obj -> paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())) + .collect(Collectors.toList()); + + if (!nextTaskList.isEmpty()) { + log.info("å·²ç»ç”Ÿæˆè¿‡ç½‘关任务"); + isExistPassGatewayTask = true; + + // 网关的连线 + Map<String, SequenceFlow> sqFlowMap = new HashMap<>(); + + paramsTemplate.getGatewayMap().values().forEach(obj -> { + obj.getIncomingFlows().forEach(item -> { + + if (null != paramsTemplate.getGatewayMap().get(item.getSourceRef())) { + log.info("跳过gateway 间连线:" + item); + return; + } + if (paramsTemplate.getHisTask().getTaskDefinitionKey().equals(item.getSourceRef())) { + log.info("跳过当å‰å›žé€€åŽ†å²ä»»åŠ¡:" + item); + return; + } + sqFlowMap.put(item.getSourceRef(), item); + }); + }); + + // 创建网关相关连线 execution + createCompleteGatewayExecution(parent, sqFlowMap); + + // åˆ é™¤å½“å‰æ£åœ¨æ‰§è¡Œä»»åŠ¡ + Set<String> nestTaskIdSet = new HashSet<>(); + nextTaskList.forEach(obj -> { + removeRuntimeTaskOperate(obj); + nestTaskIdSet.add(obj.getId()); + }); + + // 移除æ£åœ¨æ‰§è¡Œä¸‹ä¸€èŠ‚点历å²ä»»åŠ¡ + List<HistoricTaskInstanceEntity> historicTaskInstanceList = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTasksByProcessInstanceId(parent.getProcessInstanceId()); + historicTaskInstanceList.forEach(obj -> { + if (nestTaskIdSet.contains(obj.getId())) { + CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask(obj); + } + }); + } + + if (isExistPassGatewayTask) { + + + } else { + log.info("移除网关连线"); + + List<ExecutionEntity> executionEntityList = CommandContextUtil.getExecutionEntityManager(commandContext) + .findExecutionsByParentExecutionAndActivityIds(parent.getProcessInstanceId(), paramsTemplate.getGatewayMap().keySet()); + + Map<String, FlowElement> targetGatewayMap = paramsTemplate.getCurrentTaskElement() + .getOutgoingFlows().stream().filter(obj -> obj.getTargetFlowElement() instanceof Gateway) + .map(obj -> obj.getTargetFlowElement()) + .collect(Collectors.toMap(FlowElement::getId, obj -> obj)); + + List<ExecutionEntity> toRemoveList = new ArrayList<>(); + + executionEntityList.forEach(obj -> { + if (null != targetGatewayMap.get(obj.getActivityId())) { + toRemoveList.add(obj); + targetGatewayMap.put(obj.getActivityId(), null); + } + }); + + if (!toRemoveList.isEmpty()) { + toRemoveList.forEach(obj -> { + log.info("移除连线:" + obj); + CommandContextUtil.getExecutionEntityManager(commandContext).delete(obj); + }); + } + } + } + + /** + * 创建 Gateway 相关连线 + * + * @param parent + * @param sqFlowMap + */ + protected void createCompleteGatewayExecution(ExecutionEntity parent, Map<String, SequenceFlow> sqFlowMap) { + + sqFlowMap.values().forEach(obj -> { + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(parent); + + newExecution.setCurrentFlowElement(obj.getTargetFlowElement()); + newExecution.setActive(false); + + log.debug("创建 gateway 连线 execution"); + CommandContextUtil.getAgenda(commandContext).planContinueProcessInCompensation(newExecution); + }); + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractRollbackOperateStrategy.java new file mode 100644 index 000000000..2e7c480bc --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/AbstractRollbackOperateStrategy.java @@ -0,0 +1,232 @@ +package com.skyeye.activiti.cmd.rollback; + +import com.skyeye.activiti.mapper.HistoryActivityInstanceMapper; +import com.skyeye.common.util.SpringUtils; +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.common.engine.impl.interceptor.CommandContext; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.impl.ActivityInstanceQueryImpl; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.engine.runtime.ActivityInstance; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * + * @ClassName: AbstractRollbackOperateStrategy + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:30 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Slf4j +public abstract class AbstractRollbackOperateStrategy implements RollbackOperateStrategy { + + protected RollbackParamsTemplate paramsTemplate; + /** + * 任务处ç†äºº + */ + protected String assignee; + + protected Map<String, Object> variables; + + protected CommandContext commandContext; + + /** + * æ— æ³•æ“作 + */ + protected HistoryActivityInstanceMapper historyActivityInstanceMapper; + + protected RuntimeService runtimeService; + + public AbstractRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + this.paramsTemplate = paramsTemplate; + this.historyActivityInstanceMapper = SpringUtils.getBean(HistoryActivityInstanceMapper.class); + this.runtimeService = SpringUtils.getBean(RuntimeService.class); + } + + @Override + public void process(CommandContext commandContext, String assignee) { + process(commandContext, assignee, new HashMap<>()); + } + + @Override + public void process(CommandContext commandContext, String assignee, Map<String, Object> variables) { + + this.commandContext = commandContext; + this.assignee = assignee; + this.variables = variables; + + log.info("å¤„ç† existNextFinishedTask"); + existNextFinishedTask(); + log.info("é…置任务执行人 setAssignee"); + setAssignee(); + log.info("å¤„ç† createExecution"); + createExecution(); + log.info("å¤„ç† deleteRuntimeTasks"); + deleteRuntimeTasks(); + log.info("å¤„ç† deleteHisActInstance"); + deleteHisActInstance(); + } + + /** + * èŽ·å– å½“å‰æ‰§è¡Œ execution + * @return + */ + protected ExecutionEntity getExecutionEntity() { + + ExecutionEntity executionEntity = CommandContextUtil.getExecutionEntityManager(commandContext) + .findById(paramsTemplate.getHisTask().getExecutionId()); + + if (null == executionEntity) { + + log.info("没找到回退任务的 execution,从åŒçº§ä»»åŠ¡å¤„获å–"); + List<ExecutionEntity> executionEntityList = CommandContextUtil + .getExecutionEntityManager(commandContext) + .findExecutionsByParentExecutionAndActivityIds(paramsTemplate.getHisTask().getProcessInstanceId(), paramsTemplate.getNextFlowIdList()); + if (executionEntityList.isEmpty()) { + throw new FlowableException("没有找到临近节点"); + } + executionEntity = executionEntityList.get(0); + } + + return executionEntity; + } + + protected void removeHisTask(HistoricTaskInstance hisTask) { + // 移除历å²ä»»åŠ¡åˆ—表 + log.info("移除历å²ä»»åŠ¡ [ id = " + hisTask.getId() + " ]"); + CommandContextUtil.getHistoricTaskService().deleteHistoricTask((HistoricTaskInstanceEntity) hisTask); + } + + /** + * 移除 ru_ ç›¸å…³æ•°æ® + * @param obj + */ + protected void removeRuntimeTaskOperate(TaskEntity obj) { + log.debug("移除 IdentityLink: " + obj.getId()); + CommandContextUtil.getIdentityLinkService(commandContext).deleteIdentityLinksByTaskId(obj.getId()); + log.debug("移除 Variable: " + obj.getId()); + CommandContextUtil.getVariableService(commandContext).deleteVariablesByExecutionId(obj.getExecutionId()); + log.debug("移除 Task: " + obj.getId()); + CommandContextUtil.getTaskService(commandContext).deleteTasksByExecutionId(obj.getExecutionId()); + log.debug("移除 execution: " + obj.getExecutionId()); + CommandContextUtil.getExecutionEntityManager(commandContext).delete(obj.getExecutionId()); + } + + + protected void createExecution(ExecutionEntity newExecution) { + newExecution.setActive(true); + // 测试设置å˜é‡ + newExecution.setVariablesLocal(variables); + newExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + + // 创建新任务 + log.debug("创建新任务"); + CommandContextUtil.getAgenda(commandContext).planContinueProcessInCompensation(newExecution); + } + + @Override + public void existNextFinishedTask() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + List<HistoricTaskInstance> hisTaskList = CommandContextUtil.getHistoricTaskService().findHistoricTaskInstancesByQueryCriteria( + (HistoricTaskInstanceQueryImpl) new HistoricTaskInstanceQueryImpl() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskCompletedAfter(hisTask.getEndTime()) + ); + + if (!hisTaskList.isEmpty()) { + hisTaskList.forEach(obj -> { + if (paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())) { + String msg = "å˜åœ¨å·²å®Œæˆä¸‹ä¸€èŠ‚点任务"; + throw new FlowableException(msg); + } + }); + } + } + + @Override + public void deleteHisActInstance() { + + List<ActivityInstance> activityInstanceEntityList = CommandContextUtil.getActivityInstanceEntityManager(commandContext) + .findActivityInstancesByQueryCriteria( + new ActivityInstanceQueryImpl() + .processInstanceId(paramsTemplate.getHisTask().getProcessInstanceId()) + ); + + + List<String> ids = new ArrayList<>(); + activityInstanceEntityList.forEach(obj -> { + // 时间大于 任务创建时间 之åŽçº¿æ¡ + if (obj.getStartTime().getTime() > paramsTemplate.getHisTask().getCreateTime().getTime() + && paramsTemplate.getNextFlowIdList().contains(obj.getActivityId())) { + ids.add(obj.getId()); + } + // 当å‰ä»»åŠ¡çš„连线 ID + if (paramsTemplate.getHisTask().getTaskDefinitionKey().equals(obj.getActivityId()) + && obj.getEndTime().getTime() > paramsTemplate.getHisTask().getCreateTime().getTime() + ) { + ids.add(obj.getId()); + } + }); + + // 移除当å‰ä»»åŠ¡è¿žçº¿ +// LOGGER.debug("移除当å‰ä»»åŠ¡è¿žçº¿"); +// ids.forEach(obj -> CommandContextUtil.getActivityInstanceEntityManager(commandContext).delete(obj)); + // 移除历å²ä»»åŠ¡è¿žçº¿ + // 历å²ä»»åŠ¡åˆ 除失败,改用自己写mapper 完æˆåˆ 除功能 +// ids.forEach(obj -> CommandContextUtil.getHistoricActivityInstanceEntityManager(commandContext).delete(obj)); + log.debug("移除历å²ä»»åŠ¡è¿žçº¿"); + ids.forEach(obj -> historyActivityInstanceMapper.delete(obj)); + + } + + @Override + public void deleteRuntimeTasks() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + List<TaskEntity> taskEntityList = CommandContextUtil.getTaskService(commandContext).findTasksByProcessInstanceId(hisTask.getProcessInstanceId()); + taskEntityList.forEach(obj -> { + if (paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())){ + log.info("移除æ£åœ¨æ‰§è¡Œçš„下一节点任务"); + // 移除任务 + removeRuntimeTaskOperate(obj); + } + }); + + + // 移除历å²ä»»åŠ¡ä¿¡æ¯ + List<HistoricTaskInstanceEntity> historicTaskInstanceList = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTasksByProcessInstanceId(hisTask.getProcessInstanceId()); + historicTaskInstanceList.forEach(obj->{ + if (paramsTemplate.getNextFlowIdList().contains(obj.getTaskDefinitionKey())){ + CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask(obj); + } + }); + } + + @Override + public void setAssignee() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + String key = RollbackConstants.ASSIGNEE_PREFIX_KEY + hisTask.getProcessInstanceId() + hisTask.getTaskDefinitionKey(); + variables.put(key, assignee); + } + + @Override + public void setAssigneeExpr(String assigneeExpr, String assigneeListExpr) { + // to override + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/DefaultRollbackStrategyFactoryBean.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/DefaultRollbackStrategyFactoryBean.java new file mode 100644 index 000000000..f6bca68e3 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/DefaultRollbackStrategyFactoryBean.java @@ -0,0 +1,226 @@ +package com.skyeye.activiti.cmd.rollback; + +import com.skyeye.activiti.cmd.rollback.impl.*; +import org.flowable.bpmn.model.*; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.TaskService; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * + * @ClassName: DefaultRollbackStrategyFactoryBean + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:28 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Component +public class DefaultRollbackStrategyFactoryBean implements RollbackStrategyFactory { + + private Logger LOGGER = LoggerFactory.getLogger(DefaultRollbackStrategyFactoryBean.class); + + @Autowired + private RepositoryService repositoryService; + + @Autowired + private TaskService taskService; + + + @Override + public RollbackOperateStrategy createStrategy(HistoricTaskInstance hisTask) { + + BpmnModel bpmnModel = repositoryService.getBpmnModel(hisTask.getProcessDefinitionId()); + + RollbackParamsTemplate template = new RollbackParamsTemplate(); + + template.setHisTask(hisTask); + // 获å–当å‰ä»»åŠ¡çš„èŠ‚ç‚¹ä¿¡æ¯ + getThisUserTask(template, bpmnModel, hisTask); + // 获å–ä¸‹ä¸€èŠ‚ç‚¹ä¿¡æ¯ + getNextElementInfo(template, bpmnModel); + // 创建ç–ç•¥ + RollbackOperateStrategy strategy = createStrategyInstance(template); + + return strategy; + } + + /** + * @param template + * @return + */ + @Override + public boolean currentMultiInstanceTaskUnfinished(RollbackParamsTemplate template) { + + if (template.getCurrentTaskElement().getLoopCharacteristics() == null) { + LOGGER.info("当å‰ä»»åŠ¡èŠ‚点ä¸æ˜¯ä¼šç¾èŠ‚点"); + return false; + } + + long count = taskService.createTaskQuery() + .processInstanceId(template.getHisTask().getProcessInstanceId()) + .taskDefinitionKey(template.getHisTask().getTaskDefinitionKey()) + .count(); + if (count > 0) { + LOGGER.info("具有未完æˆå½“å‰èŠ‚点任务"); + return true; + } + + return false; + } + + /** + * 生æˆç–ç•¥ + * + * @param template + * @return + */ + private RollbackOperateStrategy createStrategyInstance(RollbackParamsTemplate template) { + + // 处ç†æ£åœ¨æ‰§è¡Œä¼šç¾èŠ‚点 + if (currentMultiInstanceTaskUnfinished(template)) { + LOGGER.info("-回退 æ£åœ¨æ‰§è¡Œä¼šç¾ ç–ç•¥"); + return new ActiveMultiInstanceTaskRollbackOperateStrategy(template); + } + + // 默认节点处ç†ç–ç•¥ + if (template.getCurrentTaskElement().getLoopCharacteristics() == null + && template.getGatewayMap().isEmpty() + && !template.getNextUserTaskList().isEmpty()) { + LOGGER.info("-回退 普通任务 ç–ç•¥"); + return new NextDefaultUserTaskRollbackOperateStrategy(template); + } + + // 下一节点 嵌入å¼åæµç¨‹ + if (template.getCurrentTaskElement().getLoopCharacteristics() == null + && template.getGatewayMap().isEmpty() + && !template.getSubProcessMap().isEmpty()) { + LOGGER.info("-回退 嵌入å¼åæµç¨‹ ç–ç•¥"); + return new NextSubProcessRollbackOperateStrategy(template); + } + + // 下一节点 调用å¼åæµç¨‹ + if (template.getCurrentTaskElement().getLoopCharacteristics() == null + && template.getGatewayMap().isEmpty() + && !template.getCallActivityMap().isEmpty()) { + LOGGER.info("-回退 调用å¼åæµç¨‹ ç–ç•¥"); + return new NextCallActivityRollbackOperateStrategy(template); + } + + // 下一节点 网关,多级网关 + if (template.getCurrentTaskElement().getLoopCharacteristics() == null + && !template.getGatewayMap().isEmpty()) { + LOGGER.info("-回退 网关, 多级网关 ç–ç•¥"); + return new DefaultTaskNextGatewayRollbackOperateStrategy(template); + } + + // 会ç¾å·²å®Œæˆ + if (template.getCurrentTaskElement().getLoopCharacteristics() != null) { + + if ( template.getGatewayMap().isEmpty() + && !template.getNextUserTaskList().isEmpty()) { + LOGGER.info("-回退 已完æˆä¼šç¾,下一节点普通任务 ç–ç•¥"); + return new CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy(template); + } + + return null; + } + return null; + } + + + /** + * 获å–下一节点任务 + * + * @param template + * @param bpmnModel + */ + private void getNextElementInfo(RollbackParamsTemplate template, BpmnModel bpmnModel) { + + if (null != template.getCurrentSubProcess()) { + LOGGER.info("当å‰ä»»åŠ¡å˜åœ¨äºŽ SubProcess"); + getNextElementInfo(template, template.getCurrentSubProcess(), template.getCurrentTaskElement().getOutgoingFlows()); + return; + } + LOGGER.info("当å‰ä»»åŠ¡å˜åœ¨äºŽ bpmnModel"); + // 主线æµç¨‹å›¾ + getNextElementInfo(template, bpmnModel.getMainProcess(), template.getCurrentTaskElement().getOutgoingFlows()); + } + + /** + * 获å–下一节点网关任务 + * + * @param template + * @param flowElementsContainer + * @param outgoingFlows + */ + private void getNextElementInfo(RollbackParamsTemplate template, FlowElementsContainer flowElementsContainer, List<SequenceFlow> outgoingFlows) { + + for (SequenceFlow flow : outgoingFlows) { + + template.getNextFlowIdList().add(flow.getId()); + template.getOutGoingMap().put(flow.getId(), flow); + + // 下一节点 + FlowElement flowElement = flowElementsContainer.getFlowElement(flow.getTargetRef()); + template.getNextFlowIdList().add(flowElement.getId()); + + if (flowElement instanceof UserTask) { + LOGGER.info("下一节点:UserTask"); + template.getNextUserTaskList().add((UserTask) flowElement); + } else if (flowElement instanceof Gateway) { + LOGGER.info("下一节点:Gateway"); + Gateway gateway = ((Gateway) flowElement); + template.getGatewayMap().put(gateway.getId(), gateway); + getNextElementInfo(template, flowElementsContainer, gateway.getOutgoingFlows()); + } else if (flowElement instanceof SubProcess) { + LOGGER.info("下一节点:SubProcess"); + SubProcess subProcess = (SubProcess) flowElement; + template.getSubProcessMap().put(subProcess.getId(), subProcess); + } else if (flowElement instanceof CallActivity) { + LOGGER.info("下一节点:CallActivity"); + CallActivity callActivity = (CallActivity) flowElement; + template.getCallActivityMap().put(callActivity.getId(), callActivity); + } + } + } + + /** + * 获å–当å‰ä»»åŠ¡ + * + * @param template + * @param bpmnModel + * @param hisTask + */ + private void getThisUserTask(RollbackParamsTemplate template, BpmnModel bpmnModel, HistoricTaskInstance hisTask) { + + FlowElement flowElement = bpmnModel.getMainProcess().getFlowElement(hisTask.getTaskDefinitionKey()); + if (null != flowElement && flowElement instanceof UserTask) { + LOGGER.info("获å–回退任务节点"); + template.setCurrentTaskElement((UserTask) flowElement); + return; + } + + for (FlowElement item : bpmnModel.getMainProcess().getFlowElements()) { + if (item instanceof SubProcess) { + flowElement = ((SubProcess) item).getFlowElement(hisTask.getTaskDefinitionKey()); + if (null != flowElement) { + LOGGER.info("当å‰èŠ‚点å˜åœ¨äºŽåµŒå…¥å¼åæµç¨‹"); + template.setCurrentTaskElement((UserTask) flowElement); + template.setCurrentSubProcess((SubProcess) item); + return; + } + } + } + + LOGGER.error("没有获å–回退任务节点"); + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackCmd.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackCmd.java new file mode 100644 index 000000000..c3b27bc73 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackCmd.java @@ -0,0 +1,90 @@ +package com.skyeye.activiti.cmd.rollback; + +import org.flowable.common.engine.api.FlowableException; +import org.flowable.common.engine.impl.interceptor.Command; +import org.flowable.common.engine.impl.interceptor.CommandContext; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.skyeye.common.util.SpringUtils; + +/** + * + * @ClassName: RollbackCmd + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:26 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public class RollbackCmd implements Command { + + private Logger LOGGER = LoggerFactory.getLogger(RollbackCmd.class); + + /** + * 任务ID + */ + private String taskId; + + private String assignee; + + private HistoryService historyService; + + private RuntimeService runtimeService; + + private RollbackStrategyFactory rollbackStrategyFactory; + + /** + * 会ç¾ä»»åŠ¡ å•ä¸ªæ‰§è¡Œäºº è¡¨è¾¾å¼ + */ + private String assigneeExpr = "assignee"; + + /** + * 会ç¾ä»»åŠ¡ é›†åˆ è¡¨è¾¾å¼ + */ + private String assigneeListExpr = "assigneeList"; + + public RollbackCmd(String taskId, String assignee) { + this.taskId = taskId; + this.assignee = assignee; + + this.historyService = SpringUtils.getBean(HistoryService.class); + this.runtimeService = SpringUtils.getBean(RuntimeService.class); + this.rollbackStrategyFactory = SpringUtils.getBean(RollbackStrategyFactory.class); + } + + @Override + public Object execute(CommandContext commandContext) { + + HistoricTaskInstance hisTask = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult(); + + if (null == hisTask.getEndTime()){ + String msg = "任务æ£åœ¨æ‰§è¡Œ,ä¸éœ€è¦å›žé€€"; + LOGGER.error(msg); + throw new FlowableException(msg); + } + + ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(hisTask.getProcessInstanceId()).singleResult(); + if (null == pi) { + String msg = "该æµç¨‹å·²ç»å®Œæˆï¼Œæ— 法进行任务回退。"; + LOGGER.error(msg); + throw new FlowableException(msg); + } + + RollbackOperateStrategy strategy = rollbackStrategyFactory.createStrategy(hisTask); + + // é…ç½®ä»»åŠ¡æ‰§è¡Œè¡¨è¾¾å¼ + strategy.setAssigneeExpr(assigneeExpr, assigneeListExpr); + // å¤„ç† + strategy.process(commandContext, assignee); + + // 判æ–ä¸‹ä¸€èŠ‚ç‚¹ç±»åž‹ï¼Œæ ¹æ®ä¸‹ä¸€èŠ‚点类型获得任务处ç†ç–ç•¥ + + return null; + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackConstants.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackConstants.java new file mode 100644 index 000000000..34f38af72 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackConstants.java @@ -0,0 +1,37 @@ +package com.skyeye.activiti.cmd.rollback; + +/** + * + * @ClassName: RollbackConstants + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:28 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public interface RollbackConstants { + + /** + * é…ç½® 任务执行人å˜é‡ + */ + String ASSIGNEE_PREFIX_KEY = "ROLLBACK_ASSIGNEE_PREFIX_"; + + /** + * é…ç½® 任务执行人å˜é‡ + */ + String TASK_TYPE_PREFIX_KEY = "ROLLBACK_TASK_TYPE_PREFIX_"; + + + /** + * 会ç¾ä»»åŠ¡å˜é‡ + */ + interface MultiInstanceConstants{ + + String NR_OF_ACTIVE_INSTANCES = "nrOfActiveInstances"; + String NR_OF_COMPLETE_INSTANCES = "nrOfCompletedInstances"; + String NR_OF_INSTANCE = "nrOfInstances"; + + String LOOP_COUNTER = "loopCounter"; + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackOperateStrategy.java new file mode 100644 index 000000000..fb3438fb1 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackOperateStrategy.java @@ -0,0 +1,63 @@ +package com.skyeye.activiti.cmd.rollback; + +import org.flowable.common.engine.impl.interceptor.CommandContext; + +import java.util.Map; + +/** + * + * @ClassName: RollbackOperateStrategy + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:31 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public interface RollbackOperateStrategy { + + + /** + * å¤„ç† + */ + void process(CommandContext commandContext, String assignee); + + /** + * å¤„ç† + */ + void process(CommandContext commandContext, String assignee, Map<String, Object> variables); + + + /** + * é…置处ç†æ ‡è¯† + * @param assigneeExpr + * @param assigneeListExpr + */ + void setAssigneeExpr(String assigneeExpr, String assigneeListExpr); + + /** + * é…置任务处ç†äºº + */ + void setAssignee(); + + /** + * ç§»é™¤ç›¸å…³å…³è” + */ + void existNextFinishedTask(); + + /** + * 移除历å²ç—•è¿¹ + */ + void deleteHisActInstance(); + + /** + * 移除æ£åœ¨è¿è¡Œçš„任务 + */ + void deleteRuntimeTasks(); + + /** + * 创建任务 + */ + void createExecution(); + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackParamsTemplate.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackParamsTemplate.java new file mode 100644 index 000000000..e5abbb836 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackParamsTemplate.java @@ -0,0 +1,63 @@ +package com.skyeye.activiti.cmd.rollback; + +import lombok.Data; +import org.flowable.bpmn.model.*; +import org.flowable.task.api.history.HistoricTaskInstance; + +import java.util.*; + +/** + * @ClassName: RollbackParamsTemplate + * @Author: huangrenhao + * @Description: + * @CreateTime: 2020/3/23 0023 ä¸‹åˆ 3:52 + * @Version: + **/ +@Data +public class RollbackParamsTemplate { + + /** + * 回滚任务 + */ + private HistoricTaskInstance hisTask; + + /** + * 当å‰ä»»åŠ¡èŠ‚点 + */ + private UserTask currentTaskElement; + + /** + * 当å‰èŠ‚点到下一任务节点间的连线(ä¸åŒ…å«å½“å‰ä»»åŠ¡èŠ‚点) + */ + private Set<String> nextFlowIdList = new HashSet<>(); + + /** + * 当å‰ä»»åŠ¡èŠ‚点到 下一节点 ä¹‹é—´çº¿æ¡ + */ + private Map<String, SequenceFlow> outGoingMap = new HashMap<>(); + + /** + * 下一任务节点 é›†åˆ + */ + private List<UserTask> nextUserTaskList = new ArrayList<>(); + + /** + * 到下一任务节点 ä¹‹é—´çš„ç½‘å…³é›†åˆ + */ + private Map<String, Gateway> gatewayMap = new HashMap<>(); + + /** + * 下一节点是å¦ä¸º 嵌入å¼åæµç¨‹ + */ + private Map<String, SubProcess> subProcessMap = new HashMap<>(); + + /** + * 下一节点是å¦ä¸º 调用åæµç¨‹ + */ + private Map<String, CallActivity> callActivityMap = new HashMap<>(); + + /** + * å½“å‰ åµŒå…¥åæµç¨‹ + */ + private SubProcess currentSubProcess; +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackStrategyFactory.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackStrategyFactory.java new file mode 100644 index 000000000..5afe46a52 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/RollbackStrategyFactory.java @@ -0,0 +1,27 @@ +package com.skyeye.activiti.cmd.rollback; + +import org.flowable.task.api.history.HistoricTaskInstance; + +/** + * @ClassName: RollbackStrategyFactory + * @Author: huangrenhao + * @Description: + * @CreateTime: 2020/3/23 0023 ä¸‹åˆ 3:33 + * @Version: + **/ +public interface RollbackStrategyFactory { + + /** + * 创建回滚ç–ç•¥ + * @param hisTask + * @return + */ + RollbackOperateStrategy createStrategy(HistoricTaskInstance hisTask); + + /** + * 当å‰ä»»åŠ¡æœªå®Œæˆåˆ¤å®š + * @param template + * @return + */ + boolean currentMultiInstanceTaskUnfinished(RollbackParamsTemplate template); +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/ActiveMultiInstanceTaskRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/ActiveMultiInstanceTaskRollbackOperateStrategy.java new file mode 100644 index 000000000..6c54ebd40 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/ActiveMultiInstanceTaskRollbackOperateStrategy.java @@ -0,0 +1,322 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import com.skyeye.activiti.cmd.rollback.AbstractRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.common.engine.impl.interceptor.CommandContext; +import org.flowable.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; +import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; +import org.flowable.variable.api.history.HistoricVariableInstance; +import org.flowable.variable.service.impl.HistoricVariableInstanceQueryImpl; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * + * @ClassName: ActiveMultiInstanceTaskRollbackOperateStrategy + * @Description: æ£åœ¨æ‰§è¡Œä¼šç¾å›žæ»š ,兼容嵌入å¼åæµç¨‹ + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:25 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Slf4j +public class ActiveMultiInstanceTaskRollbackOperateStrategy extends AbstractRollbackOperateStrategy { + + private static Logger LOGGER = LoggerFactory.getLogger(NextDefaultUserTaskRollbackOperateStrategy.class); + + public ActiveMultiInstanceTaskRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + boolean isSequential = false; + + /** + * 会ç¾ä»»åŠ¡ å•ä¸ªæ‰§è¡Œäºº è¡¨è¾¾å¼ + */ + private String assigneeExpr = "assignee"; + + /** + * 会ç¾ä»»åŠ¡ é›†åˆ è¡¨è¾¾å¼ + */ + private String assigneeListExpr = "assigneeList"; + + @Override + public void process(CommandContext commandContext, String assignee, Map<String, Object> variables) { + + this.commandContext = commandContext; + this.assignee = assignee; + this.variables = variables; + + // ä¸²è¡Œä¼šç¾ + if (paramsTemplate.getCurrentTaskElement().getBehavior() instanceof SequentialMultiInstanceBehavior) { + isSequential = true; + } else if (paramsTemplate.getCurrentTaskElement().getBehavior() instanceof MultiInstanceActivityBehavior) { + isSequential = false; + } + + LOGGER.info("创建实例"); + createExecution(); + } + + @Override + public void setAssigneeExpr(String assigneeExpr, String assigneeListExpr) { + this.assigneeExpr = assigneeExpr; + this.assigneeListExpr = assigneeListExpr; + } + + @Override + public void createExecution() { + + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + List<Task> currentTaskList = CommandContextUtil.getTaskService(commandContext) + .createTaskQuery() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskDefinitionKey(hisTask.getTaskDefinitionKey()) + .list(); + + if (currentTaskList.isEmpty()) { + String msg = "当å‰ä¼šç¾ä»»åŠ¡å·²ç»å®Œæˆ"; + throw new FlowableException(msg); + } + + if (!isSequential) { + LOGGER.info("处ç†å¹¶è¡Œä¼šç¾"); + processMultiInstance(); + } else { + LOGGER.info("处ç†ä¸²è¡Œä¼šç¾"); + processSequentialInstance(); + } + + + } + + /** + * 处ç†ä¸²è¡Œä¼šç¾ + * 串行特殊场景 : 下一个顺åºæ‰§è¡Œäººå·²å®Œæˆä»»åŠ¡ï¼Œå½“å‰åŽ†å²ä»»åŠ¡ä¸å¯å›žé€€ + * a -> b -> c -> d + * b 任务完æˆæ—¶ï¼Œ a 任务ä¸å¯å›žé€€ + */ + private void processSequentialInstance() { + + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + // 确认是å¦å…·æœ‰ä¸‹ä¸€çº¿æ€§å®Œæˆä»»åŠ¡ + existNextFinishedTask(hisTask); + + // 进行任务回退æ“作 + ExecutionEntity executionEntity = processCommon(hisTask); + + + if (executionEntity.getId().equals(hisTask.getExecutionId())) { + log.info("未生æˆè¿‡ä¸‹ä¸€èŠ‚点"); + + // 移除æ£åœ¨æ‰§è¡Œä»»åŠ¡ + List<TaskEntity> taskEntityList = CommandContextUtil.getTaskService(commandContext).findTasksByExecutionId(executionEntity.getId()); + taskEntityList.forEach(obj -> { + LOGGER.info("移除æ£åœ¨å½“å‰ä»»åŠ¡è®°å½• [ id = " + obj.getId() + " ] "); + CommandContextUtil.getTaskService(commandContext).deleteTask(obj, true); + HistoricTaskInstance historicTaskInstance = CommandContextUtil.getHistoricTaskService(commandContext).getHistoricTask(obj.getId()); + CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask((HistoricTaskInstanceEntity) historicTaskInstance); + }); + + // é…置任务执行人 + executionEntity.setVariable(assigneeExpr, assignee); + // 计数器å‰ç½®ä¸€ä½ + int loopCounter = (int) executionEntity.getVariable(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER); + executionEntity.setVariable(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER, loopCounter - 1); + // 将任务é‡æ–°æ¿€æ´» + executionEntity.setActive(true); + // 创建新任务 + CommandContextUtil.getAgenda(commandContext).planContinueProcessInCompensation(executionEntity); + } else { + log.info("已生æˆè¿‡ä¸‹ä¸€ä»»åŠ¡èŠ‚点,æ— æ³•æ‰¾åˆ°å½“å‰ execution"); + + List<Task> taskList = CommandContextUtil.getTaskService(commandContext).createTaskQuery() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskDefinitionKey(hisTask.getTaskDefinitionKey()) + .list(); + + Task currentTask = taskList.get(0); + + Integer currentLoopCounter = (Integer) runtimeService.getVariableLocal(currentTask.getExecutionId(), RollbackConstants.MultiInstanceConstants.LOOP_COUNTER); + List<String> assigneeList = (List<String>) runtimeService.getVariableLocal(currentTask.getProcessInstanceId(), assigneeListExpr); + + if (StringUtils.isEmpty(hisTask.getAssignee())) { + throw new FlowableException("没有找到历å²ä»»åŠ¡æ‰§è¡Œäºº,æ— æ³•è¿›è¡Œ 执行顺åºåˆ¤æ–"); + } + + int index = assigneeList.indexOf(hisTask.getAssignee()); + if (index == -1) { + throw new FlowableException("执行人ä¸å˜åœ¨äºŽåˆå§‹å‚æ•°,æ— æ³•è¿›è¡Œ 执行顺åºåˆ¤æ–"); + } + + if (index != currentLoopCounter - 1) { + throw new FlowableException("任务执行人ä¸æ˜¯ 当å‰æ‰§è¡Œäººçš„å‰ä½ , ä¸åˆæ³•å›žé€€"); + } + // æŒä¹…化å˜é‡ + assigneeList.set(index, assignee); + runtimeService.setVariableLocal(currentTask.getProcessInstanceId(), assigneeListExpr, assigneeList); + + // 修改å˜é‡ + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext).findById(currentTask.getExecutionId()); + newExecution.setVariableLocal(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER, currentLoopCounter - 1); + newExecution.setVariableLocal(assigneeExpr, assignee); + + // 创建新任务 + CommandContextUtil.getAgenda(commandContext).planContinueMultiInstanceOperation(newExecution, executionEntity, currentLoopCounter - 1); + // 移除当å‰ä»»åŠ¡ + CommandContextUtil.getTaskService(commandContext).deleteTask((TaskEntity) currentTask, true); + // 移除历å²ä»»åŠ¡ + HistoricTaskInstance historicTaskInstance = CommandContextUtil.getHistoricTaskService(commandContext).getHistoricTask(currentTask.getId()); + CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask((HistoricTaskInstanceEntity) historicTaskInstance); + } + + // 移除当å‰åŽ†å²ä»»åŠ¡ + removeHisTask(hisTask); + } + + public void existNextFinishedTask(HistoricTaskInstance hisTask) { + + List<HistoricTaskInstance> list = CommandContextUtil.getHistoricTaskService().findHistoricTaskInstancesByQueryCriteria( + (HistoricTaskInstanceQueryImpl) new HistoricTaskInstanceQueryImpl() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskDefinitionKey(hisTask.getTaskDefinitionKey()) + .finished() + .taskCompletedAfter(hisTask.getEndTime()) + ); + + if (!list.isEmpty()) { + String msg = "串行会ç¾å›žæ»šï¼Œå·²ç»å…·æœ‰ä¸‹ä¸€çº¿æ€§å®Œæˆä»»åŠ¡,æ— æ³•è¿›è¡Œä»»åŠ¡å›žé€€"; + LOGGER.error(msg); + throw new FlowableException(msg); + } + + } + + + /** + * 处ç†å¹¶è¡Œä¼šç¾ + */ + private void processMultiInstance() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + // 通用æ“作部分 + ExecutionEntity executionEntity = processCommon(hisTask); + + // 未生æˆè¿‡ä¸‹ä¸€èŠ‚点 + if (executionEntity.getId().equals(hisTask.getExecutionId())) { + log.info("未生æˆè¿‡ä¸‹ä¸€èŠ‚点"); + // é…置任务执行人 + executionEntity.setVariable(assigneeExpr, assignee); + // 将任务é‡æ–°æ¿€æ´» + executionEntity.setActive(true); + // 创建新任务 + CommandContextUtil.getAgenda(commandContext).planContinueProcessInCompensation(executionEntity); + } else { + log.info("已生æˆè¿‡ä¸‹ä¸€ä»»åŠ¡èŠ‚点,æ— æ³•æ‰¾åˆ°å½“å‰ execution"); + + List<HistoricVariableInstance> historicVariableInstanceList = CommandContextUtil.getHistoricVariableService().findHistoricVariableInstancesByQueryCriteria( + new HistoricVariableInstanceQueryImpl() + .processInstanceId(hisTask.getProcessInstanceId()) + .executionId(hisTask.getExecutionId()) + ); + + Map<String, Object> hisVarMap = historicVariableInstanceList.stream().collect(Collectors.toMap(HistoricVariableInstance::getVariableName, item -> item.getValue())); + + // æµç¨‹æ‰§è¡Œå˜é‡ + Integer loopCounter = (Integer) hisVarMap.get(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER); + + List<ExecutionEntity> executionEntities = CommandContextUtil.getExecutionEntityManager(commandContext) + .findChildExecutionsByParentExecutionId(executionEntity.getId()); + + List<ExecutionEntity> linkExecutions = executionEntities.stream() + .filter(obj -> { + if (!obj.isActive()) { + Integer currentLoopCounter = (Integer) obj.getVariable(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER); + if (currentLoopCounter.equals(loopCounter)) { + return true; + } + } + return false; + }).collect(Collectors.toList()); + + if (linkExecutions.isEmpty()) { + throw new FlowableException("æ²¡æœ‰æ‰¾åˆ°æ˜ å°„èŠ‚ç‚¹"); + } + + ExecutionEntity newExecution = linkExecutions.get(0); + + newExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + newExecution.setActive(true); + newExecution.setVariables(hisVarMap); + newExecution.setVariable(assigneeExpr, assignee); + + // 创建新任务 + CommandContextUtil.getAgenda(commandContext).planContinueMultiInstanceOperation(newExecution, executionEntity, loopCounter); + } + + // 移除当å‰åŽ†å²ä»»åŠ¡ + removeHisTask(hisTask); + } + + + /** + * 通用处ç†é€»è¾‘ + * + * @param hisTask + * @return + */ + private ExecutionEntity processCommon(HistoricTaskInstance hisTask) { + + + ExecutionEntity executionEntity = CommandContextUtil + .getExecutionEntityManager(commandContext).findById(hisTask.getExecutionId()); + + if (null == executionEntity) { + LOGGER.error("没有找到历å²ä»»åŠ¡[ executionId = " + hisTask.getExecutionId() + " ]"); + +// List<ExecutionEntity> executionEntityList = CommandContextUtil +// .getExecutionEntityManager(commandContext) +// .findExecutionsByParentExecutionAndActivityIds(hisTask.getProcessInstanceId(), Collections.singletonList(hisTask.getTaskDefinitionKey())); + + List<Task> taskEntityList = CommandContextUtil.getTaskService(commandContext) + .createTaskQuery() + .processInstanceId(hisTask.getProcessInstanceId()) + .taskDefinitionKey(hisTask.getTaskDefinitionKey()) + .list(); + + + executionEntity = CommandContextUtil.getExecutionEntityManager(commandContext).findById(taskEntityList.get(0).getExecutionId()); + } + + ExecutionEntity parentExecutionEntity = CommandContextUtil + .getExecutionEntityManager(commandContext).findById(executionEntity.getParentId()); + + /** + * 将计数器 进行 å‰ç§» + */ + int nrOfActiveInstances = (int) parentExecutionEntity.getVariable(RollbackConstants.MultiInstanceConstants.NR_OF_ACTIVE_INSTANCES); + int nrOfCompletedInstances = (int) parentExecutionEntity.getVariable(RollbackConstants.MultiInstanceConstants.NR_OF_COMPLETE_INSTANCES); + + runtimeService.setVariable(parentExecutionEntity.getId(), RollbackConstants.MultiInstanceConstants.NR_OF_ACTIVE_INSTANCES, nrOfActiveInstances + 1); + runtimeService.setVariable(parentExecutionEntity.getId(), RollbackConstants.MultiInstanceConstants.NR_OF_COMPLETE_INSTANCES, nrOfCompletedInstances - 1); + + return parentExecutionEntity; + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy.java new file mode 100644 index 000000000..9dece2934 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy.java @@ -0,0 +1,197 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import com.skyeye.activiti.cmd.rollback.AbstractRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; +import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.variable.api.history.HistoricVariableInstance; +import org.flowable.variable.service.impl.HistoricVariableInstanceQueryImpl; +import org.flowable.variable.service.impl.persistence.entity.VariableInstanceEntity; + +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @ClassName: CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy + * @Author: huangrenhao + * @Description: 已完æˆä¼šç¾ , 下一节点是普通节点 进行回退 + * @CreateTime: 2020/4/21 0021 ä¸Šåˆ 11:06 + * @Version: 1.0 + * {@link ParallelMultiInstanceBehavior} + * {@link SequentialMultiInstanceBehavior} + **/ +@Slf4j +public class CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy extends AbstractRollbackOperateStrategy { + + + private boolean isSequence = false; + + /** + * 会ç¾ä»»åŠ¡ å•ä¸ªæ‰§è¡Œäºº è¡¨è¾¾å¼ + */ + private String assigneeExpr = "assignee"; + + /** + * 会ç¾ä»»åŠ¡ é›†åˆ è¡¨è¾¾å¼ + */ + private String assigneeListExpr = "assigneeList"; + + public CompletedMultiInstanceTaskAndNextDefaultTaskRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void createExecution() { + + if (paramsTemplate.getCurrentTaskElement().getBehavior() instanceof SequentialMultiInstanceBehavior) { + isSequence = true; + } + + // èŽ·å– execution + ExecutionEntity executionEntity = getExecutionEntity(); + + VariableInstanceEntity obj = CommandContextUtil.getVariableService(commandContext) + .findVariableInstanceByExecutionAndName(executionEntity.getProcessInstanceId(), assigneeListExpr); + + if (obj == null || !(obj.getValue() instanceof Collection)) { + throw new FlowableException("没有å¯ç”¨ä¼šç¾å‚æ•°:" + assigneeListExpr); + } + // 会ç¾æ‰§è¡Œäººå˜é‡ + Collection assignees = (Collection) obj.getValue(); + + List<HistoricVariableInstance> historicVariableInstances = CommandContextUtil.getHistoricVariableService() + .findHistoricVariableInstancesByQueryCriteria( + new HistoricVariableInstanceQueryImpl() + .executionId(paramsTemplate.getHisTask().getExecutionId()) + ); + + if (historicVariableInstances.isEmpty()) { + throw new FlowableException("没有å¯ç”¨ä¼šç¾ä»»åŠ¡å‚æ•°"); + } + + // 历å²å˜é‡ + Map<String, Object> hisVarMap = historicVariableInstances.stream().collect(Collectors.toMap(HistoricVariableInstance::getVariableName, item -> item.getValue())); + + if (hisVarMap.containsKey(assigneeExpr) && hisVarMap.containsKey(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER)) { + log.info("å˜é‡æœ‰æ•ˆ"); + } else { + throw new FlowableException("缺少会ç¾ä»»åŠ¡å˜é‡"); + } + + /** + * 串行 最终的 loopCounter assignee 都会是最åŽä¸€ä¸ªäºº + */ + if (isSequence) { + + List<String> assigneeList = (List<String>) runtimeService.getVariableLocal(paramsTemplate.getHisTask().getProcessInstanceId(), assigneeListExpr); + if (!assigneeList.get(assigneeList.size() - 1).equals(paramsTemplate.getHisTask().getAssignee())) { + String msg = "ä¸æ˜¯ä¸²è¡Œæœ€åŽä¸€ä¸ªèŠ‚ç‚¹ï¼Œæ— æ³•è¿›è¡Œå›žé€€ "; + throw new FlowableException(msg); + } + // 替æ¢ä»»åŠ¡æ‰§è¡Œå˜é‡ + assigneeList.set(assigneeList.size() - 1, assignee); + runtimeService.setVariableLocal(paramsTemplate.getHisTask().getProcessInstanceId(), assigneeListExpr, assigneeList); + } + + // æµç¨‹æ‰§è¡Œå˜é‡ + Integer loopCounter = (Integer) hisVarMap.get(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER); + + // 会ç¾ä¸»ä»»åŠ¡ + ExecutionEntity parentExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(executionEntity.getParent()); + + parentExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + parentExecution.setActive(false); + // é…ç½® ä¼šç¾ root execution + parentExecution.setMultiInstanceRoot(true); + + // é…置主 execution å˜é‡ + Map<String, Object> parentVarMap = new HashMap<>(); + parentVarMap.put(RollbackConstants.MultiInstanceConstants.NR_OF_ACTIVE_INSTANCES, 1); + parentVarMap.put(RollbackConstants.MultiInstanceConstants.NR_OF_COMPLETE_INSTANCES, assignees.size() - 1); + parentVarMap.put(RollbackConstants.MultiInstanceConstants.NR_OF_INSTANCE, assignees.size()); + parentExecution.setVariablesLocal(parentVarMap); + + if (isSequence) { + log.info("创建 串行 会ç¾ä»»åŠ¡"); + createSequenceMultiInstance(parentExecution, assignees); + } else { + log.info("创建 并行 会ç¾ä»»åŠ¡"); + createParallelMultiInstance(parentExecution, assignees, loopCounter); + + } + + removeHisTask(paramsTemplate.getHisTask()); + } + + private void createSequenceMultiInstance(ExecutionEntity parentExecution, Collection assignees) { + + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(parentExecution); + + Map<String, Object> varMap = new HashMap<>(); + varMap.put(assigneeExpr, assignee); + varMap.put(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER, assignees.size() - 1); + newExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + + newExecution.setVariablesLocal(varMap); + newExecution.setActive(true); + CommandContextUtil.getAgenda(commandContext).planContinueMultiInstanceOperation(newExecution, parentExecution, assignees.size() - 1); + + } + + /** + * 创建并行会ç¾ä»»åŠ¡ + * + * @param parentExecution + * @param loopCounter + */ + private void createParallelMultiInstance(ExecutionEntity parentExecution, Collection assignees, Integer loopCounter) { + + for (int i = 0; i < assignees.size(); i++) { + if (i != loopCounter) { + Map<String, Object> varMap = new HashMap<>(); + varMap.put(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER, i); + varMap.put(assigneeExpr, "已完æˆä»»åŠ¡"); + +// // 创建 新执行任务 + ExecutionEntity newExecution = newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(parentExecution); + newExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + newExecution.setActive(false); + + newExecution.setVariablesLocal(varMap); + +// +// CommandContextUtil.getExecutionEntityManager(commandContext) +// .update(newExecution); + } else { + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(parentExecution); + newExecution.setCurrentFlowElement(paramsTemplate.getCurrentTaskElement()); + + Map<String, Object> varMap = new HashMap<>(); + + varMap.put(assigneeExpr, assignee); + varMap.put(RollbackConstants.MultiInstanceConstants.LOOP_COUNTER, i); + + newExecution.setVariablesLocal(varMap); + newExecution.setActive(true); + + CommandContextUtil.getAgenda(commandContext).planContinueMultiInstanceOperation(newExecution, parentExecution, loopCounter); + } + } + + + } + + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/DefaultTaskNextGatewayRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/DefaultTaskNextGatewayRollbackOperateStrategy.java new file mode 100644 index 000000000..e3028f2a9 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/DefaultTaskNextGatewayRollbackOperateStrategy.java @@ -0,0 +1,56 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.task.api.history.HistoricTaskInstance; + +import com.skyeye.activiti.cmd.rollback.AbstractGateWayRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; + +import lombok.extern.slf4j.Slf4j; + +/** + * @ClassName: DefaultTaskNextGatewayRollbackOperateStrategy + * @Author: huangrenhao + * @Description: 处ç†å¤šçº§ç½‘å…³ + * @CreateTime: 2020/4/16 0016 ä¸Šåˆ 11:45 + * @Version: + **/ +@Slf4j +public class DefaultTaskNextGatewayRollbackOperateStrategy extends AbstractGateWayRollbackOperateStrategy { + + public DefaultTaskNextGatewayRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void createExecution() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + // 获å–æ£åœ¨æ‰§è¡Œ execution + ExecutionEntity executionEntity = getExecutionEntity(); + + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(executionEntity.getParent()); + // 创建新任务 + createExecution(newExecution); + // 特殊处ç†å¹¶è¡Œç½‘å…³ + processGateway(executionEntity.getParent()); + + // 移除历å²ä»»åŠ¡ + removeHisTask(hisTask); + + } + + + @Override + public void setAssignee() { + // 进行任务执行人é…ç½®,之åŽä½¿ç”¨å…¨å±€ç›‘å¬å‡ºå‘æ›´æ–° + super.setAssignee(); + String type = RollbackConstants.TASK_TYPE_PREFIX_KEY + paramsTemplate.getHisTask().getProcessInstanceId() + + paramsTemplate.getHisTask().getTaskDefinitionKey(); + variables.put(type, DefaultTaskNextGatewayRollbackOperateStrategy.class.getSimpleName()); + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextCallActivityRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextCallActivityRollbackOperateStrategy.java new file mode 100644 index 000000000..81999f209 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextCallActivityRollbackOperateStrategy.java @@ -0,0 +1,149 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import com.skyeye.activiti.cmd.rollback.AbstractRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; +import lombok.extern.slf4j.Slf4j; +import org.flowable.bpmn.model.CallActivity; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.task.api.Task; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.HistoricTaskInstanceEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * + * @ClassName: NextCallActivityRollbackOperateStrategy + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:27 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Slf4j +public class NextCallActivityRollbackOperateStrategy extends AbstractRollbackOperateStrategy { + + /** + * 下一节点 callActivity + */ + private CallActivity callActivity; + + private List<ExecutionEntity> callActivityExecutionList; + + private ExecutionEntity callActivityProcess; + + public NextCallActivityRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void existNextFinishedTask() { + + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + Map<String, CallActivity> callActivityMap = paramsTemplate.getCallActivityMap(); + String key = callActivityMap.keySet().iterator().next(); + this.callActivity = callActivityMap.get(key); + + // 下一节点callActivityçš„ flowId + callActivityExecutionList = CommandContextUtil.getExecutionEntityManager(commandContext) + .findExecutionsByParentExecutionAndActivityIds(hisTask.getProcessInstanceId(), Collections.singletonList(callActivity.getId())); + + // callActivity 在 父级æµç¨‹çš„ executionId = åæµç¨‹çš„ processInstanceId + ExecutionEntity executionEntity = callActivityExecutionList.get(0); + + // åæµç¨‹ + callActivityProcess = CommandContextUtil.getExecutionEntityManager(commandContext) + .findSubProcessInstanceBySuperExecutionId(executionEntity.getId()); + + List<HistoricTaskInstance> hisTaskList = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTaskInstancesByQueryCriteria( + (HistoricTaskInstanceQueryImpl) new HistoricTaskInstanceQueryImpl() + .finished() + .processInstanceId(callActivityProcess.getId()) + ); + + if (!hisTaskList.isEmpty()) { + throw new FlowableException("åæµç¨‹å·²ç»å…·æœ‰å®Œæˆçš„任务,æµç¨‹æ— 法回退"); + } + } + + @Override + public void setAssignee() { + // 进行任务执行人é…ç½®,之åŽä½¿ç”¨å…¨å±€ç›‘å¬å‡ºå‘æ›´æ–° + super.setAssignee(); + String type = RollbackConstants.TASK_TYPE_PREFIX_KEY + paramsTemplate.getHisTask().getProcessInstanceId() + paramsTemplate.getHisTask().getTaskDefinitionKey(); + variables.put(type, NextCallActivityRollbackOperateStrategy.class.getSimpleName()); + } + + @Override + public void createExecution() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + ExecutionEntity executionEntity = CommandContextUtil.getExecutionEntityManager(commandContext) + .findById(hisTask.getExecutionId()); + + if (null == executionEntity) { + log.info("没有找到execution"); + executionEntity = callActivityExecutionList.get(0); + } + + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext) + .createChildExecution(executionEntity.getParent()); + + // 创建新任务 + createExecution(newExecution); + // 移除历å²ä»»åŠ¡ + removeHisTask(hisTask); + } + + @Override + public void deleteRuntimeTasks() { + + ExecutionEntity parentExecution = callActivityExecutionList.get(0); + + + // 清ç†åæµç¨‹ + cleanCallActivityProcessInstance(callActivityProcess); + // 清ç†ä¸»æµç¨‹è®°å½• + CommandContextUtil.getExecutionEntityManager(commandContext) + .delete(parentExecution); + + } + + /** + * // æ— æ•ˆæ“作 + * CommandContextUtil.getExecutionEntityManager(commandContext) + * .deleteProcessInstance(callActivityProcess.getId(), "进行æµç¨‹æ’¤å›ž", false); + * æ¸…ç† è°ƒç”¨åæµç¨‹ ç›¸å…³æ•°æ® + * + * @param processInstance + */ + private void cleanCallActivityProcessInstance(ExecutionEntity processInstance) { + // 移除æ£åœ¨è¿è¡Œä»»åŠ¡ä¿¡æ¯ + List<Task> list = CommandContextUtil.getTaskService(commandContext) + .createTaskQuery() + .processInstanceId(processInstance.getId()) + .list(); + list.forEach(obj->removeRuntimeTaskOperate((TaskEntity) obj)); + + // 移除历å²ä»»åŠ¡ä¿¡æ¯ + List<HistoricTaskInstanceEntity> historicTaskInstanceList = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTasksByProcessInstanceId(processInstance.getId()); + historicTaskInstanceList.forEach(obj->CommandContextUtil.getHistoricTaskService(commandContext).deleteHistoricTask(obj)); + + // 移除 åæµç¨‹å®žä¾‹ + CommandContextUtil.getIdentityLinkService(commandContext).deleteIdentityLinksByProcessInstanceId(processInstance.getId()); + CommandContextUtil.getVariableService(commandContext).deleteVariablesByExecutionId(processInstance.getId()); + CommandContextUtil.getExecutionEntityManager(commandContext).delete(processInstance.getId()); + } + + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextDefaultUserTaskRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextDefaultUserTaskRollbackOperateStrategy.java new file mode 100644 index 000000000..4827cb631 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextDefaultUserTaskRollbackOperateStrategy.java @@ -0,0 +1,50 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.task.api.history.HistoricTaskInstance; + +import com.skyeye.activiti.cmd.rollback.AbstractRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; + +/** + * + * @ClassName: NextDefaultUserTaskRollbackOperateStrategy + * @Description: 普通节点 ,兼容嵌入å¼åæµç¨‹ + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:29 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public class NextDefaultUserTaskRollbackOperateStrategy extends AbstractRollbackOperateStrategy { + + public NextDefaultUserTaskRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void createExecution() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + // 获å–æ£åœ¨æ‰§è¡Œ execution + ExecutionEntity executionEntity = getExecutionEntity(); + + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext).createChildExecution(executionEntity.getParent()); + // 创建新任务 + createExecution(newExecution); + // 移除历å²ä»»åŠ¡ + removeHisTask(hisTask); + } + + @Override + public void setAssignee() { + // 进行任务执行人é…ç½®,之åŽä½¿ç”¨å…¨å±€ç›‘å¬å‡ºå‘æ›´æ–° + super.setAssignee(); + String type = RollbackConstants.TASK_TYPE_PREFIX_KEY + paramsTemplate.getHisTask().getProcessInstanceId() + + paramsTemplate.getHisTask().getTaskDefinitionKey(); + variables.put(type, NextDefaultUserTaskRollbackOperateStrategy.class.getSimpleName()); + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextSubProcessRollbackOperateStrategy.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextSubProcessRollbackOperateStrategy.java new file mode 100644 index 000000000..a15649ca9 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/impl/NextSubProcessRollbackOperateStrategy.java @@ -0,0 +1,176 @@ +package com.skyeye.activiti.cmd.rollback.impl; + +import com.skyeye.activiti.cmd.rollback.AbstractRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.RollbackParamsTemplate; +import org.flowable.bpmn.model.SubProcess; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.engine.impl.ActivityInstanceQueryImpl; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.CommandContextUtil; +import org.flowable.engine.runtime.ActivityInstance; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.task.service.impl.HistoricTaskInstanceQueryImpl; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.*; + +/** + * + * @ClassName: NextSubProcessRollbackOperateStrategy + * @Description: 下一节点是 嵌入å¼åæµç¨‹ + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:31 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public class NextSubProcessRollbackOperateStrategy extends AbstractRollbackOperateStrategy { + + private Logger LOGGER = LoggerFactory.getLogger(NextSubProcessRollbackOperateStrategy.class); + + /** + * 嵌入åæµç¨‹ä¸æ‰€æœ‰èŠ‚点IDé›†åˆ + */ + private Set<String> subProcessItemKeySet = new HashSet<>(); + + private SubProcess subProcess; + + public NextSubProcessRollbackOperateStrategy(RollbackParamsTemplate paramsTemplate) { + super(paramsTemplate); + } + + @Override + public void existNextFinishedTask() { + Map<String, SubProcess> subProcessMap = paramsTemplate.getSubProcessMap(); + List<HistoricTaskInstance> historicTaskInstances = CommandContextUtil.getHistoricTaskService(commandContext) + .findHistoricTaskInstancesByQueryCriteria( + (HistoricTaskInstanceQueryImpl) new HistoricTaskInstanceQueryImpl() + .taskCompletedAfter(paramsTemplate.getHisTask().getEndTime()) + .finished() + ); + + String key = subProcessMap.keySet().iterator().next(); + this.subProcess = subProcessMap.get(key); + + subProcess.getFlowElements().forEach(obj -> subProcessItemKeySet.add(obj.getId())); + if (!historicTaskInstances.isEmpty()) { + historicTaskInstances.forEach(obj -> { + if (subProcessItemKeySet.contains(obj.getTaskDefinitionKey())) { + LOGGER.error("出现已完æˆä»»åŠ¡ï¼Œæ— 法进行æµç¨‹èŠ‚点撤回: [" + obj + "]"); + throw new FlowableException("出现已完æˆä»»åŠ¡ï¼Œæ— 法进行æµç¨‹èŠ‚点撤回"); + } + }); + } + + } + + @Override + public void setAssignee() { + // 进行任务执行人é…ç½®,之åŽä½¿ç”¨å…¨å±€ç›‘å¬å‡ºå‘æ›´æ–° + super.setAssignee(); + String type = RollbackConstants.TASK_TYPE_PREFIX_KEY + paramsTemplate.getHisTask().getProcessInstanceId() + paramsTemplate.getHisTask().getTaskDefinitionKey(); + variables.put(type, NextSubProcessRollbackOperateStrategy.class.getSimpleName()); + } + + + @Override + public void createExecution() { + + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + ExecutionEntity executionEntity = CommandContextUtil.getExecutionEntityManager(commandContext).findById(hisTask.getExecutionId()); + + /** + * subProcess 作为下一节点的时候,hisTaskçš„execution会被关é—调。所以需è¦é‡æ–°åˆ›å»º + */ + if (null == executionEntity) { + LOGGER.info("hisTask:execution 为 null"); + + List<ExecutionEntity> executionEntityList = CommandContextUtil + .getExecutionEntityManager(commandContext) + .findExecutionsByParentExecutionAndActivityIds(hisTask.getProcessInstanceId(), paramsTemplate.getNextFlowIdList()); + if (executionEntityList.isEmpty()) { + throw new FlowableException("没有找到临近节点"); + } + executionEntity = executionEntityList.get(0); + } + // 创建主线 + ExecutionEntity newExecution = CommandContextUtil.getExecutionEntityManager(commandContext).createChildExecution(executionEntity.getParent()); + + // 创建新任务 + createExecution(newExecution); + // 移除历å²ä»»åŠ¡ + removeHisTask(hisTask); + } + + @Override + public void deleteHisActInstance() { + + List<ActivityInstance> activityInstanceEntityList = CommandContextUtil.getActivityInstanceEntityManager(commandContext) + .findActivityInstancesByQueryCriteria( + new ActivityInstanceQueryImpl() + .processInstanceId(paramsTemplate.getHisTask().getProcessInstanceId()) + ); + + + List<String> ids = new ArrayList<>(); + activityInstanceEntityList.forEach(obj -> { + // 时间大于 任务创建时间 之åŽçº¿æ¡ + if (obj.getStartTime().getTime() > paramsTemplate.getHisTask().getCreateTime().getTime() + && subProcessItemKeySet.contains(obj.getActivityId())) { + ids.add(obj.getId()); + } + // 当å‰ä»»åŠ¡çš„连线 ID + if (paramsTemplate.getHisTask().getTaskDefinitionKey().equals(obj.getActivityId()) + && obj.getEndTime().getTime() > paramsTemplate.getHisTask().getCreateTime().getTime() + ) { + ids.add(obj.getId()); + } + }); + + LOGGER.debug("移除历å²ä»»åŠ¡è¿žçº¿"); + ids.forEach(obj -> historyActivityInstanceMapper.delete(obj)); + + } + + @Override + public void deleteRuntimeTasks() { + HistoricTaskInstance hisTask = paramsTemplate.getHisTask(); + + List<TaskEntity> taskEntityList = CommandContextUtil.getTaskService(commandContext).findTasksByProcessInstanceId(hisTask.getProcessInstanceId()); + + taskEntityList.forEach(obj -> { + if (subProcessItemKeySet.contains(obj.getTaskDefinitionKey())) { + LOGGER.info("移除æ£åœ¨æ‰§è¡Œçš„下一节点任务"); + // 移除任务 + removeRuntimeTaskOperate(obj); + } + }); + + // èŽ·å– subProcess çš„ ExecutionEntity + Collection<ExecutionEntity> executionEntities = CommandContextUtil + .getExecutionEntityManager(commandContext) + .findExecutionsByParentExecutionAndActivityIds(hisTask.getProcessInstanceId(), Collections.singletonList(subProcess.getId())); + + executionEntities.forEach(obj -> { + LOGGER.info("移除 subProcess 层级execution"); + List<ExecutionEntity> children = CommandContextUtil + .getExecutionEntityManager(commandContext) + .findChildExecutionsByParentExecutionId(obj.getId()); + + // 移除级è”å节点 + children.forEach(item -> CommandContextUtil + .getExecutionEntityManager(commandContext) + .delete(item)); + + // 移除 subProcess 顶级 + CommandContextUtil + .getExecutionEntityManager(commandContext) + .delete(obj); + }); + + } + +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/listeners/RollbackEventListener.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/listeners/RollbackEventListener.java new file mode 100644 index 000000000..efd0188c3 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/cmd/rollback/listeners/RollbackEventListener.java @@ -0,0 +1,78 @@ +package com.skyeye.activiti.cmd.rollback.listeners; + +import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType; +import org.flowable.common.engine.api.delegate.event.FlowableEvent; +import org.flowable.common.engine.api.delegate.event.FlowableEventListener; +import org.flowable.common.engine.impl.event.FlowableEntityEventImpl; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.task.service.impl.persistence.entity.TaskEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import com.skyeye.activiti.cmd.rollback.RollbackConstants; +import com.skyeye.activiti.cmd.rollback.impl.DefaultTaskNextGatewayRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.impl.NextCallActivityRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.impl.NextDefaultUserTaskRollbackOperateStrategy; +import com.skyeye.activiti.cmd.rollback.impl.NextSubProcessRollbackOperateStrategy; +import com.skyeye.common.util.SpringUtils; + +/** + * + * @ClassName: RollbackEventListener + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:24 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Component +public class RollbackEventListener implements FlowableEventListener { + + private static Logger LOGGER = LoggerFactory.getLogger(RollbackEventListener.class); + + @Override + public void onEvent(FlowableEvent event) { + if (FlowableEngineEventType.TASK_CREATED.name().equals(event.getType().name())) { + TaskEntity taskEntity = (TaskEntity)((FlowableEntityEventImpl)event).getEntity(); + + RuntimeService runtimeService = SpringUtils.getBean(RuntimeService.class); + TaskService taskService = SpringUtils.getBean(TaskService.class); + + String key = RollbackConstants.ASSIGNEE_PREFIX_KEY + taskEntity.getProcessInstanceId() + + taskEntity.getTaskDefinitionKey(); + String type = RollbackConstants.TASK_TYPE_PREFIX_KEY + taskEntity.getProcessInstanceId() + + taskEntity.getTaskDefinitionKey(); + + Object assigneeValue = runtimeService.getVariable(taskEntity.getExecutionId(), key); + Object assigneeType = runtimeService.getVariable(taskEntity.getExecutionId(), type); + if (assigneeValue != null && assigneeType != null) { + LOGGER.info("回滚任务处ç†"); + if (NextDefaultUserTaskRollbackOperateStrategy.class.getSimpleName().equals(assigneeType) + || NextSubProcessRollbackOperateStrategy.class.getSimpleName().equals(assigneeType) + || NextCallActivityRollbackOperateStrategy.class.getSimpleName().equals(assigneeType) + || DefaultTaskNextGatewayRollbackOperateStrategy.class.getSimpleName().equals(assigneeType)) { + LOGGER.info("设置普通任务执行人"); + taskService.setAssignee(taskEntity.getId(), (String)assigneeValue); + } + } + } + } + + @Override + public boolean isFailOnException() { + return false; + } + + @Override + public boolean isFireOnTransactionLifecycleEvent() { + return false; + } + + @Override + public String getOnTransaction() { + return null; + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActAssignee.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActAssignee.java deleted file mode 100644 index 2278aa6bb..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActAssignee.java +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import javax.persistence.*; - -@Table(name = "act_assignee") -public class ActAssignee { - @Id - @Column(name = "id") - private String id; - - /** - * 节点id - */ - private String sid; - - /** - * 办ç†äºº - */ - private String assignee; - - /** - * 候选组(角色) - */ - @Column(name = "role_id") - private String roleId; - - /** - * 办ç†äººç±»åž‹1办ç†äºº2候选人3组 - */ - @Column(name = "assignee_type") - private Integer assigneeType; - - /** - * 节点å称 - */ - @Column(name = "activti_name") - private String activtiName; - - /** - * @return id - */ - public String getId() { - return id; - } - - /** - * @param id - */ - public void setId(String id) { - this.id = id == null ? null : id.trim(); - } - - /** - * 获å–节点id - * - * @return sid - 节点id - */ - public String getSid() { - return sid; - } - - /** - * 设置节点id - * - * @param sid - * 节点id - */ - public void setSid(String sid) { - this.sid = sid == null ? null : sid.trim(); - } - - /** - * 获å–办ç†äºº - * - * @return assignee - 办ç†äºº - */ - public String getAssignee() { - return assignee; - } - - /** - * 设置办ç†äºº - * - * @param assignee - * 办ç†äºº - */ - public void setAssignee(String assignee) { - this.assignee = assignee == null ? null : assignee.trim(); - } - - /** - * 获å–候选组(角色) - * - * @return role_id - 候选组(角色) - */ - public String getRoleId() { - return roleId; - } - - /** - * 设置候选组(角色) - * - * @param roleId - * 候选组(角色) - */ - public void setRoleId(String roleId) { - this.roleId = roleId == null ? null : roleId.trim(); - } - - /** - * 获å–办ç†äººç±»åž‹1办ç†äºº2候选人3组 - * - * @return assignee_type - 办ç†äººç±»åž‹1办ç†äºº2候选人3组 - */ - public Integer getAssigneeType() { - return assigneeType; - } - - /** - * 设置办ç†äººç±»åž‹1办ç†äºº2候选人3组 - * - * @param assigneeType - * 办ç†äººç±»åž‹1办ç†äºº2候选人3组 - */ - public void setAssigneeType(Integer assigneeType) { - this.assigneeType = assigneeType; - } - - /** - * 获å–节点å称 - * - * @return activti_name - 节点å称 - */ - public String getActivtiName() { - return activtiName; - } - - /** - * 设置节点å称 - * - * @param activtiName - * 节点å称 - */ - public void setActivtiName(String activtiName) { - this.activtiName = activtiName == null ? null : activtiName.trim(); - } - - public ActAssignee() { - } - - public ActAssignee(String sid) { - this.sid = sid; - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActDeployment.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActDeployment.java deleted file mode 100644 index d62d12e63..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActDeployment.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import java.io.Serializable; -import java.util.Date; -import lombok.Getter; -import lombok.Setter; -import org.activiti.engine.repository.Deployment; - -/** - * - * @author å«å¿—强 - * - */ -@Getter -@Setter -public class ActDeployment implements Serializable { - private static final long serialVersionUID = 5337694999055428654L; - private String id; - private String name; - private Date deploymentTime; - private String category; - private String tenantId; - - public ActDeployment() { - } - - public ActDeployment(Deployment deployment) { - this.id = deployment.getId(); - this.name = deployment.getName(); - this.deploymentTime = deployment.getDeploymentTime(); - this.category = deployment.getCategory(); - this.tenantId = deployment.getTenantId(); - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActModel.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActModel.java deleted file mode 100644 index b55426ee2..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ActModel.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import java.util.Date; -import lombok.Getter; -import lombok.Setter; -import org.activiti.engine.repository.Model; - -/** - * - * @author å«å¿—强 模型列表 - */ -@Getter -@Setter -public class ActModel { - - private String id; - private String name; - private String key; - private String category; - private Date createTime; - private Date lastUpdateTime; - private Integer version; - private String metaInfo; - private String deploymentId; - private String tenantId; - private boolean hasEditorSource; - - public ActModel() { - } - - public ActModel(Model model) { - this.id = model.getId(); - this.name = model.getName(); - this.key = model.getKey(); - this.category = model.getCategory(); - this.createTime = model.getCreateTime(); - this.lastUpdateTime = model.getLastUpdateTime(); - this.version = model.getVersion(); - this.metaInfo = model.getMetaInfo(); - this.deploymentId = model.getDeploymentId(); - this.tenantId = model.getTenantId(); - this.hasEditorSource = model.hasEditorSource(); - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/BaseTask.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/BaseTask.java deleted file mode 100644 index f7d5c42dc..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/BaseTask.java +++ /dev/null @@ -1,227 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ - -package com.skyeye.activiti.entity; - -import javax.persistence.*; -import java.io.Serializable; -import java.util.Date; - -/** - * - * @ClassName: BaseTask - * @Description: 工作æµåŸºç¡€ä»»åŠ¡ç±» - * @author: skyeye云系列--å«å¿—强 - * @date: 2021/7/4 17:38 - * - * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. - * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 - */ -@MappedSuperclass -public abstract class BaseTask implements Serializable { - - private static final long serialVersionUID = 4551215350498340711L; - - @Id - @GeneratedValue(strategy = GenerationType.AUTO, generator = "JDBC") - protected String id; - - /** - * @return id - */ - public String getId() { - return id; - } - - /** - * @param id - */ - public void setId(String id) { - this.id = id == null ? null : id.trim(); - } - - @Column(name = "user_id") - protected String userId; - - @Column(name = "user_name") - protected String userName; - - @Column(name = "process_instance_Id") - protected String processInstanceId; - - protected String status; - - @Column(name = "create_date") - protected Date createDate; - - @Column(name = "create_by") - protected String createBy; - - @Column(name = "update_date") - protected Date updateDate; - - @Column(name = "update_by") - protected String updateBy; - - protected String reason; - - /** - * å®žæ—¶èŠ‚ç‚¹ä¿¡æ¯ - */ - protected String taskName; - - private String urlpath; - - private Integer submittimes; - - /** - * @return user_id - */ - public String getUserId() { - return userId; - } - - /** - * @param userId - */ - public void setUserId(String userId) { - this.userId = userId == null ? null : userId.trim(); - } - - /** - * @return user_name - */ - public String getUserName() { - return userName; - } - - /** - * @param userName - */ - public void setUserName(String userName) { - this.userName = userName == null ? null : userName.trim(); - } - - /** - * @return reason - */ - public String getReason() { - return reason; - } - - /** - * @param reason - */ - public void setReason(String reason) { - this.reason = reason == null ? null : reason.trim(); - } - - /** - * @return process_instance_Id - */ - public String getProcessInstanceId() { - return processInstanceId; - } - - /** - * @param processInstanceId - */ - public void setProcessInstanceId(String processInstanceId) { - this.processInstanceId = processInstanceId == null ? null : processInstanceId.trim(); - } - - /** - * @return status - */ - public String getStatus() { - return status; - } - - /** - * @param status - */ - public void setStatus(String status) { - this.status = status == null ? null : status.trim(); - } - - /** - * @return create_date - */ - public Date getCreateDate() { - return createDate; - } - - /** - * @param createDate - */ - public void setCreateDate(Date createDate) { - this.createDate = createDate; - } - - /** - * @return create_by - */ - public String getCreateBy() { - return createBy; - } - - /** - * @param createBy - */ - public void setCreateBy(String createBy) { - this.createBy = createBy == null ? null : createBy.trim(); - } - - /** - * @return update_date - */ - public Date getUpdateDate() { - return updateDate; - } - - /** - * @param updateDate - */ - public void setUpdateDate(Date updateDate) { - this.updateDate = updateDate; - } - - /** - * @return update_by - */ - public String getUpdateBy() { - return updateBy; - } - - /** - * @param updateBy - */ - public void setUpdateBy(String updateBy) { - this.updateBy = updateBy == null ? null : updateBy.trim(); - } - - public String getTaskName() { - return taskName; - } - - public void setTaskName(String taskName) { - this.taskName = taskName; - } - - public String getUrlpath() { - return urlpath; - } - - public void setUrlpath(String urlpath) { - this.urlpath = urlpath; - } - - public Integer getSubmittimes() { - return submittimes; - } - - public void setSubmittimes(Integer submittimes) { - this.submittimes = submittimes; - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/DeploymentResponse.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/DeploymentResponse.java deleted file mode 100644 index d7222d25a..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/DeploymentResponse.java +++ /dev/null @@ -1,72 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import com.fasterxml.jackson.databind.annotation.JsonSerialize; -import org.activiti.engine.repository.Deployment; -import org.activiti.rest.common.util.DateToStringSerializer; -import java.util.Date; - -/** - * - * @author å«å¿—强 - * - */ -public class DeploymentResponse { - - private String id; - private String name; - @JsonSerialize(using = DateToStringSerializer.class, as = Date.class) - private Date deploymentTime; - private String category; - private String tenantId; - - public DeploymentResponse(Deployment deployment) { - setId(deployment.getId()); - setName(deployment.getName()); - setDeploymentTime(deployment.getDeploymentTime()); - setCategory(deployment.getCategory()); - setTenantId(deployment.getTenantId()); - } - - 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 Date getDeploymentTime() { - return deploymentTime; - } - - public void setDeploymentTime(Date deploymentTime) { - this.deploymentTime = deploymentTime; - } - - public String getCategory() { - return category; - } - - public void setCategory(String category) { - this.category = category; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - public String getTenantId() { - return tenantId; - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/LeaveOpinion.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/LeaveOpinion.java deleted file mode 100644 index 1edf9b329..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/LeaveOpinion.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import java.io.Serializable; -import java.util.Date; -import lombok.Getter; -import lombok.Setter; - -/** - * - * @author å«å¿—强 请å‡æµç¨‹ å®¡æ‰¹ä¿¡æ¯ - */ -@Getter -@Setter -public class LeaveOpinion implements Serializable { - - private static final long serialVersionUID = -6536860710977259314L; - // 审批人id - private String opId; - // 审批人姓å - private String opName; - // 审批æ„è§ - private String opinion; - // 审批时间 - private Date createTime; - // 是å¦é€šè¿‡ - private boolean flag; - // æµç¨‹id - private String taskId; - -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ProcessDefinition.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ProcessDefinition.java deleted file mode 100644 index 6507b99ba..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/ProcessDefinition.java +++ /dev/null @@ -1,51 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -/** - * - * @author å«å¿—强 æµç¨‹å®šä¹‰å®žä½“ - */ -@Getter -@Setter -@ToString -public class ProcessDefinition { - private String id; - private String category; - private String name; - private String key; - private String description; - private int version; - private String resourceName; - private String deploymentId; - private String diagramResourceName; - private boolean hasStartFormKey; - private boolean hasGraphicalNotation; - private boolean isSuspended; - private String tenantId; - - public ProcessDefinition() { - } - - public ProcessDefinition(org.activiti.engine.repository.ProcessDefinition p) { - this.id = p.getId(); - this.category = p.getCategory(); - this.name = p.getName(); - this.key = p.getKey(); - this.description = p.getDescription(); - this.version = p.getVersion(); - this.resourceName = p.getResourceName(); - this.deploymentId = p.getDeploymentId(); - this.diagramResourceName = p.getDiagramResourceName(); - this.hasStartFormKey = p.hasStartFormKey(); - this.hasGraphicalNotation = p.hasGraphicalNotation(); - this.isSuspended = p.isSuspended(); - this.tenantId = p.getTenantId(); - - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/Task.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/Task.java deleted file mode 100644 index 000c9696d..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/Task.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import java.util.Date; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; - -/** - * - * @author å«å¿—强 æµç¨‹ä»»åŠ¡ - */ -@Getter -@Setter -@ToString -public class Task { - private String id; - private String name; - private Date createTime; - private String assignee; - private String processInstanceId;// æµç¨‹å®žä¾‹id - private String processDefinitionId;// æµç¨‹å®šä¹‰id - private String description; - private String category; - - private String userName; - private String reason; - private String urlpath; - - public Task() { - } - - public Task(org.activiti.engine.task.Task t) { - this.id = t.getId(); - this.name = t.getName(); - this.createTime = t.getCreateTime(); - this.assignee = t.getAssignee(); - this.processInstanceId = t.getProcessInstanceId(); - this.processDefinitionId = t.getProcessDefinitionId(); - this.description = t.getDescription(); - this.category = t.getCategory(); - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/UserLeave.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/UserLeave.java deleted file mode 100644 index 840487c61..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/entity/UserLeave.java +++ /dev/null @@ -1,126 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.entity; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import javax.persistence.*; - -/** - * - * @author å«å¿—强 - * - */ -@Table(name = "user_leave") -public class UserLeave extends BaseTask { - - private static final long serialVersionUID = 9219826375746625710L; - - @Id - @GeneratedValue(strategy = GenerationType.AUTO, generator = "JDBC") - protected String id; - - /** - * @return id - */ - @Override - public String getId() { - return id; - } - - /** - * @param id - */ - @Override - public void setId(String id) { - this.id = id == null ? null : id.trim(); - } - - private Integer days; - - @Column(name = "begin_time") - private Date beginTime; - - @Column(name = "end_time") - private Date endTime; - - @Column(name = "process_instance_Id") - private String processInstanceId; - - private String status; - - @Column(name = "create_date") - private Date createDate; - - @Column(name = "create_by") - private String createBy; - - @Column(name = "update_date") - private Date updateDate; - - @Column(name = "update_by") - private String updateBy; - - // ***å®žæ—¶èŠ‚ç‚¹ä¿¡æ¯ - @Transient - private String taskName; - - // 请å‡å•å®¡æ ¸ä¿¡æ¯ - private List<LeaveOpinion> opinionList = new ArrayList<>(); - - public void leaveOpAdd(LeaveOpinion leaveOpinion) { - this.opinionList.add(leaveOpinion); - } - - public void leaveOpAddAll(List<LeaveOpinion> leaveOpinionList) { - this.opinionList.addAll(leaveOpinionList); - } - - public List<LeaveOpinion> getOpinionList() { - return opinionList; - } - - public void setOpinionList(List<LeaveOpinion> opinionList) { - this.opinionList = opinionList; - } - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - /** - * @return days - */ - public Integer getDays() { - return days; - } - - /** - * @param days - */ - public void setDays(Integer days) { - this.days = days; - } - - public Date getBeginTime() { - return beginTime; - } - - public void setBeginTime(Date beginTime) { - this.beginTime = beginTime; - } - - public Date getEndTime() { - return endTime; - } - - public void setEndTime(Date endTime) { - this.endTime = endTime; - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/factory/ActivitiFactory.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/factory/ActivitiFactory.java index f680f4cf2..88e43a4fb 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/factory/ActivitiFactory.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/factory/ActivitiFactory.java @@ -16,8 +16,8 @@ import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.ActModelDao; import com.skyeye.eve.dao.SysEnclosureDao; import com.skyeye.exception.CustomException; -import org.activiti.engine.RuntimeService; import org.apache.commons.lang3.StringUtils; +import org.flowable.engine.RuntimeService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/FlowImgService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/FlowImgService.java new file mode 100644 index 000000000..e34fbd15e --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/FlowImgService.java @@ -0,0 +1,305 @@ +package com.skyeye.activiti.flowimg; + +import com.skyeye.activiti.flowimg.img.CustomProcessDiagramGenerator; +import org.apache.commons.lang3.StringUtils; +import org.flowable.bpmn.model.BpmnModel; +import org.flowable.bpmn.model.FlowElement; +import org.flowable.bpmn.model.FlowNode; +import org.flowable.bpmn.model.SequenceFlow; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.history.HistoricActivityInstance; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.runtime.Execution; +import org.flowable.image.ProcessDiagramGenerator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Description: FlowImgService + * @Author: liyang + * @Date: 2019/10/15 0015 9:32 + * @Version 1.0 + */ +@Component +public class FlowImgService { + private static final Logger LOG = LoggerFactory.getLogger(FlowImgService.class); + + @Autowired + private RuntimeService runtimeService; + + @Autowired + private RepositoryService repositoryService; + + @Autowired + private HistoryService historyService; + + /** + * 通过æµç¨‹å®žä¾‹ID获å–历å²æµç¨‹å®žä¾‹ + * + * @param procInstId + * @return + */ + public HistoricProcessInstance getHistoricProcInst(String procInstId) { + return historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId).singleResult(); + } + + /** + * 通过æµç¨‹å®žä¾‹ID获å–æµç¨‹ä¸å·²ç»æ‰§è¡Œçš„节点,按照执行先åŽé¡ºåºæŽ’åº + * + * @param procInstId + * @return + */ + public List<HistoricActivityInstance> getHistoricActivityInstAsc(String procInstId) { + return historyService.createHistoricActivityInstanceQuery().processInstanceId(procInstId) + .orderByHistoricActivityInstanceId().asc().list(); + } + + /** + * 通过æµç¨‹å®žä¾‹ID获å–æµç¨‹ä¸æ£åœ¨æ‰§è¡Œçš„节点 + * + * @param procInstId + * @return + */ + public List<Execution> getRunningActivityInst(String procInstId) { + return runtimeService.createExecutionQuery().processInstanceId(procInstId).list(); + } + + /** + * 通过æµç¨‹å®žä¾‹ID获å–å·²ç»å®Œæˆçš„历å²æµç¨‹å®žä¾‹ + * + * @param procInstId + * @return + */ + public List<HistoricProcessInstance> getHistoricFinishedProcInst(String procInstId) { + return historyService.createHistoricProcessInstanceQuery().processInstanceId(procInstId).finished().list(); + } + + /** + * 获å–å·²æµç»çš„æµç¨‹çº¿ï¼Œéœ€è¦é«˜äº®æ˜¾ç¤ºé«˜äº®æµç¨‹å·²å‘生æµè½¬çš„线idé›†åˆ + * + * @param bpmnModel + * @param historicActivityInstanceList + * @return + */ + public List<String> getHighLightedFlows(BpmnModel bpmnModel, + List<HistoricActivityInstance> historicActivityInstanceList) { + // å·²æµç»çš„æµç¨‹çº¿ï¼Œéœ€è¦é«˜äº®æ˜¾ç¤º + List<String> highLightedFlowIdList = new ArrayList<>(); + // 全部活动节点 + List<FlowNode> allHistoricActivityNodeList = new ArrayList<>(); + // 已完æˆçš„历å²æ´»åŠ¨èŠ‚点 + List<HistoricActivityInstance> finishedActivityInstanceList = new ArrayList<>(); + + for (HistoricActivityInstance historicActivityInstance : historicActivityInstanceList) { + // 获å–æµç¨‹èŠ‚点 + FlowElement flowElement = bpmnModel.getMainProcess().getFlowElement(historicActivityInstance.getActivityId(), true); + String className = flowElement.getClass().getSimpleName(); + if(!"SequenceFlow".equals(className)){ + FlowNode flowNode = (FlowNode) flowElement; + allHistoricActivityNodeList.add(flowNode); + // 结æŸæ—¶é—´ä¸ä¸ºç©ºï¼Œå½“å‰èŠ‚点则已ç»å®Œæˆ + if (historicActivityInstance.getEndTime() != null) { + finishedActivityInstanceList.add(historicActivityInstance); + } + } + } + + FlowNode currentFlowNode = null; + FlowNode targetFlowNode = null; + HistoricActivityInstance currentActivityInstance; + // é历已完æˆçš„活动实例,从æ¯ä¸ªå®žä¾‹çš„outgoingFlowsä¸æ‰¾åˆ°å·²æ‰§è¡Œçš„ + for (int k = 0; k < finishedActivityInstanceList.size(); k++) { + currentActivityInstance = finishedActivityInstanceList.get(k); + // 获得当å‰æ´»åŠ¨å¯¹åº”的节点信æ¯åŠoutgoingFlowsä¿¡æ¯ + currentFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(currentActivityInstance + .getActivityId(), true); + // 当å‰èŠ‚点的所有æµå‡ºçº¿ + List<SequenceFlow> outgoingFlowList = currentFlowNode.getOutgoingFlows(); + + /** + * é历outgoingFlows并找到已æµè½¬çš„ 满足如下æ¡ä»¶è®¤ä¸ºå·²æµè½¬ï¼š + * 1.当å‰èŠ‚点是并行网关或兼容网关,则通过outgoingFlows能够在历å²æ´»åŠ¨ä¸æ‰¾åˆ°çš„全部节点å‡ä¸ºå·²æµè½¬ + * 2.当å‰èŠ‚点是以上两ç§ç±»åž‹ä¹‹å¤–的,通过outgoingFlows查找到的时间最早的æµè½¬èŠ‚点视为有效æµè½¬ + * (第2点有问题,有过驳回的,会åªç»˜åˆ¶é©³å›žçš„æµç¨‹çº¿ï¼Œé€šè¿‡èµ°å‘下一级的æµç¨‹çº¿æ²¡æœ‰é«˜äº®æ˜¾ç¤º) + */ + if ("parallelGateway".equals(currentActivityInstance.getActivityType()) || "inclusiveGateway".equals( + currentActivityInstance.getActivityType())) { + // é历历å²æ´»åŠ¨èŠ‚点,找到匹é…æµç¨‹ç›®æ ‡èŠ‚点的 + for (SequenceFlow outgoingFlow : outgoingFlowList) { + // 获å–当å‰èŠ‚点æµç¨‹çº¿å¯¹åº”的下级节点 + targetFlowNode = (FlowNode) bpmnModel.getMainProcess().getFlowElement(outgoingFlow.getTargetRef(), + true); + // 如果下级节点包å«åœ¨æ‰€æœ‰åŽ†å²èŠ‚点ä¸ï¼Œåˆ™å°†å½“å‰èŠ‚点的æµå‡ºçº¿é«˜äº®æ˜¾ç¤º + if (allHistoricActivityNodeList.contains(targetFlowNode)) { + highLightedFlowIdList.add(outgoingFlow.getId()); + } + } + } else { + /** + * 2ã€å½“å‰èŠ‚点ä¸æ˜¯å¹¶è¡Œç½‘关或兼容网关 + * ã€å·²è§£å†³-问题】如果当å‰èŠ‚点有驳回功能,驳回到申请节点, + * åˆ™å› ä¸ºç”³è¯·èŠ‚ç‚¹åœ¨åŽ†å²èŠ‚点ä¸ï¼Œå¯¼è‡´å½“å‰èŠ‚点驳回到申请节点的æµç¨‹çº¿è¢«é«˜äº®æ˜¾ç¤ºï¼Œä½†å®žé™…并没有进行驳回æ“作 + */ + List<Map<String, Object>> tempMapList = new ArrayList<>(); + // 当å‰èŠ‚点ID + String currentActivityId = currentActivityInstance.getActivityId(); + int size = historicActivityInstanceList.size(); + boolean ifStartFind = false; + boolean ifFinded = false; + HistoricActivityInstance historicActivityInstance; + // 循环当å‰èŠ‚点的所有æµå‡ºçº¿ + // 循环所有历å²èŠ‚点 + LOG.info("ã€å¼€å§‹ã€‘-匹é…当å‰èŠ‚点-ActivityId=ã€{}】需è¦é«˜äº®æ˜¾ç¤ºçš„æµå‡ºçº¿:"+currentActivityId); + LOG.info("循环历å²èŠ‚点"); + for (int i = 0; i < historicActivityInstanceList.size(); i++) { + // // 如果当å‰èŠ‚点æµç¨‹çº¿å¯¹åº”的下级节点在历å²èŠ‚点ä¸ï¼Œåˆ™è¯¥æ¡æµç¨‹çº¿è¿›è¡Œé«˜äº®æ˜¾ç¤ºï¼ˆã€é—®é¢˜ã€‘有驳回æµç¨‹çº¿æ—¶ï¼Œå³ä½¿æ²¡æœ‰è¿›è¡Œé©³å›žæ“ä½œï¼Œå› ä¸ºç”³è¯·èŠ‚ç‚¹åœ¨åŽ†å²èŠ‚点ä¸ï¼Œä¹Ÿä¼šå°†é©³å›žæµç¨‹çº¿é«˜äº®æ˜¾ç¤º-_-||) + // if (historicActivityInstance.getActivityId().equals(sequenceFlow.getTargetRef())) { + // Map<String, Object> map = new HashMap<>(); + // map.put("highLightedFlowId", sequenceFlow.getId()); + // map.put("highLightedFlowStartTime", historicActivityInstance.getStartTime().getTime()); + // tempMapList.add(map); + // // highLightedFlowIdList.add(sequenceFlow.getId()); + // } + // 历å²èŠ‚点 + historicActivityInstance = historicActivityInstanceList.get(i); + LOG.info("第ã€"+( i + 1)+"/"+size+"】个历å²èŠ‚点-ActivityId=["+historicActivityInstance.getActivityId()+"]"); + // 如果循环历å²èŠ‚点ä¸çš„idç‰äºŽå½“å‰èŠ‚点id,从当å‰åŽ†å²èŠ‚点继ç»å…ˆåŽæŸ¥æ‰¾æ˜¯å¦æœ‰å½“å‰èŠ‚点æµç¨‹çº¿ç‰äºŽçš„节点 + // 历å²èŠ‚点的åºå·éœ€è¦å¤§äºŽç‰äºŽå·²å®ŒæˆåŽ†å²èŠ‚点的åºå·ï¼Œé˜²æ¢é©³å›žé‡å®¡ä¸€ä¸ªèŠ‚点ç»è¿‡ä¸¤æ¬¡æ˜¯åªå–第一次的æµå‡ºçº¿é«˜äº®æ˜¾ç¤ºï¼Œç¬¬äºŒæ¬¡çš„ä¸æ˜¾ç¤º + if (i >= k && historicActivityInstance.getActivityId().equals(currentActivityId)) { + LOG.info("第["+(i+1)+"]个历å²èŠ‚点和当å‰èŠ‚点一致-ActivityId=["+historicActivityInstance.getActivityId()+"]"); + ifStartFind = true; + // 跳过当å‰èŠ‚点继ç»æŸ¥æ‰¾ä¸‹ä¸€ä¸ªèŠ‚点 + continue; + } + if (ifStartFind) { + LOG.info("[开始]-循环当å‰èŠ‚点-ActivityId=ã€"+currentActivityId+"】的所有æµå‡ºçº¿"); + + ifFinded = false; + for (SequenceFlow sequenceFlow : outgoingFlowList) { + // 如果当å‰èŠ‚点æµç¨‹çº¿å¯¹åº”的下级节点在其åŽé¢çš„历å²èŠ‚点ä¸ï¼Œåˆ™è¯¥æ¡æµç¨‹çº¿è¿›è¡Œé«˜äº®æ˜¾ç¤º + // ã€é—®é¢˜ã€‘ + LOG.info("当å‰æµå‡ºçº¿çš„下级节点=[{}]:"+sequenceFlow.getTargetRef()); + if (historicActivityInstance.getActivityId().equals(sequenceFlow.getTargetRef())) { + LOG.info("当å‰èŠ‚点["+currentActivityId+"]需高亮显示的æµå‡ºçº¿=["+sequenceFlow.getId()+"]"); + highLightedFlowIdList.add(sequenceFlow.getId()); + // 暂时默认找到离当å‰èŠ‚点最近的下一级节点å³é€€å‡ºå¾ªçŽ¯ï¼Œå¦åˆ™æœ‰å¤šæ¡æµå‡ºçº¿æ—¶å°†å…¨éƒ¨è¢«é«˜äº®æ˜¾ç¤º + ifFinded = true; + break; + } + } + LOG.info("[完æˆ]-循环当å‰èŠ‚点-ActivityId=ã€"+currentActivityId+"】的所有æµå‡ºçº¿"); + } + if (ifFinded) { + // 暂时默认找到离当å‰èŠ‚点最近的下一级节点å³é€€å‡ºåŽ†å²èŠ‚点循环,å¦åˆ™æœ‰å¤šæ¡æµå‡ºçº¿æ—¶å°†å…¨éƒ¨è¢«é«˜äº®æ˜¾ç¤º + break; + } + } + LOG.info("ã€å®Œæˆã€‘-匹é…当å‰èŠ‚点-ActivityId=ã€"+currentActivityId+"】需è¦é«˜äº®æ˜¾ç¤ºçš„æµå‡ºçº¿"); + // if (!CollectionUtils.isEmpty(tempMapList)) { + // // é历匹é…的集åˆï¼Œå–得开始时间最早的一个 + // long earliestStamp = 0L; + // String highLightedFlowId = null; + // for (Map<String, Object> map : tempMapList) { + // long highLightedFlowStartTime = Long.valueOf(map.get("highLightedFlowStartTime").toString()); + // if (earliestStamp == 0 || earliestStamp <= highLightedFlowStartTime) { + // highLightedFlowId = map.get("highLightedFlowId").toString(); + // earliestStamp = highLightedFlowStartTime; + // } + // } + // highLightedFlowIdList.add(highLightedFlowId); + // } + + } + + } + return highLightedFlowIdList; + } + + /** + * æ ¹æ®æµç¨‹å®žä¾‹Id,获å–实时æµç¨‹å›¾ç‰‡ + * + * @param procInstId + * @return + * @throws Exception + */ + public byte[] generateImageByProcInstId(String procInstId) throws Exception { + if (StringUtils.isEmpty(procInstId)) { + LOG.error("[错误]-ä¼ å…¥çš„å‚æ•°procInstId为空ï¼"); + throw new Exception("[异常]-ä¼ å…¥çš„å‚æ•°procInstId为空ï¼"); + } + InputStream imageStream = null; + try { + // 通过æµç¨‹å®žä¾‹ID获å–历å²æµç¨‹å®žä¾‹ + HistoricProcessInstance historicProcessInstance = getHistoricProcInst(procInstId); + + // 通过æµç¨‹å®žä¾‹ID获å–æµç¨‹ä¸å·²ç»æ‰§è¡Œçš„节点,按照执行先åŽé¡ºåºæŽ’åº + List<HistoricActivityInstance> historicActivityInstanceList = getHistoricActivityInstAsc(procInstId); + + + // 将已ç»æ‰§è¡Œçš„节点IDæ”¾å…¥é«˜äº®æ˜¾ç¤ºèŠ‚ç‚¹é›†åˆ + List<String> highLightedActivitiIdList = new ArrayList<>(); + for (HistoricActivityInstance historicActivityInstance : historicActivityInstanceList) { + highLightedActivitiIdList.add(historicActivityInstance.getActivityId()); + LOG.info("已执行的节点["+historicActivityInstance.getId()+"-"+historicActivityInstance.getActivityId()+"-"+historicActivityInstance.getActivityName()+"-"+historicActivityInstance.getAssignee()+"]"); + } + + // 通过æµç¨‹å®žä¾‹ID获å–æµç¨‹ä¸æ£åœ¨æ‰§è¡Œçš„节点 + List<Execution> runningActivityInstanceList = getRunningActivityInst(procInstId); + List<String> runningActivitiIdList = new ArrayList<String>(); + for (Execution execution : runningActivityInstanceList) { + if (StringUtils.isNotEmpty(execution.getActivityId())) { + runningActivitiIdList.add(execution.getActivityId()); + LOG.info("执行ä¸çš„节点["+execution.getId()+"-"+execution.getActivityId()+"-"+execution.getName()+"]"); + } + } + + // 通过æµç¨‹å®žä¾‹ID获å–å·²ç»å®Œæˆçš„历å²æµç¨‹å®žä¾‹ + List<HistoricProcessInstance> historicFinishedProcessInstanceList = getHistoricFinishedProcInst(procInstId); + + // 定义æµç¨‹ç”»å¸ƒç”Ÿæˆå™¨ + ProcessDiagramGenerator processDiagramGenerator = null; + // 如果还没完æˆï¼Œæµç¨‹å›¾é«˜äº®é¢œè‰²ä¸ºç»¿è‰²ï¼Œå¦‚果已ç»å®Œæˆä¸ºçº¢è‰² + // if (!CollectionUtils.isEmpty(historicFinishedProcessInstanceList)) { + // // 如果ä¸ä¸ºç©ºï¼Œè¯´æ˜Žå·²ç»å®Œæˆ + // processDiagramGenerator = processEngineConfiguration.getProcessDiagramGenerator(); + // } else { + processDiagramGenerator = new CustomProcessDiagramGenerator(); + // } + + // 获å–æµç¨‹å®šä¹‰Model对象 + BpmnModel bpmnModel = repositoryService.getBpmnModel(historicProcessInstance.getProcessDefinitionId()); + + + // 获å–å·²æµç»çš„æµç¨‹çº¿ï¼Œéœ€è¦é«˜äº®æ˜¾ç¤ºé«˜äº®æµç¨‹å·²å‘生æµè½¬çš„线idé›†åˆ + List<String> highLightedFlowIds = getHighLightedFlows(bpmnModel, historicActivityInstanceList); + + // 使用默认é…置获得æµç¨‹å›¾è¡¨ç”Ÿæˆå™¨ï¼Œå¹¶ç”Ÿæˆè¿½è¸ªå›¾ç‰‡å—ç¬¦æµ + imageStream = ((CustomProcessDiagramGenerator) processDiagramGenerator) + .generateDiagramCustom(bpmnModel, "png", + highLightedActivitiIdList, runningActivitiIdList, highLightedFlowIds, + "宋体", "微软雅黑", "黑体", + null, 2.0); + // å°†InputStreamæ•°æ®æµè½¬æ¢ä¸ºbyte[] + byte[] buffer = new byte[imageStream.available()]; + imageStream.read(buffer); + return buffer; + } catch (Exception e) { + e.printStackTrace(); + LOG.error("通过æµç¨‹å®žä¾‹ID["+procInstId+"]获å–æµç¨‹å›¾æ—¶å‡ºçŽ°å¼‚常ï¼", e); + throw new Exception("通过æµç¨‹å®žä¾‹ID" + procInstId + "获å–æµç¨‹å›¾æ—¶å‡ºçŽ°å¼‚常ï¼", e); + } finally { + if (imageStream != null) { + imageStream.close(); + } + } + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramCanvas.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramCanvas.java new file mode 100644 index 000000000..b33274984 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramCanvas.java @@ -0,0 +1,1331 @@ +package com.skyeye.activiti.flowimg.img; + + +import org.flowable.bpmn.model.AssociationDirection; +import org.flowable.bpmn.model.GraphicInfo; +import org.flowable.image.exception.FlowableImageException; +import org.flowable.image.util.ReflectUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.font.FontRenderContext; +import java.awt.font.LineBreakMeasurer; +import java.awt.font.TextAttribute; +import java.awt.font.TextLayout; +import java.awt.geom.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.AttributedCharacterIterator; +import java.text.AttributedString; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @ClassName: CustomProcessDiagramCanvas + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 1:49 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public class CustomProcessDiagramCanvas { + private static final Logger LOG = LoggerFactory.getLogger(CustomProcessDiagramCanvas.class); + + /** + * 形状类型:长方形ã€è±å½¢ã€æ¤åœ† + */ + public enum SHAPE_TYPE { + Rectangle, Rhombus, Ellipse + } + + // Predefined sized + protected static final int ARROW_WIDTH = 5; + protected static final int CONDITIONAL_INDICATOR_WIDTH = 16; + protected static final int DEFAULT_INDICATOR_WIDTH = 10; + protected static final int MARKER_WIDTH = 12; + protected static final int FONT_SIZE = 11; + protected static final int FONT_SPACING = 2; + protected static final int TEXT_PADDING = 3; + protected static final int ANNOTATION_TEXT_PADDING = 7; + protected static final int LINE_HEIGHT = FONT_SIZE + FONT_SPACING; + + // Colors + protected static Color TASK_BOX_COLOR = new Color(249, 249, 249); + protected static Color SUBPROCESS_BOX_COLOR = new Color(255, 255, 255); + protected static Color EVENT_COLOR = new Color(255, 255, 255); + protected static Color CONNECTION_COLOR = new Color(88, 88, 88); + protected static Color CONDITIONAL_INDICATOR_COLOR = new Color(255, 255, 255); + protected static Color RUNNING_HIGHLIGHT_COLOR = Color.RED; + protected static Color HIGHLIGHT_COLOR = Color.GREEN; + protected static Color LABEL_COLOR = new Color(112, 146, 190); + // protected static Color LABEL_COLOR = Color.blue; + protected static Color TASK_BORDER_COLOR = new Color(187, 187, 187); + protected static Color EVENT_BORDER_COLOR = new Color(88, 88, 88); + protected static Color SUBPROCESS_BORDER_COLOR = new Color(0, 0, 0); + + // Fonts + protected static Font LABEL_FONT = new Font("微软雅黑", Font.ITALIC, 11); + protected static Font ANNOTATION_FONT = new Font("Arial", Font.PLAIN, FONT_SIZE); + protected static Font TASK_FONT = new Font("Arial", Font.PLAIN, FONT_SIZE); + + // Strokes + //TODO 边框宽度修改 + //protected static Stroke THICK_TASK_BORDER_STROKE = new BasicStroke(3.0f); + protected static Stroke THICK_TASK_BORDER_STROKE = new BasicStroke(2.0f); + protected static Stroke GATEWAY_TYPE_STROKE = new BasicStroke(3.0f); + protected static Stroke END_EVENT_STROKE = new BasicStroke(3.0f); + protected static Stroke MULTI_INSTANCE_STROKE = new BasicStroke(1.3f); + protected static Stroke EVENT_SUBPROCESS_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[]{1.0f}, 0.0f); + protected static Stroke NON_INTERRUPTING_EVENT_STROKE = new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[]{4.0f, 3.0f}, 0.0f); + protected static Stroke HIGHLIGHT_FLOW_STROKE = new BasicStroke(1.3f); + protected static Stroke ANNOTATION_STROKE = new BasicStroke(2.0f); + protected static Stroke ASSOCIATION_STROKE = new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 1.0f, new float[]{2.0f, 2.0f}, 0.0f); + + // icons + protected static int ICON_PADDING = 5; + protected static BufferedImage USERTASK_IMAGE; + protected static BufferedImage SCRIPTTASK_IMAGE; + protected static BufferedImage SERVICETASK_IMAGE; + protected static BufferedImage RECEIVETASK_IMAGE; + protected static BufferedImage SENDTASK_IMAGE; + protected static BufferedImage MANUALTASK_IMAGE; + protected static BufferedImage BUSINESS_RULE_TASK_IMAGE; + protected static BufferedImage SHELL_TASK_IMAGE; + protected static BufferedImage MULE_TASK_IMAGE; + protected static BufferedImage CAMEL_TASK_IMAGE; + + protected static BufferedImage TIMER_IMAGE; + protected static BufferedImage COMPENSATE_THROW_IMAGE; + protected static BufferedImage COMPENSATE_CATCH_IMAGE; + protected static BufferedImage ERROR_THROW_IMAGE; + protected static BufferedImage ERROR_CATCH_IMAGE; + protected static BufferedImage MESSAGE_THROW_IMAGE; + protected static BufferedImage MESSAGE_CATCH_IMAGE; + protected static BufferedImage SIGNAL_CATCH_IMAGE; + protected static BufferedImage SIGNAL_THROW_IMAGE; + + protected int canvasWidth = -1; + protected int canvasHeight = -1; + protected int minX = -1; + protected int minY = -1; + protected BufferedImage processDiagram; + protected Graphics2D g; + protected FontMetrics fontMetrics; + protected boolean closed; + protected ClassLoader customClassLoader; + protected String activityFontName = "Arial"; + protected String labelFontName = "Arial"; + + /** + * Creates an empty canvas with given width and height. Allows to specify minimal boundaries on the left and upper side of the canvas. This is useful for diagrams that have + * white space there. Everything beneath these minimum values will be cropped. It's also possible to pass a specific font name and a class loader for the icon images. + */ + public CustomProcessDiagramCanvas(int width, int height, int minX, int minY, String imageType, String activityFontName, String labelFontName, ClassLoader customClassLoader) { + + this.canvasWidth = width; + this.canvasHeight = height; + this.minX = minX; + this.minY = minY; + if (activityFontName != null) { + this.activityFontName = activityFontName; + } + if (labelFontName != null) { + this.labelFontName = labelFontName; + } + this.customClassLoader = customClassLoader; + + initialize(imageType); + } + + /** + * Creates an empty canvas with given width and height. Allows to specify minimal boundaries on the left and upper side of the canvas. This is useful for diagrams that have + * white space there (eg Signavio). Everything beneath these minimum values will be cropped. + * + * @param minX Hint that will be used when generating the image. Parts that fall below minX on the horizontal scale will be cropped. + * @param minY Hint that will be used when generating the image. Parts that fall below minX on the horizontal scale will be cropped. + */ + public CustomProcessDiagramCanvas(int width, int height, int minX, int minY, String imageType) { + this.canvasWidth = width; + this.canvasHeight = height; + this.minX = minX; + this.minY = minY; + + initialize(imageType); + } + + public void initialize(String imageType) { + if ("png".equalsIgnoreCase(imageType)) { + this.processDiagram = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_ARGB); + } else { + this.processDiagram = new BufferedImage(canvasWidth, canvasHeight, BufferedImage.TYPE_INT_RGB); + } + + this.g = processDiagram.createGraphics(); + if ("png".equalsIgnoreCase(imageType) == false) { + this.g.setBackground(new Color(255, 255, 255, 0)); + this.g.clearRect(0, 0, canvasWidth, canvasHeight); + } + + g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + g.setPaint(Color.black); + + Font font = new Font(activityFontName, Font.BOLD, FONT_SIZE); + g.setFont(font); + this.fontMetrics = g.getFontMetrics(); + +// LABEL_FONT = new Font(labelFontName, Font.ITALIC, 10); + + try { + USERTASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/userTask.png", customClassLoader)); + SCRIPTTASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/scriptTask.png", customClassLoader)); + SERVICETASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/serviceTask.png", customClassLoader)); + RECEIVETASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/receiveTask.png", customClassLoader)); + SENDTASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/sendTask.png", customClassLoader)); + MANUALTASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/manualTask.png", customClassLoader)); + BUSINESS_RULE_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/businessRuleTask.png", customClassLoader)); + SHELL_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/shellTask.png", customClassLoader)); + CAMEL_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/camelTask.png", customClassLoader)); + MULE_TASK_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/muleTask.png", customClassLoader)); + + TIMER_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/timer.png", customClassLoader)); + COMPENSATE_THROW_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/compensate-throw.png", customClassLoader)); + COMPENSATE_CATCH_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/compensate.png", customClassLoader)); + ERROR_THROW_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/error-throw.png", customClassLoader)); + ERROR_CATCH_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/error.png", customClassLoader)); + MESSAGE_THROW_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/message-throw.png", customClassLoader)); + MESSAGE_CATCH_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/message.png", customClassLoader)); + SIGNAL_THROW_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/signal-throw.png", customClassLoader)); + SIGNAL_CATCH_IMAGE = ImageIO.read(ReflectUtil.getResource("org/flowable/icons/signal.png", customClassLoader)); + } catch (IOException e) { + LOG.warn("Could not load image for process diagram creation: ", e); + } + } + + /** + * Generates an image of what currently is drawn on the canvas. Throws an + * {@link FlowableImageException} when {@link #close()} is already called. + */ + public InputStream generateImage(String imageType) { + if (closed) { + throw new FlowableImageException("ProcessDiagramGenerator already closed"); + } + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { + // Try to remove white space + minX = (minX <= 5) ? 5 : minX; + minY = (minY <= 5) ? 5 : minY; + BufferedImage imageToSerialize = processDiagram; + if (minX >= 0 && minY >= 0) { + imageToSerialize = processDiagram.getSubimage(minX - 5, minY - 5, canvasWidth - minX + 5, canvasHeight - minY + 5); + } + ImageIO.write(imageToSerialize, imageType, out); + + } catch (IOException e) { + throw new FlowableImageException("Error while generating process image", e); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ignore) { + // Exception is silently ignored + } + } + return new ByteArrayInputStream(out.toByteArray()); + } + + /** + * Generates an image of what currently is drawn on the canvas. Throws an + * {@link FlowableImageException} when {@link #close()} is already called. + */ + public BufferedImage generateBufferedImage(String imageType) { + if (closed) { + throw new FlowableImageException("ProcessDiagramGenerator already closed"); + } + + // Try to remove white space + minX = (minX <= 5) ? 5 : minX; + minY = (minY <= 5) ? 5 : minY; + BufferedImage imageToSerialize = processDiagram; + if (minX >= 0 && minY >= 0) { + imageToSerialize = processDiagram.getSubimage(minX - 5, minY - 5, canvasWidth - minX + 5, canvasHeight - minY + 5); + } + return imageToSerialize; + } + + /** + * Closes the canvas which dissallows further drawing and releases graphical resources. + */ + public void close() { + g.dispose(); + closed = true; + } + + public void drawNoneStartEvent(GraphicInfo graphicInfo) { + drawStartEvent(graphicInfo, null, 1.0); + } + + public void drawTimerStartEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawStartEvent(graphicInfo, TIMER_IMAGE, scaleFactor); + } + + public void drawSignalStartEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawStartEvent(graphicInfo, SIGNAL_CATCH_IMAGE, scaleFactor); + } + + public void drawMessageStartEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawStartEvent(graphicInfo, MESSAGE_CATCH_IMAGE, scaleFactor); + } + + public void drawStartEvent(GraphicInfo graphicInfo, BufferedImage image, double scaleFactor) { + Paint originalPaint = g.getPaint(); + g.setPaint(EVENT_COLOR); + Ellipse2D circle = new Ellipse2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight()); + g.fill(circle); + g.setPaint(EVENT_BORDER_COLOR); + g.draw(circle); + g.setPaint(originalPaint); + if (image != null) { + // calculate coordinates to center image + int imageX = (int) Math.round(graphicInfo.getX() + (graphicInfo.getWidth() / 2) - (image.getWidth() / 2 * scaleFactor)); + int imageY = (int) Math.round(graphicInfo.getY() + (graphicInfo.getHeight() / 2) - (image.getHeight() / 2 * scaleFactor)); + g.drawImage(image, imageX, imageY, (int) (image.getWidth() / scaleFactor), (int) (image.getHeight() / scaleFactor), null); + } + + } + + public void drawNoneEndEvent(GraphicInfo graphicInfo, double scaleFactor) { + Paint originalPaint = g.getPaint(); + Stroke originalStroke = g.getStroke(); + g.setPaint(EVENT_COLOR); + Ellipse2D circle = new Ellipse2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight()); + g.fill(circle); + g.setPaint(EVENT_BORDER_COLOR); + if (scaleFactor == 1.0) { + g.setStroke(END_EVENT_STROKE); + } else { + g.setStroke(new BasicStroke(2.0f)); + } + g.draw(circle); + g.setStroke(originalStroke); + g.setPaint(originalPaint); + } + + public void drawErrorEndEvent(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawErrorEndEvent(graphicInfo, scaleFactor); + if (scaleFactor == 1.0) { + drawLabel(name, graphicInfo); + } + } + + public void drawErrorEndEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawNoneEndEvent(graphicInfo, scaleFactor); + g.drawImage(ERROR_THROW_IMAGE, (int) (graphicInfo.getX() + (graphicInfo.getWidth() / 4)), (int) (graphicInfo.getY() + (graphicInfo.getHeight() / 4)), + (int) (ERROR_THROW_IMAGE.getWidth() / scaleFactor), (int) (ERROR_THROW_IMAGE.getHeight() / scaleFactor), null); + } + + public void drawErrorStartEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawNoneStartEvent(graphicInfo); + g.drawImage(ERROR_CATCH_IMAGE, (int) (graphicInfo.getX() + (graphicInfo.getWidth() / 4)), (int) (graphicInfo.getY() + (graphicInfo.getHeight() / 4)), + (int) (ERROR_CATCH_IMAGE.getWidth() / scaleFactor), (int) (ERROR_CATCH_IMAGE.getHeight() / scaleFactor), null); + } + + public void drawCatchingEvent(GraphicInfo graphicInfo, boolean isInterrupting, BufferedImage image, String eventType, double scaleFactor) { + + // event circles + Ellipse2D outerCircle = new Ellipse2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight()); + int innerCircleSize = (int) (4 / scaleFactor); + if (innerCircleSize == 0) { + innerCircleSize = 1; + } + int innerCircleX = (int) graphicInfo.getX() + innerCircleSize; + int innerCircleY = (int) graphicInfo.getY() + innerCircleSize; + int innerCircleWidth = (int) graphicInfo.getWidth() - (2 * innerCircleSize); + int innerCircleHeight = (int) graphicInfo.getHeight() - (2 * innerCircleSize); + Ellipse2D innerCircle = new Ellipse2D.Double(innerCircleX, innerCircleY, innerCircleWidth, innerCircleHeight); + + Paint originalPaint = g.getPaint(); + Stroke originalStroke = g.getStroke(); + g.setPaint(EVENT_COLOR); + g.fill(outerCircle); + + g.setPaint(EVENT_BORDER_COLOR); + if (isInterrupting == false) { + g.setStroke(NON_INTERRUPTING_EVENT_STROKE); + } + g.draw(outerCircle); + g.setStroke(originalStroke); + g.setPaint(originalPaint); + g.draw(innerCircle); + + if (image != null) { + // calculate coordinates to center image + int imageX = (int) (graphicInfo.getX() + (graphicInfo.getWidth() / 2) - (image.getWidth() / 2 * scaleFactor)); + int imageY = (int) (graphicInfo.getY() + (graphicInfo.getHeight() / 2) - (image.getHeight() / 2 * scaleFactor)); + if (scaleFactor == 1.0 && "timer".equals(eventType)) { + // move image one pixel to center timer image + imageX++; + imageY++; + } + g.drawImage(image, imageX, imageY, (int) (image.getWidth() / scaleFactor), (int) (image.getHeight() / scaleFactor), null); + } + } + + public void drawCatchingCompensateEvent(String name, GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingCompensateEvent(graphicInfo, isInterrupting, scaleFactor); + drawLabel(name, graphicInfo); + } + + public void drawCatchingCompensateEvent(GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, COMPENSATE_CATCH_IMAGE, "compensate", scaleFactor); + } + + public void drawCatchingTimerEvent(String name, GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingTimerEvent(graphicInfo, isInterrupting, scaleFactor); + drawLabel(name, graphicInfo); + } + + public void drawCatchingTimerEvent(GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, TIMER_IMAGE, "timer", scaleFactor); + } + + public void drawCatchingErrorEvent(String name, GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingErrorEvent(graphicInfo, isInterrupting, scaleFactor); + drawLabel(name, graphicInfo); + } + + public void drawCatchingErrorEvent(GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, ERROR_CATCH_IMAGE, "error", scaleFactor); + } + + public void drawCatchingSignalEvent(String name, GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingSignalEvent(graphicInfo, isInterrupting, scaleFactor); + drawLabel(name, graphicInfo); + } + + public void drawCatchingSignalEvent(GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, SIGNAL_CATCH_IMAGE, "signal", scaleFactor); + } + + public void drawCatchingMessageEvent(GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, MESSAGE_CATCH_IMAGE, "message", scaleFactor); + } + + public void drawCatchingMessageEvent(String name, GraphicInfo graphicInfo, boolean isInterrupting, double scaleFactor) { + drawCatchingEvent(graphicInfo, isInterrupting, MESSAGE_CATCH_IMAGE, "message", scaleFactor); + drawLabel(name, graphicInfo); + } + + public void drawThrowingCompensateEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawCatchingEvent(graphicInfo, true, COMPENSATE_THROW_IMAGE, "compensate", scaleFactor); + } + + public void drawThrowingSignalEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawCatchingEvent(graphicInfo, true, SIGNAL_THROW_IMAGE, "signal", scaleFactor); + } + + public void drawThrowingNoneEvent(GraphicInfo graphicInfo, double scaleFactor) { + drawCatchingEvent(graphicInfo, true, null, "none", scaleFactor); + } + + public void drawSequenceflow(int srcX, int srcY, int targetX, int targetY, boolean conditional, double scaleFactor) { + drawSequenceflow(srcX, srcY, targetX, targetY, conditional, false, scaleFactor); + } + + public void drawSequenceflow(int srcX, int srcY, int targetX, int targetY, boolean conditional, boolean highLighted, double scaleFactor) { + Paint originalPaint = g.getPaint(); + if (highLighted) { + g.setPaint(HIGHLIGHT_COLOR); + } + + Line2D.Double line = new Line2D.Double(srcX, srcY, targetX, targetY); + g.draw(line); + drawArrowHead(line, scaleFactor); + + if (conditional) { + drawConditionalSequenceFlowIndicator(line, scaleFactor); + } + + if (highLighted) { + g.setPaint(originalPaint); + } + } + + public void drawAssociation(int[] xPoints, int[] yPoints, AssociationDirection associationDirection, boolean highLighted, double scaleFactor) { + boolean conditional = false, isDefault = false; + drawConnection(xPoints, yPoints, conditional, isDefault, "association", associationDirection, highLighted, scaleFactor); + } + + public void drawSequenceflow(int[] xPoints, int[] yPoints, boolean conditional, boolean isDefault, boolean highLighted, double scaleFactor) { + drawConnection(xPoints, yPoints, conditional, isDefault, "sequenceFlow", AssociationDirection.ONE, highLighted, scaleFactor); + } + + public void drawConnection(int[] xPoints, int[] yPoints, boolean conditional, boolean isDefault, String connectionType, AssociationDirection associationDirection, + boolean highLighted, double scaleFactor) { + + Paint originalPaint = g.getPaint(); + Stroke originalStroke = g.getStroke(); + + g.setPaint(CONNECTION_COLOR); + //if (connectionType.equals("association")) { + if ("association".equals(connectionType)) { + g.setStroke(ASSOCIATION_STROKE); + } else if (highLighted) { + g.setPaint(HIGHLIGHT_COLOR); + g.setStroke(HIGHLIGHT_FLOW_STROKE); + } + + for (int i = 1; i < xPoints.length; i++) { + Integer sourceX = xPoints[i - 1]; + Integer sourceY = yPoints[i - 1]; + Integer targetX = xPoints[i]; + Integer targetY = yPoints[i]; + Line2D.Double line = new Line2D.Double(sourceX, sourceY, targetX, targetY); + g.draw(line); + } + + if (isDefault) { + Line2D.Double line = new Line2D.Double(xPoints[0], yPoints[0], xPoints[1], yPoints[1]); + drawDefaultSequenceFlowIndicator(line, scaleFactor); + } + + if (conditional) { + Line2D.Double line = new Line2D.Double(xPoints[0], yPoints[0], xPoints[1], yPoints[1]); + drawConditionalSequenceFlowIndicator(line, scaleFactor); + } + + if (associationDirection.equals(AssociationDirection.ONE) || associationDirection.equals(AssociationDirection.BOTH)) { + Line2D.Double line = new Line2D.Double(xPoints[xPoints.length - 2], yPoints[xPoints.length - 2], xPoints[xPoints.length - 1], yPoints[xPoints.length - 1]); + drawArrowHead(line, scaleFactor); + } + if (associationDirection.equals(AssociationDirection.BOTH)) { + Line2D.Double line = new Line2D.Double(xPoints[1], yPoints[1], xPoints[0], yPoints[0]); + drawArrowHead(line, scaleFactor); + } + g.setPaint(originalPaint); + g.setStroke(originalStroke); + } + + public void drawSequenceflowWithoutArrow(int srcX, int srcY, int targetX, int targetY, boolean conditional, double scaleFactor) { + drawSequenceflowWithoutArrow(srcX, srcY, targetX, targetY, conditional, false, scaleFactor); + } + + public void drawSequenceflowWithoutArrow(int srcX, int srcY, int targetX, int targetY, boolean conditional, boolean highLighted, double scaleFactor) { + Paint originalPaint = g.getPaint(); + if (highLighted) { + g.setPaint(HIGHLIGHT_COLOR); + } + + Line2D.Double line = new Line2D.Double(srcX, srcY, targetX, targetY); + g.draw(line); + + if (conditional) { + drawConditionalSequenceFlowIndicator(line, scaleFactor); + } + + if (highLighted) { + g.setPaint(originalPaint); + } + } + + public void drawArrowHead(Line2D.Double line, double scaleFactor) { + int doubleArrowWidth = (int) (2 * ARROW_WIDTH / scaleFactor); + if (doubleArrowWidth == 0) { + doubleArrowWidth = 2; + } + Polygon arrowHead = new Polygon(); + arrowHead.addPoint(0, 0); + int arrowHeadPoint = (int) (-ARROW_WIDTH / scaleFactor); + if (arrowHeadPoint == 0) { + arrowHeadPoint = -1; + } + arrowHead.addPoint(arrowHeadPoint, -doubleArrowWidth); + arrowHeadPoint = (int) (ARROW_WIDTH / scaleFactor); + if (arrowHeadPoint == 0) { + arrowHeadPoint = 1; + } + arrowHead.addPoint(arrowHeadPoint, -doubleArrowWidth); + + AffineTransform transformation = new AffineTransform(); + transformation.setToIdentity(); + double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1); + transformation.translate(line.x2, line.y2); + transformation.rotate((angle - Math.PI / 2d)); + + AffineTransform originalTransformation = g.getTransform(); + g.setTransform(transformation); + g.fill(arrowHead); + g.setTransform(originalTransformation); + } + + public void drawDefaultSequenceFlowIndicator(Line2D.Double line, double scaleFactor) { + double length = DEFAULT_INDICATOR_WIDTH / scaleFactor, halfOfLength = length / 2, f = 8; + Line2D.Double defaultIndicator = new Line2D.Double(-halfOfLength, 0, halfOfLength, 0); + + double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1); + double dx = f * Math.cos(angle), dy = f * Math.sin(angle), x1 = line.x1 + dx, y1 = line.y1 + dy; + + AffineTransform transformation = new AffineTransform(); + transformation.setToIdentity(); + transformation.translate(x1, y1); + transformation.rotate((angle - 3 * Math.PI / 4)); + + AffineTransform originalTransformation = g.getTransform(); + g.setTransform(transformation); + g.draw(defaultIndicator); + + g.setTransform(originalTransformation); + } + + public void drawConditionalSequenceFlowIndicator(Line2D.Double line, double scaleFactor) { + if (scaleFactor > 1.0) { + return; + } + int horizontal = (int) (CONDITIONAL_INDICATOR_WIDTH * 0.7); + int halfOfHorizontal = horizontal / 2; + int halfOfVertical = CONDITIONAL_INDICATOR_WIDTH / 2; + + Polygon conditionalIndicator = new Polygon(); + conditionalIndicator.addPoint(0, 0); + conditionalIndicator.addPoint(-halfOfHorizontal, halfOfVertical); + conditionalIndicator.addPoint(0, CONDITIONAL_INDICATOR_WIDTH); + conditionalIndicator.addPoint(halfOfHorizontal, halfOfVertical); + + AffineTransform transformation = new AffineTransform(); + transformation.setToIdentity(); + double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1); + transformation.translate(line.x1, line.y1); + transformation.rotate((angle - Math.PI / 2d)); + + AffineTransform originalTransformation = g.getTransform(); + g.setTransform(transformation); + g.draw(conditionalIndicator); + + Paint originalPaint = g.getPaint(); + g.setPaint(CONDITIONAL_INDICATOR_COLOR); + g.fill(conditionalIndicator); + + g.setPaint(originalPaint); + g.setTransform(originalTransformation); + } + + public void drawTask(BufferedImage icon, String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(name, graphicInfo); + g.drawImage(icon, (int) (graphicInfo.getX() + ICON_PADDING / scaleFactor), (int) (graphicInfo.getY() + ICON_PADDING / scaleFactor), (int) (icon.getWidth() / scaleFactor), + (int) (icon.getHeight() / scaleFactor), null); + } + + public void drawTask(String name, GraphicInfo graphicInfo) { + drawTask(name, graphicInfo, false); + } + + public void drawPoolOrLane(String name, GraphicInfo graphicInfo) { + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + g.drawRect(x, y, width, height); + + // Add the name as text, vertical + if (name != null && name.length() > 0) { + // Include some padding + int availableTextSpace = height - 6; + + // Create rotation for derived font + AffineTransform transformation = new AffineTransform(); + transformation.setToIdentity(); + transformation.rotate(270 * Math.PI / 180); + + Font currentFont = g.getFont(); + Font theDerivedFont = currentFont.deriveFont(transformation); + g.setFont(theDerivedFont); + + String truncated = fitTextToWidth(name, availableTextSpace); + int realWidth = fontMetrics.stringWidth(truncated); + + g.drawString(truncated, x + 2 + fontMetrics.getHeight(), 3 + y + availableTextSpace - (availableTextSpace - realWidth) / 2); + g.setFont(currentFont); + } + } + + protected void drawTask(String name, GraphicInfo graphicInfo, boolean thickBorder) { + Paint originalPaint = g.getPaint(); + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + // Create a new gradient paint for every task box, gradient depends on x and y and is not relative + g.setPaint(TASK_BOX_COLOR); + + int arcR = 6; + if (thickBorder) { + arcR = 3; + } + + // shape + RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, arcR, arcR); + g.fill(rect); + g.setPaint(TASK_BORDER_COLOR); + + if (thickBorder) { + Stroke originalStroke = g.getStroke(); + g.setStroke(THICK_TASK_BORDER_STROKE); + g.draw(rect); + g.setStroke(originalStroke); + } else { + g.draw(rect); + } + + g.setPaint(originalPaint); + // text + if (name != null && name.length() > 0) { + int boxWidth = width - (2 * TEXT_PADDING); + int boxHeight = height - 16 - ICON_PADDING - ICON_PADDING - MARKER_WIDTH - 2 - 2; + int boxX = x + width / 2 - boxWidth / 2; + int boxY = y + height / 2 - boxHeight / 2 + ICON_PADDING + ICON_PADDING - 2 - 2; + + drawMultilineCentredText(name, boxX, boxY, boxWidth, boxHeight); + } + } + + protected void drawMultilineCentredText(String text, int x, int y, int boxWidth, int boxHeight) { + drawMultilineText(text, x, y, boxWidth, boxHeight, true); + } + + protected void drawMultilineAnnotationText(String text, int x, int y, int boxWidth, int boxHeight) { + drawMultilineText(text, x, y, boxWidth, boxHeight, false); + } + + protected void drawMultilineText(String text, int x, int y, int boxWidth, int boxHeight, boolean centered) { + // Create an attributed string based in input text + AttributedString attributedString = new AttributedString(text); + attributedString.addAttribute(TextAttribute.FONT, g.getFont()); + attributedString.addAttribute(TextAttribute.FOREGROUND, Color.black); + + AttributedCharacterIterator characterIterator = attributedString.getIterator(); + + int currentHeight = 0; + // Prepare a list of lines of text we'll be drawing + List<TextLayout> layouts = new ArrayList<TextLayout>(); + String lastLine = null; + + LineBreakMeasurer measurer = new LineBreakMeasurer(characterIterator, g.getFontRenderContext()); + + TextLayout layout = null; + while (measurer.getPosition() < characterIterator.getEndIndex() && currentHeight <= boxHeight) { + + int previousPosition = measurer.getPosition(); + + // Request next layout + layout = measurer.nextLayout(boxWidth); + + int height = ((Float) (layout.getDescent() + layout.getAscent() + layout.getLeading())).intValue(); + + if (currentHeight + height > boxHeight) { + // The line we're about to add should NOT be added anymore, append three dots to previous one instead + // to indicate more text is truncated + if (!layouts.isEmpty()) { + layouts.remove(layouts.size() - 1); + + if (lastLine.length() >= 4) { + lastLine = lastLine.substring(0, lastLine.length() - 4) + "..."; + } + layouts.add(new TextLayout(lastLine, g.getFont(), g.getFontRenderContext())); + } + } else { + layouts.add(layout); + lastLine = text.substring(previousPosition, measurer.getPosition()); + currentHeight += height; + } + } + + int currentY = y + (centered ? ((boxHeight - currentHeight) / 2) : 0); + int currentX = 0; + + // Actually draw the lines + for (TextLayout textLayout : layouts) { + + currentY += textLayout.getAscent(); + currentX = x + (centered ? ((boxWidth - ((Double) textLayout.getBounds().getWidth()).intValue()) / 2) : 0); + + textLayout.draw(g, currentX, currentY); + currentY += textLayout.getDescent() + textLayout.getLeading(); + } + + } + + protected String fitTextToWidth(String original, int width) { + String text = original; + + // remove length for "..." + int maxWidth = width - 10; + + while (fontMetrics.stringWidth(text + "...") > maxWidth && text.length() > 0) { + text = text.substring(0, text.length() - 1); + } + + if (!text.equals(original)) { + text = text + "..."; + } + + return text; + } + + public void drawUserTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(USERTASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawScriptTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(SCRIPTTASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawServiceTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(SERVICETASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawReceiveTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(RECEIVETASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawSendTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(SENDTASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawManualTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(MANUALTASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawBusinessRuleTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(BUSINESS_RULE_TASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawCamelTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(CAMEL_TASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawMuleTask(String name, GraphicInfo graphicInfo, double scaleFactor) { + drawTask(MULE_TASK_IMAGE, name, graphicInfo, scaleFactor); + } + + public void drawExpandedSubProcess(String name, GraphicInfo graphicInfo, Boolean isTriggeredByEvent, double scaleFactor) { + RoundRectangle2D rect = new RoundRectangle2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight(), 8, 8); + + // Use different stroke (dashed) + if (isTriggeredByEvent) { + Stroke originalStroke = g.getStroke(); + g.setStroke(EVENT_SUBPROCESS_STROKE); + g.draw(rect); + g.setStroke(originalStroke); + } else { + Paint originalPaint = g.getPaint(); + g.setPaint(SUBPROCESS_BOX_COLOR); + g.fill(rect); + g.setPaint(SUBPROCESS_BORDER_COLOR); + g.draw(rect); + g.setPaint(originalPaint); + } + + if (scaleFactor == 1.0 && name != null && !name.isEmpty()) { + String text = fitTextToWidth(name, (int) graphicInfo.getWidth()); + g.drawString(text, (int) graphicInfo.getX() + 10, (int) graphicInfo.getY() + 15); + } + } + + public void drawCollapsedSubProcess(String name, GraphicInfo graphicInfo, Boolean isTriggeredByEvent) { + drawCollapsedTask(name, graphicInfo, false); + } + + public void drawCollapsedCallActivity(String name, GraphicInfo graphicInfo) { + drawCollapsedTask(name, graphicInfo, true); + } + + protected void drawCollapsedTask(String name, GraphicInfo graphicInfo, boolean thickBorder) { + // The collapsed marker is now visualized separately + drawTask(name, graphicInfo, thickBorder); + } + + public void drawCollapsedMarker(int x, int y, int width, int height) { + // rectangle + int rectangleWidth = MARKER_WIDTH; + int rectangleHeight = MARKER_WIDTH; + Rectangle rect = new Rectangle(x + (width - rectangleWidth) / 2, y + height - rectangleHeight - 3, rectangleWidth, rectangleHeight); + g.draw(rect); + + // plus inside rectangle + Line2D.Double line = new Line2D.Double(rect.getCenterX(), rect.getY() + 2, rect.getCenterX(), rect.getMaxY() - 2); + g.draw(line); + line = new Line2D.Double(rect.getMinX() + 2, rect.getCenterY(), rect.getMaxX() - 2, rect.getCenterY()); + g.draw(line); + } + + public void drawActivityMarkers(int x, int y, int width, int height, boolean multiInstanceSequential, boolean multiInstanceParallel, boolean collapsed) { + if (collapsed) { + if (!multiInstanceSequential && !multiInstanceParallel) { + drawCollapsedMarker(x, y, width, height); + } else { + drawCollapsedMarker(x - MARKER_WIDTH / 2 - 2, y, width, height); + if (multiInstanceSequential) { + drawMultiInstanceMarker(true, x + MARKER_WIDTH / 2 + 2, y, width, height); + } else { + drawMultiInstanceMarker(false, x + MARKER_WIDTH / 2 + 2, y, width, height); + } + } + } else { + if (multiInstanceSequential) { + drawMultiInstanceMarker(true, x, y, width, height); + } else if (multiInstanceParallel) { + drawMultiInstanceMarker(false, x, y, width, height); + } + } + } + + public void drawGateway(GraphicInfo graphicInfo) { + Polygon rhombus = new Polygon(); + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + rhombus.addPoint(x, y + (height / 2)); + rhombus.addPoint(x + (width / 2), y + height); + rhombus.addPoint(x + width, y + (height / 2)); + rhombus.addPoint(x + (width / 2), y); + g.draw(rhombus); + } + + public void drawParallelGateway(GraphicInfo graphicInfo, double scaleFactor) { + // rhombus + drawGateway(graphicInfo); + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + if (scaleFactor == 1.0) { + // plus inside rhombus + Stroke orginalStroke = g.getStroke(); + g.setStroke(GATEWAY_TYPE_STROKE); + Line2D.Double line = new Line2D.Double(x + 10, y + height / 2, x + width - 10, y + height / 2); // horizontal + g.draw(line); + line = new Line2D.Double(x + width / 2, y + height - 10, x + width / 2, y + 10); // vertical + g.draw(line); + g.setStroke(orginalStroke); + } + } + + public void drawExclusiveGateway(GraphicInfo graphicInfo, double scaleFactor) { + // rhombus + drawGateway(graphicInfo); + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + int quarterWidth = width / 4; + int quarterHeight = height / 4; + + if (scaleFactor == 1.0) { + // X inside rhombus + Stroke orginalStroke = g.getStroke(); + g.setStroke(GATEWAY_TYPE_STROKE); + Line2D.Double line = new Line2D.Double(x + quarterWidth + 3, y + quarterHeight + 3, x + 3 * quarterWidth - 3, y + 3 * quarterHeight - 3); + g.draw(line); + line = new Line2D.Double(x + quarterWidth + 3, y + 3 * quarterHeight - 3, x + 3 * quarterWidth - 3, y + quarterHeight + 3); + g.draw(line); + g.setStroke(orginalStroke); + } + } + + public void drawInclusiveGateway(GraphicInfo graphicInfo, double scaleFactor) { + // rhombus + drawGateway(graphicInfo); + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + int diameter = width / 2; + + if (scaleFactor == 1.0) { + // circle inside rhombus + Stroke orginalStroke = g.getStroke(); + g.setStroke(GATEWAY_TYPE_STROKE); + Ellipse2D.Double circle = new Ellipse2D.Double(((width - diameter) / 2) + x, ((height - diameter) / 2) + y, diameter, diameter); + g.draw(circle); + g.setStroke(orginalStroke); + } + } + + public void drawEventBasedGateway(GraphicInfo graphicInfo, double scaleFactor) { + // rhombus + drawGateway(graphicInfo); + + if (scaleFactor == 1.0) { + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + double scale = .6; + + GraphicInfo eventInfo = new GraphicInfo(); + eventInfo.setX(x + width * (1 - scale) / 2); + eventInfo.setY(y + height * (1 - scale) / 2); + eventInfo.setWidth(width * scale); + eventInfo.setHeight(height * scale); + drawCatchingEvent(eventInfo, true, null, "eventGateway", scaleFactor); + + double r = width / 6.; + + // create pentagon (coords with respect to center) + int topX = (int) (.95 * r); // top right corner + int topY = (int) (-.31 * r); + int bottomX = (int) (.59 * r); // bottom right corner + int bottomY = (int) (.81 * r); + + int[] xPoints = new int[]{0, topX, bottomX, -bottomX, -topX}; + int[] yPoints = new int[]{-(int) r, topY, bottomY, bottomY, topY}; + Polygon pentagon = new Polygon(xPoints, yPoints, 5); + pentagon.translate(x + width / 2, y + width / 2); + + // draw + g.drawPolygon(pentagon); + } + } + + public void drawMultiInstanceMarker(boolean sequential, int x, int y, int width, int height) { + int rectangleWidth = MARKER_WIDTH; + int rectangleHeight = MARKER_WIDTH; + int lineX = x + (width - rectangleWidth) / 2; + int lineY = y + height - rectangleHeight - 3; + + Stroke orginalStroke = g.getStroke(); + g.setStroke(MULTI_INSTANCE_STROKE); + + if (sequential) { + g.draw(new Line2D.Double(lineX, lineY, lineX + rectangleWidth, lineY)); + g.draw(new Line2D.Double(lineX, lineY + rectangleHeight / 2, lineX + rectangleWidth, lineY + rectangleHeight / 2)); + g.draw(new Line2D.Double(lineX, lineY + rectangleHeight, lineX + rectangleWidth, lineY + rectangleHeight)); + } else { + g.draw(new Line2D.Double(lineX, lineY, lineX, lineY + rectangleHeight)); + g.draw(new Line2D.Double(lineX + rectangleWidth / 2, lineY, lineX + rectangleWidth / 2, lineY + rectangleHeight)); + g.draw(new Line2D.Double(lineX + rectangleWidth, lineY, lineX + rectangleWidth, lineY + rectangleHeight)); + } + + g.setStroke(orginalStroke); + } + + public void drawHighLight(int x, int y, int width, int height) { + Paint originalPaint = g.getPaint(); + Stroke originalStroke = g.getStroke(); + + g.setPaint(HIGHLIGHT_COLOR); + g.setStroke(THICK_TASK_BORDER_STROKE); + + //TODO 长方形弧度修改 + //RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, 20, 20); + RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, 0, 0); + g.draw(rect); + + g.setPaint(originalPaint); + g.setStroke(originalStroke); + } + + + /** + * Desc: 绘制æ£åœ¨æ‰§è¡Œä¸çš„节点红色高亮显示 + * + * @param x + * @param y + * @param width + * @param height + * @author Fuxs + */ + public void drawRunningActivitiHighLight(int x, int y, int width, int height) { + Paint originalPaint = g.getPaint(); + Stroke originalStroke = g.getStroke(); + + g.setPaint(RUNNING_HIGHLIGHT_COLOR); + g.setStroke(THICK_TASK_BORDER_STROKE); + //todo 修改长方形弧度 + //RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, 20, 20); + RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, 0, 0); + g.draw(rect); + + g.setPaint(originalPaint); + g.setStroke(originalStroke); + } + + public void drawTextAnnotation(String text, GraphicInfo graphicInfo) { + int x = (int) graphicInfo.getX(); + int y = (int) graphicInfo.getY(); + int width = (int) graphicInfo.getWidth(); + int height = (int) graphicInfo.getHeight(); + + Font originalFont = g.getFont(); + Stroke originalStroke = g.getStroke(); + + g.setFont(ANNOTATION_FONT); + + Path2D path = new Path2D.Double(); + x += .5; + int lineLength = 18; + path.moveTo(x + lineLength, y); + path.lineTo(x, y); + path.lineTo(x, y + height); + path.lineTo(x + lineLength, y + height); + + path.lineTo(x + lineLength, y + height - 1); + path.lineTo(x + 1, y + height - 1); + path.lineTo(x + 1, y + 1); + path.lineTo(x + lineLength, y + 1); + path.closePath(); + + g.draw(path); + + int boxWidth = width - (2 * ANNOTATION_TEXT_PADDING); + int boxHeight = height - (2 * ANNOTATION_TEXT_PADDING); + int boxX = x + width / 2 - boxWidth / 2; + int boxY = y + height / 2 - boxHeight / 2; + + if (text != null && text.isEmpty() == false) { + drawMultilineAnnotationText(text, boxX, boxY, boxWidth, boxHeight); + } + + // restore originals + g.setFont(originalFont); + g.setStroke(originalStroke); + } + + public void drawLabel(String text, GraphicInfo graphicInfo) { + drawLabel(text, graphicInfo, true); + } + + /** + * 绘制æµç¨‹çº¿å称 + * Desc: + * + * @param text + * @param graphicInfo + * @param centered + * @author Fuxs + */ + public void drawLabel(String text, GraphicInfo graphicInfo, boolean centered) { + float interline = 1.0f; + + // text + if (text != null && text.length() > 0) { + Paint originalPaint = g.getPaint(); + Font originalFont = g.getFont(); + + g.setPaint(LABEL_COLOR); + g.setFont(LABEL_FONT); + + int wrapWidth = 100; + int textY = (int) (graphicInfo.getY() + graphicInfo.getHeight()); + + // TODO: use drawMultilineText() + AttributedString as = new AttributedString(text); + as.addAttribute(TextAttribute.FOREGROUND, g.getPaint()); + as.addAttribute(TextAttribute.FONT, g.getFont()); + AttributedCharacterIterator aci = as.getIterator(); + FontRenderContext frc = new FontRenderContext(null, true, false); + LineBreakMeasurer lbm = new LineBreakMeasurer(aci, frc); + + while (lbm.getPosition() < text.length()) { + TextLayout tl = lbm.nextLayout(wrapWidth); + textY += tl.getAscent(); + Rectangle2D bb = tl.getBounds(); + double tX = graphicInfo.getX(); + if (centered) { + tX += (int) (graphicInfo.getWidth() / 2 - bb.getWidth() / 2); + } + tl.draw(g, (float) tX, textY); + textY += tl.getDescent() + tl.getLeading() + (interline - 1.0f) * tl.getAscent(); + } + + // restore originals + g.setFont(originalFont); + g.setPaint(originalPaint); + } + } + + /** + * This method makes coordinates of connection flow better. + * + * @param sourceShapeType + * @param targetShapeType + * @param sourceGraphicInfo + * @param targetGraphicInfo + * @param graphicInfoList + */ + public List<GraphicInfo> connectionPerfectionizer(SHAPE_TYPE sourceShapeType, SHAPE_TYPE targetShapeType, GraphicInfo sourceGraphicInfo, GraphicInfo targetGraphicInfo, + List<GraphicInfo> graphicInfoList) { + Shape shapeFirst = createShape(sourceShapeType, sourceGraphicInfo); + Shape shapeLast = createShape(targetShapeType, targetGraphicInfo); + + if (graphicInfoList != null && graphicInfoList.size() > 0) { + GraphicInfo graphicInfoFirst = graphicInfoList.get(0); + GraphicInfo graphicInfoLast = graphicInfoList.get(graphicInfoList.size() - 1); + if (shapeFirst != null) { + graphicInfoFirst.setX(shapeFirst.getBounds2D().getCenterX()); + graphicInfoFirst.setY(shapeFirst.getBounds2D().getCenterY()); + } + if (shapeLast != null) { + graphicInfoLast.setX(shapeLast.getBounds2D().getCenterX()); + graphicInfoLast.setY(shapeLast.getBounds2D().getCenterY()); + } + + Point p = null; + + if (shapeFirst != null) { + Line2D.Double lineFirst = new Line2D.Double(graphicInfoFirst.getX(), graphicInfoFirst.getY(), graphicInfoList.get(1).getX(), graphicInfoList.get(1).getY()); + p = getIntersection(shapeFirst, lineFirst); + if (p != null) { + graphicInfoFirst.setX(p.getX()); + graphicInfoFirst.setY(p.getY()); + } + } + + if (shapeLast != null) { + Line2D.Double lineLast = new Line2D.Double(graphicInfoLast.getX(), graphicInfoLast.getY(), graphicInfoList.get(graphicInfoList.size() - 2).getX(), + graphicInfoList.get(graphicInfoList.size() - 2).getY()); + p = getIntersection(shapeLast, lineLast); + if (p != null) { + graphicInfoLast.setX(p.getX()); + graphicInfoLast.setY(p.getY()); + } + } + } + + return graphicInfoList; + } + + /** + * This method creates shape by type and coordinates. + * + * @param shapeType + * @param graphicInfo + * @return Shape + */ + private static Shape createShape(SHAPE_TYPE shapeType, GraphicInfo graphicInfo) { + if (SHAPE_TYPE.Rectangle.equals(shapeType)) { + // source is rectangle + return new Rectangle2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight()); + } else if (SHAPE_TYPE.Rhombus.equals(shapeType)) { + // source is rhombus + Path2D.Double rhombus = new Path2D.Double(); + rhombus.moveTo(graphicInfo.getX(), graphicInfo.getY() + graphicInfo.getHeight() / 2); + rhombus.lineTo(graphicInfo.getX() + graphicInfo.getWidth() / 2, graphicInfo.getY() + graphicInfo.getHeight()); + rhombus.lineTo(graphicInfo.getX() + graphicInfo.getWidth(), graphicInfo.getY() + graphicInfo.getHeight() / 2); + rhombus.lineTo(graphicInfo.getX() + graphicInfo.getWidth() / 2, graphicInfo.getY()); + rhombus.lineTo(graphicInfo.getX(), graphicInfo.getY() + graphicInfo.getHeight() / 2); + rhombus.closePath(); + return rhombus; + } else if (SHAPE_TYPE.Ellipse.equals(shapeType)) { + // source is ellipse + return new Ellipse2D.Double(graphicInfo.getX(), graphicInfo.getY(), graphicInfo.getWidth(), graphicInfo.getHeight()); + } else { + // unknown source element, just do not correct coordinates + } + return null; + } + + /** + * This method returns intersection point of shape border and line. + * + * @param shape + * @param line + * @return Point + */ + private static Point getIntersection(Shape shape, Line2D.Double line) { + if (shape instanceof Ellipse2D) { + return getEllipseIntersection(shape, line); + } else if (shape instanceof Rectangle2D || shape instanceof Path2D) { + return getShapeIntersection(shape, line); + } else { + // something strange + return null; + } + } + + /** + * This method calculates ellipse intersection with line + * + * @param shape Bounds of this shape used to calculate parameters of inscribed into this bounds ellipse. + * @param line + * @return Intersection point + */ + private static Point getEllipseIntersection(Shape shape, Line2D.Double line) { + double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1); + double x = shape.getBounds2D().getWidth() / 2 * Math.cos(angle) + shape.getBounds2D().getCenterX(); + double y = shape.getBounds2D().getHeight() / 2 * Math.sin(angle) + shape.getBounds2D().getCenterY(); + Point p = new Point(); + p.setLocation(x, y); + return p; + } + + /** + * This method calculates shape intersection with line. + * + * @param shape + * @param line + * @return Intersection point + */ + private static Point getShapeIntersection(Shape shape, Line2D.Double line) { + PathIterator it = shape.getPathIterator(null); + double[] coords = new double[6]; + double[] pos = new double[2]; + Line2D.Double l = new Line2D.Double(); + while (!it.isDone()) { + int type = it.currentSegment(coords); + switch (type) { + case PathIterator.SEG_MOVETO: + pos[0] = coords[0]; + pos[1] = coords[1]; + break; + case PathIterator.SEG_LINETO: + l = new Line2D.Double(pos[0], pos[1], coords[0], coords[1]); + if (line.intersectsLine(l)) { + return getLinesIntersection(line, l); + } + pos[0] = coords[0]; + pos[1] = coords[1]; + break; + case PathIterator.SEG_CLOSE: + break; + default: + // whatever + } + it.next(); + } + return null; + } + + /** + * This method calculates intersections of two lines. + * + * @param a Line 1 + * @param b Line 2 + * @return Intersection point + */ + private static Point getLinesIntersection(Line2D a, Line2D b) { + double d = (a.getX1() - a.getX2()) * (b.getY2() - b.getY1()) - (a.getY1() - a.getY2()) * (b.getX2() - b.getX1()); + double da = (a.getX1() - b.getX1()) * (b.getY2() - b.getY1()) - (a.getY1() - b.getY1()) * (b.getX2() - b.getX1()); + // double db = (a.getX1()-a.getX2())*(a.getY1()-b.getY1()) - (a.getY1()-a.getY2())*(a.getX1()-b.getX1()); + double ta = da / d; + // double tb = db/d; + Point p = new Point(); + p.setLocation(a.getX1() + ta * (a.getX2() - a.getX1()), a.getY1() + ta * (a.getY2() - a.getY1())); + return p; + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramGenerator.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramGenerator.java new file mode 100644 index 000000000..be8d5e82a --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/flowimg/img/CustomProcessDiagramGenerator.java @@ -0,0 +1,1008 @@ +package com.skyeye.activiti.flowimg.img; + +import org.flowable.bpmn.model.Process; +import org.flowable.bpmn.model.*; +import org.flowable.image.ProcessDiagramGenerator; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.awt.image.BufferedImage; +import java.io.InputStream; +import java.util.*; + +/** + * + * @ClassName: CustomProcessDiagramGenerator + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 1:49 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +public class CustomProcessDiagramGenerator implements ProcessDiagramGenerator { + private static final Logger LOG = LoggerFactory.getLogger(CustomProcessDiagramGenerator.class); + + + protected Map<Class<? extends BaseElement>, ActivityDrawInstruction> activityDrawInstructions = new HashMap<Class<? extends BaseElement>, ActivityDrawInstruction>(); + protected Map<Class<? extends BaseElement>, ArtifactDrawInstruction> artifactDrawInstructions = new HashMap<Class<? extends BaseElement>, ArtifactDrawInstruction>(); + + public CustomProcessDiagramGenerator() { + this(1.0); + } + + // The instructions on how to draw a certain construct is + // created statically and stored in a map for performance. + public CustomProcessDiagramGenerator(final double scaleFactor) { + // start event + activityDrawInstructions.put(StartEvent.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + StartEvent startEvent = (StartEvent) flowNode; + if (startEvent.getEventDefinitions() != null && !startEvent.getEventDefinitions().isEmpty()) { + EventDefinition eventDefinition = startEvent.getEventDefinitions().get(0); + if (eventDefinition instanceof TimerEventDefinition) { + processDiagramCanvas.drawTimerStartEvent(graphicInfo, scaleFactor); + } else if (eventDefinition instanceof ErrorEventDefinition) { + processDiagramCanvas.drawErrorStartEvent(graphicInfo, scaleFactor); + } else if (eventDefinition instanceof SignalEventDefinition) { + processDiagramCanvas.drawSignalStartEvent(graphicInfo, scaleFactor); + } else if (eventDefinition instanceof MessageEventDefinition) { + processDiagramCanvas.drawMessageStartEvent(graphicInfo, scaleFactor); + } else { + processDiagramCanvas.drawNoneStartEvent(graphicInfo); + } + } else { + processDiagramCanvas.drawNoneStartEvent(graphicInfo); + } + } + }); + + // signal catch + activityDrawInstructions.put(IntermediateCatchEvent.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + IntermediateCatchEvent intermediateCatchEvent = (IntermediateCatchEvent) flowNode; + if (intermediateCatchEvent.getEventDefinitions() != null && !intermediateCatchEvent + .getEventDefinitions().isEmpty()) { + if (intermediateCatchEvent.getEventDefinitions().get(0) instanceof SignalEventDefinition) { + processDiagramCanvas.drawCatchingSignalEvent(flowNode.getName(), graphicInfo, true, + scaleFactor); + } else if (intermediateCatchEvent.getEventDefinitions().get(0) instanceof TimerEventDefinition) { + processDiagramCanvas.drawCatchingTimerEvent(flowNode.getName(), graphicInfo, true, scaleFactor); + } else if (intermediateCatchEvent.getEventDefinitions().get(0) instanceof MessageEventDefinition) { + processDiagramCanvas.drawCatchingMessageEvent(flowNode.getName(), graphicInfo, true, + scaleFactor); + } + } + } + }); + + // signal throw + activityDrawInstructions.put(ThrowEvent.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + ThrowEvent throwEvent = (ThrowEvent) flowNode; + if (throwEvent.getEventDefinitions() != null && !throwEvent.getEventDefinitions().isEmpty()) { + if (throwEvent.getEventDefinitions().get(0) instanceof SignalEventDefinition) { + processDiagramCanvas.drawThrowingSignalEvent(graphicInfo, scaleFactor); + } else if (throwEvent.getEventDefinitions().get(0) instanceof CompensateEventDefinition) { + processDiagramCanvas.drawThrowingCompensateEvent(graphicInfo, scaleFactor); + } else { + processDiagramCanvas.drawThrowingNoneEvent(graphicInfo, scaleFactor); + } + } else { + processDiagramCanvas.drawThrowingNoneEvent(graphicInfo, scaleFactor); + } + } + }); + + // end event + activityDrawInstructions.put(EndEvent.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + EndEvent endEvent = (EndEvent) flowNode; + if (endEvent.getEventDefinitions() != null && !endEvent.getEventDefinitions().isEmpty()) { + if (endEvent.getEventDefinitions().get(0) instanceof ErrorEventDefinition) { + processDiagramCanvas.drawErrorEndEvent(flowNode.getName(), graphicInfo, scaleFactor); + } else { + processDiagramCanvas.drawNoneEndEvent(graphicInfo, scaleFactor); + } + } else { + processDiagramCanvas.drawNoneEndEvent(graphicInfo, scaleFactor); + } + } + }); + + // task + activityDrawInstructions.put(Task.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawTask(flowNode.getName(), graphicInfo); + } + }); + + // user task + activityDrawInstructions.put(UserTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawUserTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // script task + activityDrawInstructions.put(ScriptTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawScriptTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // service task + activityDrawInstructions.put(ServiceTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + ServiceTask serviceTask = (ServiceTask) flowNode; + if ("camel".equalsIgnoreCase(serviceTask.getType())) { + processDiagramCanvas.drawCamelTask(serviceTask.getName(), graphicInfo, scaleFactor); + } else if ("mule".equalsIgnoreCase(serviceTask.getType())) { + processDiagramCanvas.drawMuleTask(serviceTask.getName(), graphicInfo, scaleFactor); + } else { + processDiagramCanvas.drawServiceTask(serviceTask.getName(), graphicInfo, scaleFactor); + } + } + }); + + // receive task + activityDrawInstructions.put(ReceiveTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawReceiveTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // send task + activityDrawInstructions.put(SendTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawSendTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // manual task + activityDrawInstructions.put(ManualTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawManualTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // businessRuleTask task + activityDrawInstructions.put(BusinessRuleTask.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawBusinessRuleTask(flowNode.getName(), graphicInfo, scaleFactor); + } + }); + + // exclusive gateway + activityDrawInstructions.put(ExclusiveGateway.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawExclusiveGateway(graphicInfo, scaleFactor); + } + }); + + // inclusive gateway + activityDrawInstructions.put(InclusiveGateway.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawInclusiveGateway(graphicInfo, scaleFactor); + } + }); + + // parallel gateway + activityDrawInstructions.put(ParallelGateway.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawParallelGateway(graphicInfo, scaleFactor); + } + }); + + // event based gateway + activityDrawInstructions.put(EventGateway.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawEventBasedGateway(graphicInfo, scaleFactor); + } + }); + + // Boundary timer + activityDrawInstructions.put(BoundaryEvent.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + BoundaryEvent boundaryEvent = (BoundaryEvent) flowNode; + if (boundaryEvent.getEventDefinitions() != null && !boundaryEvent.getEventDefinitions().isEmpty()) { + if (boundaryEvent.getEventDefinitions().get(0) instanceof TimerEventDefinition) { + + processDiagramCanvas.drawCatchingTimerEvent(flowNode.getName(), graphicInfo, boundaryEvent + .isCancelActivity(), scaleFactor); + + } else if (boundaryEvent.getEventDefinitions().get(0) instanceof ErrorEventDefinition) { + + processDiagramCanvas.drawCatchingErrorEvent(graphicInfo, boundaryEvent.isCancelActivity(), + scaleFactor); + + } else if (boundaryEvent.getEventDefinitions().get(0) instanceof SignalEventDefinition) { + processDiagramCanvas.drawCatchingSignalEvent(flowNode.getName(), graphicInfo, boundaryEvent + .isCancelActivity(), scaleFactor); + + } else if (boundaryEvent.getEventDefinitions().get(0) instanceof MessageEventDefinition) { + processDiagramCanvas.drawCatchingMessageEvent(flowNode.getName(), graphicInfo, boundaryEvent + .isCancelActivity(), scaleFactor); + + } else if (boundaryEvent.getEventDefinitions().get(0) instanceof CompensateEventDefinition) { + processDiagramCanvas.drawCatchingCompensateEvent(graphicInfo, boundaryEvent.isCancelActivity(), + scaleFactor); + } + } + + } + }); + + // subprocess + activityDrawInstructions.put(SubProcess.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + if (graphicInfo.getExpanded() != null && !graphicInfo.getExpanded()) { + processDiagramCanvas.drawCollapsedSubProcess(flowNode.getName(), graphicInfo, false); + } else { + processDiagramCanvas.drawExpandedSubProcess(flowNode.getName(), graphicInfo, false, scaleFactor); + } + } + }); + + // Event subprocess + activityDrawInstructions.put(EventSubProcess.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + if (graphicInfo.getExpanded() != null && !graphicInfo.getExpanded()) { + processDiagramCanvas.drawCollapsedSubProcess(flowNode.getName(), graphicInfo, true); + } else { + processDiagramCanvas.drawExpandedSubProcess(flowNode.getName(), graphicInfo, true, scaleFactor); + } + } + }); + + // call activity + activityDrawInstructions.put(CallActivity.class, new ActivityDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + processDiagramCanvas.drawCollapsedCallActivity(flowNode.getName(), graphicInfo); + } + }); + + // text annotation + artifactDrawInstructions.put(TextAnnotation.class, new ArtifactDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, Artifact artifact) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(artifact.getId()); + TextAnnotation textAnnotation = (TextAnnotation) artifact; + processDiagramCanvas.drawTextAnnotation(textAnnotation.getText(), graphicInfo); + } + }); + + // association + artifactDrawInstructions.put(Association.class, new ArtifactDrawInstruction() { + + @Override + public void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, Artifact artifact) { + Association association = (Association) artifact; + String sourceRef = association.getSourceRef(); + String targetRef = association.getTargetRef(); + + // source and target can be instance of FlowElement or Artifact + BaseElement sourceElement = bpmnModel.getFlowElement(sourceRef); + BaseElement targetElement = bpmnModel.getFlowElement(targetRef); + if (sourceElement == null) { + sourceElement = bpmnModel.getArtifact(sourceRef); + } + if (targetElement == null) { + targetElement = bpmnModel.getArtifact(targetRef); + } + List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(artifact.getId()); + graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement, + targetElement, graphicInfoList); + int[] xPoints = new int[graphicInfoList.size()]; + int[] yPoints = new int[graphicInfoList.size()]; + for (int i = 1; i < graphicInfoList.size(); i++) { + GraphicInfo graphicInfo = graphicInfoList.get(i); + GraphicInfo previousGraphicInfo = graphicInfoList.get(i - 1); + + if (i == 1) { + xPoints[0] = (int) previousGraphicInfo.getX(); + yPoints[0] = (int) previousGraphicInfo.getY(); + } + xPoints[i] = (int) graphicInfo.getX(); + yPoints[i] = (int) graphicInfo.getY(); + } + + AssociationDirection associationDirection = association.getAssociationDirection(); + processDiagramCanvas.drawAssociation(xPoints, yPoints, associationDirection, false, scaleFactor); + } + }); + } + + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> highLightedFlows, String activityFontName, String labelFontName, ClassLoader customClassLoader, + double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + + return generateProcessDiagram(bpmnModel, imageType, highLightedActivities, new ArrayList<String>(), + highLightedFlows, activityFontName, labelFontName, customClassLoader, scaleFactor, drawSequenceFlowNameWithNoLabelDI).generateImage( + imageType); + } + + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> highLightedFlows, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, 1.0, drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> highLightedFlows, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, + scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, highLightedActivities, Collections.<String>emptyList(), drawSequenceFlowNameWithNoLabelDI); + } + + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, highLightedActivities, Collections.<String>emptyList(), + scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName, + String labelFontName, ClassLoader customClassLoader, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, Collections.<String>emptyList(), Collections.<String>emptyList(), + activityFontName, labelFontName, customClassLoader, 1.0, drawSequenceFlowNameWithNoLabelDI); + } + + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName, + String labelFontName, ClassLoader customClassLoader, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + + return generateDiagram(bpmnModel, imageType, Collections.<String>emptyList(), Collections.<String>emptyList(), + activityFontName, labelFontName, customClassLoader, scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + public InputStream generatePngDiagram(BpmnModel bpmnModel) { + + return generatePngDiagram(bpmnModel, 1.0, true); + } + + @Override + public InputStream generatePngDiagram(BpmnModel bpmnModel, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, "png", Collections.<String>emptyList(), Collections.<String>emptyList(), + scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generateJpgDiagram(BpmnModel bpmnModel) { + return generateDiagram(bpmnModel, "jpg", Collections.<String>emptyList(), Collections.<String>emptyList(), true); + + } + + @Override + public InputStream generateJpgDiagram(BpmnModel bpmnModel, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, "jpg", Collections.<String>emptyList(), Collections.<String>emptyList(), drawSequenceFlowNameWithNoLabelDI); + } + + + public BufferedImage generateImage(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> highLightedFlows, String activityFontName, String labelFontName, ClassLoader customClassLoader, + double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + + return generateProcessDiagram(bpmnModel, imageType, highLightedActivities, new ArrayList<String>(), + highLightedFlows, activityFontName, labelFontName, customClassLoader, scaleFactor, drawSequenceFlowNameWithNoLabelDI) + .generateBufferedImage(imageType); + } + + public BufferedImage generateImage(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> highLightedFlows, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + + return generateImage(bpmnModel, imageType, highLightedActivities, highLightedFlows, null, null, null, + scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + + protected CustomProcessDiagramCanvas generateProcessDiagram(BpmnModel bpmnModel, String imageType, + List<String> highLightedActivities, List<String> runningActivitiIdList, List<String> highLightedFlows, + String activityFontName, String labelFontName, ClassLoader customClassLoader, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + + CustomProcessDiagramCanvas processDiagramCanvas = initProcessDiagramCanvas(bpmnModel, imageType, + activityFontName, labelFontName, customClassLoader); + + // Draw pool shape, if process is participant in collaboration + for (Pool pool : bpmnModel.getPools()) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(pool.getId()); + processDiagramCanvas.drawPoolOrLane(pool.getName(), graphicInfo); + } + + // Draw lanes + for (Process process : bpmnModel.getProcesses()) { + for (Lane lane : process.getLanes()) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(lane.getId()); + processDiagramCanvas.drawPoolOrLane(lane.getName(), graphicInfo); + } + } + + // Draw activities and their sequence-flows + /** + * 绘制æµç¨‹å›¾ä¸Šçš„所有节点和æµç¨‹çº¿ï¼Œå¯¹é«˜äº®æ˜¾ç¤ºçš„节点和æµç¨‹çº¿è¿›è¡Œç‰¹æ®Šå¤„ç† + */ + for (FlowNode flowNode : bpmnModel.getProcesses().get(0).findFlowElementsOfType(FlowNode.class)) { + drawActivity(processDiagramCanvas, bpmnModel, flowNode, highLightedActivities, runningActivitiIdList, + highLightedFlows, scaleFactor); + } + + // Draw artifacts + for (Process process : bpmnModel.getProcesses()) { + for (Artifact artifact : process.getArtifacts()) { + drawArtifact(processDiagramCanvas, bpmnModel, artifact); + } + } + + return processDiagramCanvas; + } + + /** + * Desc: 绘制æµç¨‹å›¾ä¸Šçš„所有节点和æµç¨‹çº¿ï¼Œå¯¹é«˜äº®æ˜¾ç¤ºçš„节点和æµç¨‹çº¿è¿›è¡Œç‰¹æ®Šå¤„ç† + * + * @param processDiagramCanvas + * @param bpmnModel + * @param flowNode + * @param highLightedActivities + * @param highLightedFlows + * @param scaleFactor + * @author Fuxs + */ + protected void drawActivity(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode, + List<String> highLightedActivities, List<String> runningActivitiIdList, List<String> highLightedFlows, + double scaleFactor) { + ActivityDrawInstruction drawInstruction = activityDrawInstructions.get(flowNode.getClass()); + if (drawInstruction != null) { + drawInstruction.draw(processDiagramCanvas, bpmnModel, flowNode); + // Gather info on the multi instance marker + boolean multiInstanceSequential = false, multiInstanceParallel = false, collapsed = false; + if (flowNode instanceof Activity) { + Activity activity = (Activity) flowNode; + MultiInstanceLoopCharacteristics multiInstanceLoopCharacteristics = activity.getLoopCharacteristics(); + if (multiInstanceLoopCharacteristics != null) { + multiInstanceSequential = multiInstanceLoopCharacteristics.isSequential(); + multiInstanceParallel = !multiInstanceSequential; + } + } + + // Gather info on the collapsed marker + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + if (flowNode instanceof SubProcess) { + collapsed = graphicInfo.getExpanded() != null && !graphicInfo.getExpanded(); + } else if (flowNode instanceof CallActivity) { + collapsed = true; + } + + if (scaleFactor == 1.0) { + // Actually draw the markers + processDiagramCanvas.drawActivityMarkers((int) graphicInfo.getX(), (int) graphicInfo.getY(), + (int) graphicInfo.getWidth(), (int) graphicInfo.getHeight(), multiInstanceSequential, + multiInstanceParallel, collapsed); + } + // 绘制需è¦çªå‡ºå¼ºè°ƒçš„活动 + if (highLightedActivities.contains(flowNode.getId())) { + //如果节点为当å‰æ£åœ¨å¤„ç†ä¸çš„节点,则红色高亮显示 + if (runningActivitiIdList.contains(flowNode.getId())) { + LOG.debug("[绘制]-当å‰æ£åœ¨å¤„ç†ä¸çš„节点-红色高亮显示节点["+flowNode.getId()+"-"+flowNode.getName()+"]"); + drawRunningActivitiHighLight(processDiagramCanvas, bpmnModel.getGraphicInfo(flowNode.getId())); + } else { + LOG.debug("[绘制]-高亮显示节点["+flowNode.getId()+"-"+flowNode.getName()+"]"); + drawHighLight(processDiagramCanvas, bpmnModel.getGraphicInfo(flowNode.getId())); + } + } + } + // 绘制当å‰èŠ‚点的æµç¨‹çº¿ + for (SequenceFlow sequenceFlow : flowNode.getOutgoingFlows()) { + boolean highLighted = (highLightedFlows.contains(sequenceFlow.getId())); + String defaultFlow = null; + if (flowNode instanceof Activity) { + defaultFlow = ((Activity) flowNode).getDefaultFlow(); + } else if (flowNode instanceof Gateway) { + defaultFlow = ((Gateway) flowNode).getDefaultFlow(); + } + + boolean isDefault = false; + if (defaultFlow != null && defaultFlow.equalsIgnoreCase(sequenceFlow.getId())) { + isDefault = true; + } + boolean drawConditionalIndicator = sequenceFlow.getConditionExpression() != null && !(flowNode instanceof Gateway); + + String sourceRef = sequenceFlow.getSourceRef(); + String targetRef = sequenceFlow.getTargetRef(); + FlowElement sourceElement = bpmnModel.getFlowElement(sourceRef); + FlowElement targetElement = bpmnModel.getFlowElement(targetRef); + List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(sequenceFlow.getId()); + if (graphicInfoList != null && graphicInfoList.size() > 0) { + graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement, + targetElement, graphicInfoList); + int[] xPoints = new int[graphicInfoList.size()]; + int[] yPoints = new int[graphicInfoList.size()]; + for (int i = 1; i < graphicInfoList.size(); i++) { + GraphicInfo graphicInfo = graphicInfoList.get(i); + GraphicInfo previousGraphicInfo = graphicInfoList.get(i - 1); + if (i == 1) { + xPoints[0] = (int) previousGraphicInfo.getX(); + yPoints[0] = (int) previousGraphicInfo.getY(); + } + xPoints[i] = (int) graphicInfo.getX(); + yPoints[i] = (int) graphicInfo.getY(); + + } + + processDiagramCanvas.drawSequenceflow(xPoints, yPoints, drawConditionalIndicator, isDefault, + highLighted, scaleFactor); + //绘制æµç¨‹çº¿å称 + GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId()); +// if (labelGraphicInfo != null) { + GraphicInfo lineCenter = getLineCenter(graphicInfoList); + processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, true); +// } + } + } + + // Nested elements + if (flowNode instanceof FlowElementsContainer) { + for (FlowElement nestedFlowElement : ((FlowElementsContainer) flowNode).getFlowElements()) { + if (nestedFlowElement instanceof FlowNode) { + drawActivity(processDiagramCanvas, bpmnModel, (FlowNode) nestedFlowElement, highLightedActivities, + runningActivitiIdList, highLightedFlows, scaleFactor); + } + } + } + } + + /** + * This method makes coordinates of connection flow better. + * + * @param processDiagramCanvas + * @param bpmnModel + * @param sourceElement + * @param targetElement + * @param graphicInfoList + * @return + */ + protected static List<GraphicInfo> connectionPerfectionizer(CustomProcessDiagramCanvas processDiagramCanvas, + BpmnModel bpmnModel, BaseElement sourceElement, BaseElement targetElement, + List<GraphicInfo> graphicInfoList) { + GraphicInfo sourceGraphicInfo = bpmnModel.getGraphicInfo(sourceElement.getId()); + GraphicInfo targetGraphicInfo = bpmnModel.getGraphicInfo(targetElement.getId()); + + CustomProcessDiagramCanvas.SHAPE_TYPE sourceShapeType = getShapeType(sourceElement); + CustomProcessDiagramCanvas.SHAPE_TYPE targetShapeType = getShapeType(targetElement); + + return processDiagramCanvas.connectionPerfectionizer(sourceShapeType, targetShapeType, sourceGraphicInfo, + targetGraphicInfo, graphicInfoList); + } + + /** + * This method returns shape type of base element.<br> + * Each element can be presented as rectangle, rhombus, or ellipse. + * + * @param baseElement + * @return CustomProcessDiagramCanvas.SHAPE_TYPE + */ + protected static CustomProcessDiagramCanvas.SHAPE_TYPE getShapeType(BaseElement baseElement) { + if (baseElement instanceof Task || baseElement instanceof Activity || baseElement instanceof TextAnnotation) { + return CustomProcessDiagramCanvas.SHAPE_TYPE.Rectangle; + } else if (baseElement instanceof Gateway) { + return CustomProcessDiagramCanvas.SHAPE_TYPE.Rhombus; + } else if (baseElement instanceof Event) { + return CustomProcessDiagramCanvas.SHAPE_TYPE.Ellipse; + } else { + // unknown source element, just do not correct coordinates + } + return null; + } + + protected static GraphicInfo getLineCenter(List<GraphicInfo> graphicInfoList) { + GraphicInfo gi = new GraphicInfo(); + + int[] xPoints = new int[graphicInfoList.size()]; + int[] yPoints = new int[graphicInfoList.size()]; + + double length = 0; + double[] lengths = new double[graphicInfoList.size()]; + lengths[0] = 0; + double m; + for (int i = 1; i < graphicInfoList.size(); i++) { + GraphicInfo graphicInfo = graphicInfoList.get(i); + GraphicInfo previousGraphicInfo = graphicInfoList.get(i - 1); + + if (i == 1) { + xPoints[0] = (int) previousGraphicInfo.getX(); + yPoints[0] = (int) previousGraphicInfo.getY(); + } + xPoints[i] = (int) graphicInfo.getX(); + yPoints[i] = (int) graphicInfo.getY(); + + length += Math.sqrt(Math.pow((int) graphicInfo.getX() - (int) previousGraphicInfo.getX(), 2) + Math.pow( + (int) graphicInfo.getY() - (int) previousGraphicInfo.getY(), 2)); + lengths[i] = length; + } + m = length / 2; + int p1 = 0, p2 = 1; + for (int i = 1; i < lengths.length; i++) { + double len = lengths[i]; + p1 = i - 1; + p2 = i; + if (len > m) { + break; + } + } + + GraphicInfo graphicInfo1 = graphicInfoList.get(p1); + GraphicInfo graphicInfo2 = graphicInfoList.get(p2); + + double AB = (int) graphicInfo2.getX() - (int) graphicInfo1.getX(); + double OA = (int) graphicInfo2.getY() - (int) graphicInfo1.getY(); + double OB = lengths[p2] - lengths[p1]; + double ob = m - lengths[p1]; + double ab = AB * ob / OB; + double oa = OA * ob / OB; + + double mx = graphicInfo1.getX() + ab; + double my = graphicInfo1.getY() + oa; + + gi.setX(mx); + gi.setY(my); + return gi; + } + + protected void drawArtifact(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, + Artifact artifact) { + + ArtifactDrawInstruction drawInstruction = artifactDrawInstructions.get(artifact.getClass()); + if (drawInstruction != null) { + drawInstruction.draw(processDiagramCanvas, bpmnModel, artifact); + } + } + + private static void drawHighLight(CustomProcessDiagramCanvas processDiagramCanvas, GraphicInfo graphicInfo) { + processDiagramCanvas.drawHighLight((int) graphicInfo.getX(), (int) graphicInfo.getY(), (int) graphicInfo + .getWidth(), (int) graphicInfo.getHeight()); + + } + + /** + * Desc:绘制æ£åœ¨æ‰§è¡Œä¸çš„节点红色高亮显示 + * + * @param processDiagramCanvas + * @param graphicInfo + * @author Fuxs + */ + private static void drawRunningActivitiHighLight(CustomProcessDiagramCanvas processDiagramCanvas, GraphicInfo graphicInfo) { + processDiagramCanvas.drawRunningActivitiHighLight((int) graphicInfo.getX(), (int) graphicInfo.getY(), (int) graphicInfo + .getWidth(), (int) graphicInfo.getHeight()); + + } + + protected static CustomProcessDiagramCanvas initProcessDiagramCanvas(BpmnModel bpmnModel, String imageType, + String activityFontName, String labelFontName, ClassLoader customClassLoader) { + // 我们需è¦è®¡ç®—最大值以了解图åƒçš„æ•´ä½“å¤§å° + double minX = Double.MAX_VALUE; + double maxX = 0; + double minY = Double.MAX_VALUE; + double maxY = 0; + + for (Pool pool : bpmnModel.getPools()) { + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(pool.getId()); + minX = graphicInfo.getX(); + maxX = graphicInfo.getX() + graphicInfo.getWidth(); + minY = graphicInfo.getY(); + maxY = graphicInfo.getY() + graphicInfo.getHeight(); + } + + List<FlowNode> flowNodes = gatherAllFlowNodes(bpmnModel); + for (FlowNode flowNode : flowNodes) { + + GraphicInfo flowNodeGraphicInfo = bpmnModel.getGraphicInfo(flowNode.getId()); + + // 宽度 + if (flowNodeGraphicInfo.getX() + flowNodeGraphicInfo.getWidth() > maxX) { + maxX = flowNodeGraphicInfo.getX() + flowNodeGraphicInfo.getWidth(); + } + if (flowNodeGraphicInfo.getX() < minX) { + minX = flowNodeGraphicInfo.getX(); + } + // 高度 + if (flowNodeGraphicInfo.getY() + flowNodeGraphicInfo.getHeight() > maxY) { + maxY = flowNodeGraphicInfo.getY() + flowNodeGraphicInfo.getHeight(); + } + if (flowNodeGraphicInfo.getY() < minY) { + minY = flowNodeGraphicInfo.getY(); + } + + for (SequenceFlow sequenceFlow : flowNode.getOutgoingFlows()) { + List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(sequenceFlow.getId()); + if (graphicInfoList != null) { + for (GraphicInfo graphicInfo : graphicInfoList) { + // width + if (graphicInfo.getX() > maxX) { + maxX = graphicInfo.getX(); + } + if (graphicInfo.getX() < minX) { + minX = graphicInfo.getX(); + } + // height + if (graphicInfo.getY() > maxY) { + maxY = graphicInfo.getY(); + } + if (graphicInfo.getY() < minY) { + minY = graphicInfo.getY(); + } + } + } + } + } + + List<Artifact> artifacts = gatherAllArtifacts(bpmnModel); + for (Artifact artifact : artifacts) { + + GraphicInfo artifactGraphicInfo = bpmnModel.getGraphicInfo(artifact.getId()); + + if (artifactGraphicInfo != null) { + // 宽度 + if (artifactGraphicInfo.getX() + artifactGraphicInfo.getWidth() > maxX) { + maxX = artifactGraphicInfo.getX() + artifactGraphicInfo.getWidth(); + } + if (artifactGraphicInfo.getX() < minX) { + minX = artifactGraphicInfo.getX(); + } + // 高度 + if (artifactGraphicInfo.getY() + artifactGraphicInfo.getHeight() > maxY) { + maxY = artifactGraphicInfo.getY() + artifactGraphicInfo.getHeight(); + } + if (artifactGraphicInfo.getY() < minY) { + minY = artifactGraphicInfo.getY(); + } + } + + List<GraphicInfo> graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(artifact.getId()); + if (graphicInfoList != null) { + for (GraphicInfo graphicInfo : graphicInfoList) { + // 宽度 + if (graphicInfo.getX() > maxX) { + maxX = graphicInfo.getX(); + } + if (graphicInfo.getX() < minX) { + minX = graphicInfo.getX(); + } + // 高度 + if (graphicInfo.getY() > maxY) { + maxY = graphicInfo.getY(); + } + if (graphicInfo.getY() < minY) { + minY = graphicInfo.getY(); + } + } + } + } + + int nrOfLanes = 0; + for (Process process : bpmnModel.getProcesses()) { + for (Lane l : process.getLanes()) { + + nrOfLanes++; + + GraphicInfo graphicInfo = bpmnModel.getGraphicInfo(l.getId()); + // 宽度 + if (graphicInfo.getX() + graphicInfo.getWidth() > maxX) { + maxX = graphicInfo.getX() + graphicInfo.getWidth(); + } + if (graphicInfo.getX() < minX) { + minX = graphicInfo.getX(); + } + // 高度 + if (graphicInfo.getY() + graphicInfo.getHeight() > maxY) { + maxY = graphicInfo.getY() + graphicInfo.getHeight(); + } + if (graphicInfo.getY() < minY) { + minY = graphicInfo.getY(); + } + } + } + + // Special case, see http://jira.codehaus.org/browse/ACT-1431 + if (flowNodes.isEmpty() && bpmnModel.getPools().isEmpty() && nrOfLanes == 0) { + // Nothing to show + minX = 0; + minY = 0; + } + + return new CustomProcessDiagramCanvas((int) maxX + 10, (int) maxY + 10, (int) minX, (int) minY, imageType, + activityFontName, labelFontName, customClassLoader); + } + + protected static List<Artifact> gatherAllArtifacts(BpmnModel bpmnModel) { + List<Artifact> artifacts = new ArrayList<Artifact>(); + for (Process process : bpmnModel.getProcesses()) { + artifacts.addAll(process.getArtifacts()); + } + return artifacts; + } + + protected static List<FlowNode> gatherAllFlowNodes(BpmnModel bpmnModel) { + List<FlowNode> flowNodes = new ArrayList<FlowNode>(); + for (Process process : bpmnModel.getProcesses()) { + flowNodes.addAll(gatherAllFlowNodes(process)); + } + return flowNodes; + } + + protected static List<FlowNode> gatherAllFlowNodes(FlowElementsContainer flowElementsContainer) { + List<FlowNode> flowNodes = new ArrayList<FlowNode>(); + for (FlowElement flowElement : flowElementsContainer.getFlowElements()) { + if (flowElement instanceof FlowNode) { + flowNodes.add((FlowNode) flowElement); + } + if (flowElement instanceof FlowElementsContainer) { + flowNodes.addAll(gatherAllFlowNodes((FlowElementsContainer) flowElement)); + } + } + return flowNodes; + } + + public Map<Class<? extends BaseElement>, ActivityDrawInstruction> getActivityDrawInstructions() { + return activityDrawInstructions; + } + + public void setActivityDrawInstructions( + Map<Class<? extends BaseElement>, ActivityDrawInstruction> activityDrawInstructions) { + this.activityDrawInstructions = activityDrawInstructions; + } + + public Map<Class<? extends BaseElement>, ArtifactDrawInstruction> getArtifactDrawInstructions() { + return artifactDrawInstructions; + } + + public void setArtifactDrawInstructions( + Map<Class<? extends BaseElement>, ArtifactDrawInstruction> artifactDrawInstructions) { + this.artifactDrawInstructions = artifactDrawInstructions; + } + + protected interface ActivityDrawInstruction { + + void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, FlowNode flowNode); + } + + protected interface ArtifactDrawInstruction { + + void draw(CustomProcessDiagramCanvas processDiagramCanvas, BpmnModel bpmnModel, Artifact artifact); + } + + + /** + * Desc: 自定义生æˆDiagramæ–¹æ³•ï¼Œæ·»åŠ å¯¹æ£åœ¨æ‰§è¡Œä¸çš„节点红色高亮显示 + * + * @param bpmnModel + * @param imageType + * @param highLightedActivities + * @param runningActivitiIdList + * @param highLightedFlows + * @param activityFontName + * @param labelFontName + * @param annotationFontName + * @param customClassLoader + * @param scaleFactor + * @return + * @author Fuxs + */ + public InputStream generateDiagramCustom(BpmnModel bpmnModel, String imageType, List<String> highLightedActivities, + List<String> runningActivitiIdList, List<String> highLightedFlows, String activityFontName, + String labelFontName, String annotationFontName, ClassLoader customClassLoader, double scaleFactor) { + // TODO Auto-generated method stub + return generateProcessDiagram(bpmnModel, imageType, highLightedActivities, runningActivitiIdList, + highLightedFlows, activityFontName, labelFontName, customClassLoader, scaleFactor, true).generateImage( + imageType); + } + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName, + String labelFontName, String annotationFontName, ClassLoader customClassLoader, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, imageType, Collections.<String>emptyList(), Collections.<String>emptyList(), + activityFontName, labelFontName, customClassLoader, 1.0, drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, String imageType, String activityFontName, + String labelFontName, String annotationFontName, ClassLoader customClassLoader, double scaleFactor, boolean drawSequenceFlowNameWithNoLabelDI) { + // TODO Auto-generated method stub + return generateDiagram(bpmnModel, imageType, Collections.<String>emptyList(), Collections.<String>emptyList(), + activityFontName, labelFontName, customClassLoader, scaleFactor, drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generatePngDiagram(BpmnModel bpmnModel, boolean drawSequenceFlowNameWithNoLabelDI) { + return generateDiagram(bpmnModel, "png", Collections.<String>emptyList(), Collections.<String>emptyList(), drawSequenceFlowNameWithNoLabelDI); + } + + @Override + public InputStream generateDiagram(BpmnModel bpmnModel, + String imageType, + List<String> highLightedActivities, + List<String> highLightedFlows, + String activityFontName, + String labelFontName, + String annotationFontName, + ClassLoader customClassLoader, + double scaleFactor, + boolean drawSequenceFlowNameWithNoLabelDI) { + // TODO Auto-generated method stub + return generateProcessDiagram(bpmnModel, imageType, highLightedActivities, new ArrayList<String>(), + highLightedFlows, activityFontName, labelFontName, customClassLoader, scaleFactor + , drawSequenceFlowNameWithNoLabelDI).generateImage( + imageType); + } + + @Override + public BufferedImage generatePngImage(BpmnModel bpmnModel, double scaleFactor) { + return generateImage(bpmnModel, "png", Collections.<String>emptyList(), Collections.<String>emptyList(), + scaleFactor, true); + } +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/listener/MultiInstanceloopListener.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/listener/MultiInstanceloopListener.java index 16c75bc2b..ec6606489 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/listener/MultiInstanceloopListener.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/listener/MultiInstanceloopListener.java @@ -4,9 +4,10 @@ package com.skyeye.activiti.listener; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.ExecutionListener; + import com.gexin.fastjson.JSON; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.ExecutionListener; /** * @ClassName: MultiInstanceloopListener @@ -19,7 +20,7 @@ import org.activiti.engine.delegate.ExecutionListener; public class MultiInstanceloopListener implements ExecutionListener { @Override - public void notify(DelegateExecution execution) throws Exception { + public void notify(DelegateExecution execution) { System.out.println(JSON.toJSONString(execution)); } diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/ActAssigneeMapper.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/ActAssigneeMapper.java deleted file mode 100644 index 32e716203..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/ActAssigneeMapper.java +++ /dev/null @@ -1,10 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.mapper; - -public interface ActAssigneeMapper { - - public int deleteByNodeId(String nodeId) throws Exception; - -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/HistoryActivityInstanceMapper.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/HistoryActivityInstanceMapper.java new file mode 100644 index 000000000..07c87c5b7 --- /dev/null +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/mapper/HistoryActivityInstanceMapper.java @@ -0,0 +1,29 @@ +package com.skyeye.activiti.mapper; + +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.flowable.engine.impl.persistence.entity.HistoricActivityInstanceEntityImpl; + +import java.util.List; + +/** + * + * @ClassName: HistoryActivityInstanceMapper + * @Description: + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/18 0:32 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 + */ +@Mapper +public interface HistoryActivityInstanceMapper { + + @Select("SELECT * FROM act_hi_actinst WHERE PROC_INST_ID_ = #{processInstanceId}") + List<HistoricActivityInstanceEntityImpl> findList(@Param("processInstanceId") String processInstanceId); + + @Delete("DELETE FROM act_hi_actinst WHERE id_ = #{id}") + int delete(@Param("id") String id); +} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActAssigneeService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActAssigneeService.java deleted file mode 100644 index 1db382ffb..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActAssigneeService.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ - -package com.skyeye.activiti.service; - -import org.activiti.engine.impl.pvm.process.ActivityImpl; - -import java.util.List; - -public interface ActAssigneeService { - public int deleteByNodeId(String nodeId) throws Exception; - - public List<ActivityImpl> getActivityList(String deploymentId) throws Exception; - - public List<ActivityImpl> selectAllActivity(List<ActivityImpl> activities) throws Exception; -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java index 07326a431..5cfc34109 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java @@ -6,7 +6,7 @@ package com.skyeye.activiti.service; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; -import org.activiti.engine.task.Task; +import org.flowable.task.api.Task; import java.util.List; import java.util.Map; diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiTaskService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiTaskService.java index 7f1d98aad..9c2f1e612 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiTaskService.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/ActivitiTaskService.java @@ -6,8 +6,7 @@ package com.skyeye.activiti.service; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; -import org.activiti.bpmn.model.UserTask; -import org.activiti.engine.impl.pvm.process.ActivityImpl; +import org.flowable.bpmn.model.UserTask; import java.util.Map; @@ -57,14 +56,6 @@ public interface ActivitiTaskService { */ UserTask getCurrentUserTaskByTaskId(String taskId); - /** - * æ ¹æ®æµç¨‹id获å–当å‰èŠ‚ç‚¹ä¿¡æ¯ - * - * @param processInstanceId æµç¨‹id - * @return 当å‰èŠ‚ç‚¹ä¿¡æ¯ - */ - ActivityImpl getCurrentActivityNode(String processInstanceId); - /** * æ ¹æ®ä»»åŠ¡èŠ‚点id判æ–该节点是å¦ä¸ºä¼šç¾èŠ‚点 * diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/CounterSignService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/CounterSignService.java index 8f990177e..f205a5f18 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/CounterSignService.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/CounterSignService.java @@ -6,10 +6,9 @@ package com.skyeye.activiti.service; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; -import org.activiti.bpmn.model.MultiInstanceLoopCharacteristics; -import org.activiti.bpmn.model.UserTask; -import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; -import org.activiti.engine.impl.pvm.process.ActivityImpl; +import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics; +import org.flowable.bpmn.model.UserTask; +import org.flowable.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; import java.util.List; @@ -54,24 +53,22 @@ public interface CounterSignService { * 创建 多实例 行为解释器 * * @param currentTask 当å‰ä»»åŠ¡èŠ‚点 - * @param activityImpl æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ * @param sequential 是å¦ä¸²è¡Œ * @return */ - MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, ActivityImpl activityImpl, boolean sequential); + MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, boolean sequential); /** * 创建多实例行为解释器 * * @param currentTask 当å‰ä»»åŠ¡èŠ‚点 - * @param activityImpl æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ * @param sequential 是å¦ä¸²è¡Œ * @param assigneeListExp 用户组表达 * @param assigneeExp ç”¨æˆ·æ ‡è¯† * @return */ - MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, ActivityImpl activityImpl, boolean sequential, - String assigneeListExp, String assigneeExp); + MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, boolean sequential, + String assigneeListExp, String assigneeExp); /** * å°† 普通节点转æ¢æˆä¸ºä¼šç¾ 任务 diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActAssigneeServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActAssigneeServiceImpl.java deleted file mode 100644 index ff4900d45..000000000 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActAssigneeServiceImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.activiti.service.impl; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import org.activiti.bpmn.converter.BpmnXMLConverter; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.impl.RepositoryServiceImpl; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; -import org.activiti.engine.impl.pvm.process.ActivityImpl; -import org.activiti.engine.impl.util.io.InputStreamSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.skyeye.activiti.mapper.ActAssigneeMapper; -import com.skyeye.activiti.service.ActAssigneeService; - -@Service -public class ActAssigneeServiceImpl implements ActAssigneeService { - - @Autowired - private ActAssigneeMapper actAssigneeMapper; - - @Autowired - private RepositoryService repositoryService; - - @Override - public int deleteByNodeId(String nodeId) throws Exception { - return actAssigneeMapper.deleteByNodeId(nodeId); - } - - @Override - public List<ActivityImpl> getActivityList(String deploymentId) throws Exception { - org.activiti.engine.repository.ProcessDefinition processDefinition = repositoryService - .createProcessDefinitionQuery().deploymentId(deploymentId).singleResult(); - ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) - .getDeployedProcessDefinition(processDefinition.getId()); - InputStream inputStream = repositoryService.getResourceAsStream(processDefinition.getDeploymentId(), - processDefinition.getResourceName()); - new BpmnXMLConverter().convertToBpmnModel(new InputStreamSource(inputStream), false, true); - return selectAllActivity(processDefinitionEntity.getActivities()); - - } - - @Override - public List<ActivityImpl> selectAllActivity(List<ActivityImpl> activities) throws Exception { - List<ActivityImpl> list = new ArrayList<>(activities); - for (ActivityImpl activity : activities) { - List<ActivityImpl> childActivities = activity.getActivities(); - if (!childActivities.isEmpty()) { - list.addAll(selectAllActivity(childActivities)); - } - } - return list; - } -} diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java index 8a80873c8..7c0d5a6b2 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java @@ -9,8 +9,8 @@ import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.skyeye.activiti.flowimg.FlowImgService; import com.skyeye.activiti.mapper.ActivityMapper; -import com.skyeye.activiti.service.ActAssigneeService; import com.skyeye.activiti.service.ActivitiModelService; import com.skyeye.activiti.service.ActivitiTaskService; import com.skyeye.annotation.transaction.ActivitiAndBaseTransaction; @@ -23,26 +23,21 @@ import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.ActModelDao; import com.skyeye.eve.dao.ActUserProcessInstanceIdDao; import com.skyeye.jedis.JedisClientService; -import org.activiti.bpmn.converter.BpmnXMLConverter; -import org.activiti.bpmn.model.BpmnModel; -import org.activiti.editor.constants.ModelDataJsonConstants; -import org.activiti.editor.language.json.converter.BpmnJsonConverter; -import org.activiti.engine.*; -import org.activiti.engine.history.HistoricActivityInstance; -import org.activiti.engine.history.HistoricProcessInstance; -import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; -import org.activiti.engine.impl.pvm.PvmTransition; -import org.activiti.engine.impl.pvm.process.ActivityImpl; -import org.activiti.engine.repository.Deployment; -import org.activiti.engine.repository.Model; -import org.activiti.engine.repository.ModelQuery; -import org.activiti.engine.repository.ProcessDefinition; -import org.activiti.engine.runtime.Execution; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.activiti.image.ProcessDiagramGenerator; -import org.apache.commons.lang3.StringUtils; +import org.flowable.bpmn.converter.BpmnXMLConverter; +import org.flowable.bpmn.model.BpmnModel; +import org.flowable.editor.constants.ModelDataJsonConstants; +import org.flowable.editor.language.json.converter.BpmnJsonConverter; +import org.flowable.engine.ProcessEngine; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.repository.Deployment; +import org.flowable.engine.repository.Model; +import org.flowable.engine.repository.ModelQuery; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.engine.runtime.Execution; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -51,7 +46,10 @@ import org.springframework.stereotype.Service; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; -import java.io.*; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileOutputStream; import java.util.*; import java.util.stream.Collectors; @@ -79,12 +77,6 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ @Autowired private RepositoryService repositoryService; - /** - * 查询历å²ä¿¡æ¯çš„类。在一个æµç¨‹æ‰§è¡Œå®ŒæˆåŽï¼Œè¿™ä¸ªå¯¹è±¡ä¸ºæˆ‘们æ供查询历å²ä¿¡æ¯ - */ - @Autowired - private HistoryService historyService; - /** * 任务æœåŠ¡ç±»ã€‚å¯ä»¥ä»Žè¿™ä¸ªç±»ä¸èŽ·å–ä»»åŠ¡çš„ä¿¡æ¯ */ @@ -94,12 +86,6 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ @Autowired private RuntimeService runtimeService; - @Autowired - private ProcessEngineConfigurationImpl processEngineConfiguration; - - @Autowired - private ActAssigneeService actAssigneeService; - @Autowired private ActUserProcessInstanceIdDao actUserProcessInstanceIdDao; @@ -118,6 +104,9 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ @Autowired private ActivitiTaskService activitiTaskService; + @Autowired + private FlowImgService flowImgService; + /** * @Title: insertNewActivitiModel * @Description: 新建一个空模型 @@ -128,11 +117,11 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertNewActivitiModel(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); RepositoryService repositoryService = processEngine.getRepositoryService(); - //åˆå§‹åŒ–一个空模型 + // åˆå§‹åŒ–一个空模型 Model model = repositoryService.newModel(); //è®¾ç½®ä¸€äº›é»˜è®¤ä¿¡æ¯ String name = "new-process"; @@ -192,6 +181,7 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ row.put("processKey", processDefinition.getKey()); } } + row.put("id", model.getId()); rows.add(row); } outputObject.setBeans(rows); @@ -400,7 +390,7 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editActivitiModelToStartProcessByMap(Map<String, Object> map, Map<String, Object> user, String id, String approvalId) throws Exception { // æµç¨‹å®šä¹‰çš„key String keyName = map.get("keyName").toString(); @@ -438,27 +428,8 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ */ @Override public void queryProHighLighted(String processInstanceId) throws Exception { - // 获å–历å²æµç¨‹å®žä¾‹ - HistoricProcessInstance processInstance = historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - // 获å–æµç¨‹å›¾ - BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId()); - - ProcessDiagramGenerator diagramGenerator = processEngineConfiguration.getProcessDiagramGenerator(); - ProcessDefinitionEntity definitionEntity = (ProcessDefinitionEntity) repositoryService.getProcessDefinition(processInstance.getProcessDefinitionId()); - //获å–历å²æµç¨‹èŠ‚点 - List<HistoricActivityInstance> highLightedActivitList = historyService.createHistoricActivityInstanceQuery().processInstanceId(processInstanceId).list(); - // 高亮环节idé›†åˆ - List<String> highLightedActivitis = new ArrayList<String>(); - - // 高亮线路idé›†åˆ - List<String> highLightedFlows = getHighLightedFlows(definitionEntity, highLightedActivitList); - - for (HistoricActivityInstance tempActivity : highLightedActivitList) { - String activityId = tempActivity.getActivityId(); - highLightedActivitis.add(activityId); - } - // é…ç½®å—体 - InputStream imageStream = diagramGenerator.generateDiagram(bpmnModel, "png", highLightedActivitis, highLightedFlows, "宋体", "微软雅黑", "黑体", null, 2.0); + byte[] b = flowImgService.generateImageByProcInstId(processInstanceId); + ByteArrayInputStream imageStream = new ByteArrayInputStream(b); BufferedImage bi = ImageIO.read(imageStream); File fileFolder = new File(tPath + "upload/activiti/"); if(!fileFolder.isDirectory())//目录ä¸å˜åœ¨ @@ -472,46 +443,6 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ imageStream.close(); } - /** - * 获å–需è¦é«˜äº®çš„线 - * - * @param processDefinitionEntity - * @param historicActivityInstances - * @return - */ - private List<String> getHighLightedFlows(ProcessDefinitionEntity processDefinitionEntity, List<HistoricActivityInstance> historicActivityInstances) { - List<String> highFlows = new ArrayList<String>();// 用以ä¿å˜é«˜äº®çš„线flowId - for (int i = 0; i < historicActivityInstances.size() - 1; i++) {// 对历å²æµç¨‹èŠ‚点进行é历 - ActivityImpl activityImpl = processDefinitionEntity.findActivity(historicActivityInstances.get(i).getActivityId());// å¾—åˆ°èŠ‚ç‚¹å®šä¹‰çš„è¯¦ç»†ä¿¡æ¯ - List<ActivityImpl> sameStartTimeNodes = new ArrayList<ActivityImpl>();// 用æ¥ä¿å˜åŽéœ€å¼€å§‹æ—¶é—´ç›¸åŒçš„节点 - ActivityImpl sameActivityImpl1 = processDefinitionEntity.findActivity(historicActivityInstances.get(i + 1).getActivityId()); - // å°†åŽé¢ç¬¬ä¸€ä¸ªèŠ‚点放在时间相åŒèŠ‚点的集åˆé‡Œ - sameStartTimeNodes.add(sameActivityImpl1); - for (int j = i + 1; j < historicActivityInstances.size() - 1; j++) { - HistoricActivityInstance activityImpl1 = historicActivityInstances.get(j);// åŽç»ç¬¬ä¸€ä¸ªèŠ‚点 - HistoricActivityInstance activityImpl2 = historicActivityInstances.get(j + 1);// åŽç»ç¬¬äºŒä¸ªèŠ‚点 - if (activityImpl1.getStartTime().equals(activityImpl2.getStartTime())) { - // 如果第一个节点和第二个节点开始时间相åŒä¿å˜ - ActivityImpl sameActivityImpl2 = processDefinitionEntity.findActivity(activityImpl2.getActivityId()); - sameStartTimeNodes.add(sameActivityImpl2); - } else { - // 有ä¸ç›¸åŒè·³å‡ºå¾ªçŽ¯ - break; - } - } - List<PvmTransition> pvmTransitions = activityImpl.getOutgoingTransitions();// å–出节点的所有出去的线 - for (PvmTransition pvmTransition : pvmTransitions) { - // 对所有的线进行é历 - ActivityImpl pvmActivityImpl = (ActivityImpl) pvmTransition.getDestination(); - // 如果å–å‡ºçš„çº¿çš„ç›®æ ‡èŠ‚ç‚¹å˜åœ¨æ—¶é—´ç›¸åŒçš„节点里,ä¿å˜è¯¥çº¿çš„id,进行高亮显示 - if (sameStartTimeNodes.contains(pvmActivityImpl)) { - highFlows.add(pvmTransition.getId()); - } - } - } - return highFlows; - } - /** * @Title: deleteActivitiModelById * @Description: åˆ é™¤æ¨¡åž‹ @@ -554,17 +485,6 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ Map<String, Object> map = inputObject.getParams(); String deploymentId = map.get("deploymentId").toString(); try{ - List<ActivityImpl> activityList = actAssigneeService.getActivityList(deploymentId); - if(activityList != null){ - for (ActivityImpl activity : activityList) { - String nodeId = activity.getId(); - if (StringUtils.isEmpty(nodeId) || "start".equals(nodeId) || "end".equals(nodeId)) { - continue; - } - /**接触节点和代办关è”*/ - actAssigneeService.deleteByNodeId(nodeId); - } - } repositoryService.deleteDeployment(deploymentId, true); }catch(Exception e){ outputObject.setreturnMessage("å˜åœ¨æ£åœ¨è¿›è¡Œçš„æµç¨‹ï¼Œæ— 法å–消å‘布。"); @@ -725,7 +645,7 @@ public class ActivitiModelServiceImpl implements ActivitiModelService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void copyModelByModelId(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String modelId = map.get("modelId").toString(); diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiProcessServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiProcessServiceImpl.java index 4fb9ca13f..9a9deb713 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiProcessServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiProcessServiceImpl.java @@ -4,49 +4,34 @@ package com.skyeye.activiti.service.impl; +import com.skyeye.activiti.cmd.rollback.RollbackCmd; import com.skyeye.activiti.service.ActivitiModelService; import com.skyeye.activiti.service.ActivitiProcessService; import com.skyeye.activiti.service.ActivitiTaskService; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; -import com.skyeye.common.util.DateUtil; import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.ActGroupUserDao; import com.skyeye.eve.dao.ActModelDao; import com.skyeye.eve.service.SysEveUserService; import net.sf.json.JSONObject; -import org.activiti.engine.HistoryService; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.history.HistoricTaskInstance; -import org.activiti.engine.impl.RepositoryServiceImpl; -import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior; -import org.activiti.engine.impl.javax.el.ExpressionFactory; -import org.activiti.engine.impl.javax.el.ValueExpression; -import org.activiti.engine.impl.juel.ExpressionFactoryImpl; -import org.activiti.engine.impl.juel.SimpleContext; -import org.activiti.engine.impl.persistence.entity.ExecutionEntity; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; -import org.activiti.engine.impl.pvm.PvmActivity; -import org.activiti.engine.impl.pvm.PvmTransition; -import org.activiti.engine.impl.pvm.process.ActivityImpl; -import org.activiti.engine.impl.task.TaskDefinition; -import org.activiti.engine.repository.Model; -import org.activiti.engine.repository.ProcessDefinition; -import org.activiti.engine.task.Task; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; +import org.flowable.bpmn.model.*; +import org.flowable.engine.*; +import org.flowable.engine.impl.persistence.entity.ExecutionEntity; +import org.flowable.engine.impl.util.condition.ConditionUtil; +import org.flowable.engine.repository.Model; +import org.flowable.engine.repository.ProcessDefinition; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.InputStream; -import java.text.ParseException; import java.util.*; import java.util.stream.Collectors; @@ -61,12 +46,6 @@ import java.util.stream.Collectors; @Service public class ActivitiProcessServiceImpl implements ActivitiProcessService { - /** - * 查询历å²ä¿¡æ¯çš„类。在一个æµç¨‹æ‰§è¡Œå®ŒæˆåŽï¼Œè¿™ä¸ªå¯¹è±¡ä¸ºæˆ‘们æ供查询历å²ä¿¡æ¯ - */ - @Autowired - private HistoryService historyService; - @Autowired private RuntimeService runtimeService; @@ -76,9 +55,6 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { @Autowired private TaskService taskService; - @Autowired - private ActivitiService activitiService; - @Autowired private ActivitiModelService activitiModelService; @@ -97,6 +73,9 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { @Autowired private ActModelDao actModelDao; + @Autowired + private ManagementService managementService; + /** * * @Title: updateProcessToHangUp @@ -140,7 +119,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { /** * * @Title: editProcessInstanceWithDraw - * @Description: æµç¨‹æ’¤å›ž + * @Description: æµç¨‹æ’¤å›ž(撤回审批过的æµç¨‹) * @param inputObject * @param outputObject * @throws Exception å‚æ•° @@ -154,61 +133,14 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { String userId = user.get("id").toString(); String processInstanceId = map.get("processInstanceId").toString(); String hisTaskId = map.get("hisTaskId").toString(); - //æ ¹æ®æµç¨‹id查询代办任务ä¸æµç¨‹ä¿¡æ¯ + // æ ¹æ®æµç¨‹id查询代办任务ä¸æµç¨‹ä¿¡æ¯ Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult(); if(task == null){ outputObject.setreturnMessage("æµç¨‹æœªå¯åŠ¨æˆ–已执行完æˆï¼Œæ— 法撤回"); return; } - //处ç†ä»»åŠ¡ - Map<String, Object> variables = taskService.getVariables(task.getId()); - //获å–å®¡æ‰¹ä¿¡æ¯ - List<Map<String, Object>> leaveList = new ArrayList<>(); - Object o = variables.get("leaveOpinionList"); - if (o != null) { - leaveList = (List<Map<String, Object>>) o; - } - //æ ¹æ®æ—¶é—´å€’å™æŽ’åº - Collections.sort(leaveList, new Comparator<Map<String, Object>>() { - public int compare(Map<String, Object> p1, Map<String, Object> p2) { - String a = p1.get("createTime").toString(); - String b = p2.get("createTime").toString(); - try { - if(DateUtil.compare(a, b)){ - return 1; - } - } catch (ParseException e) { - } - return -1; - } - }); - //如果最åŽä¸€ä¸ªå®¡æ‰¹äººä¸æ˜¯å½“å‰ç™»å½•äºº - if(!userId.equals(leaveList.get(0).get("opId").toString())){ - outputObject.setreturnMessage("该任务éžå½“å‰ç”¨æˆ·æäº¤ï¼Œæ— æ³•æ’¤å›ž"); - return; - } - //获å–历å²ä»»åŠ¡ - HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(hisTaskId).singleResult(); - //å–回æµç¨‹æŽ¥ç‚¹ 当å‰ä»»åŠ¡id å–回任务id - activitiService.callBackProcess(task.getId(), historicTaskInstance.getId()); - //åˆ é™¤åŽ†å²æµç¨‹èµ°å‘记录 - historyService.deleteHistoricTaskInstance(historicTaskInstance.getId()); - historyService.deleteHistoricTaskInstance(task.getId()); - - // åˆ é™¤æŒ‡å®šæµç¨‹åœ¨redisä¸çš„缓å˜ä¿¡æ¯ - activitiModelService.deleteProcessInRedisMation(processInstanceId); - - //å®¡æ‰¹ä¿¡æ¯ - Map<String, Object> leaveOpinion = new HashMap<>(); - leaveOpinion.put("opId", user.get("id"));//审批人id - leaveOpinion.put("title", "撤回");//æ“作节点 - leaveOpinion.put("opName", user.get("userName"));//审批人姓å - leaveOpinion.put("opinion", map.get("opinion"));//审批æ„è§ - leaveOpinion.put("createTime", DateUtil.getTimeAndToString());//审批时间 - leaveOpinion.put("flag", true); - leaveOpinion.put("taskId", hisTaskId);//任务id - leaveList.add(leaveOpinion); - runtimeService.setVariable(processInstanceId, "leaveOpinionList", leaveList); + // 撤回 + managementService.executeCommand(new RollbackCmd(hisTaskId, userId)); activitiModelService.queryProHighLighted(processInstanceId);//ç»˜åˆ¶å›¾åƒ } @@ -242,15 +174,15 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { String taskId = params.get("taskId").toString(); // 获å–表å•æ•°æ®ç”¨äºŽæŽ’他网关的å‚æ•°æ ¡éªŒ Map<String, Object> map = getFormVariable(taskId, params); - TaskDefinition taskDefinition = getNextTaskInfo(processInstanceId, map); - if(taskDefinition != null){ + UserTask userTask = getNextTaskInfo(processInstanceId, map); + if(userTask != null){ // 1.获å–下个节点的所有å¯é€‰å®¡æ‰¹äºº List<Map<String, Object>> user = new ArrayList<>(); - this.getNextTaskApprove(taskDefinition, user); + this.getNextTaskApprove(userTask, user); outputObject.setBeans(user); // 2.获å–èŠ‚ç‚¹ä¿¡æ¯ Map<String, Object> nodeMation = new HashMap<>(); - nodeMation.put("nodeName", taskDefinition.getNameExpression().getExpressionText()); + nodeMation.put("nodeName", userTask.getName()); nodeMation.put("nodeType", ActivitiConstants.USER_TASK); outputObject.setBean(nodeMation); } @@ -283,10 +215,9 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { return variable; } - private void getNextTaskApprove(TaskDefinition taskDefinition, List<Map<String, Object>> user) throws Exception { + private void getNextTaskApprove(UserTask userTask, List<Map<String, Object>> user) throws Exception { // 1.å€™é€‰ç»„äººå‘˜èŽ·å– - Set<Expression> groupIdSet = taskDefinition.getCandidateGroupIdExpressions(); - List<String> groupIds = new ArrayList<>(groupIdSet.stream().map(Expression::getExpressionText).collect(Collectors.toList())); + List<String> groupIds = userTask.getCandidateGroups(); if(CollectionUtils.isNotEmpty(groupIds)){ List<Map<String, Object>> groupUsers = actGroupUserDao.queryActGroupUserByGroupId(groupIds); groupUsers.forEach(bean -> { @@ -294,17 +225,16 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { }); } // 2.å€™é€‰äººå‘˜èŽ·å– - Set<Expression> userIdSet = taskDefinition.getCandidateUserIdExpressions(); - List<String> userIds = new ArrayList<>(userIdSet.stream().map(Expression::getExpressionText).collect(Collectors.toList())); + List<String> userIds = userTask.getCandidateUsers(); if(CollectionUtils.isNotEmpty(userIds)){ userIds.forEach(userId -> { user.add(sysEveUserService.getUserMationByUserId(userId)); }); } // 3.代ç†äººèŽ·å– - Expression userIdExpression = taskDefinition.getAssigneeExpression(); - if(userIdExpression != null){ - user.add(sysEveUserService.getUserMationByUserId(userIdExpression.getExpressionText())); + String assignee = userTask.getAssignee(); + if(assignee != null){ + user.add(sysEveUserService.getUserMationByUserId(assignee)); } } @@ -316,24 +246,18 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { * @return ä¸‹ä¸€ä¸ªç”¨æˆ·ä»»åŠ¡ç”¨æˆ·ç»„ä¿¡æ¯ * @throws Exception */ - public TaskDefinition getNextTaskInfo(String processInstanceId, Map<String, Object> map) throws Exception { + public UserTask getNextTaskInfo(String processInstanceId, Map<String, Object> map) throws Exception { // 获å–æµç¨‹å‘布Idä¿¡æ¯ String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId(); - ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(definitionId); + BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - - // 当å‰æµç¨‹èŠ‚点Idä¿¡æ¯ - String activitiId = execution.getActivityId(); - // 获å–æµç¨‹æ‰€æœ‰èŠ‚ç‚¹ä¿¡æ¯ - List<ActivityImpl> activitiList = processDefinitionEntity.getActivities(); - // éåŽ†æ‰€æœ‰èŠ‚ç‚¹ä¿¡æ¯ - for (ActivityImpl activityImpl : activitiList) { - String id = activityImpl.getId(); - if (activitiId.equals(id)) { - // 获å–ä¸‹ä¸€ä¸ªèŠ‚ç‚¹ä¿¡æ¯ - TaskDefinition task = nextTaskDefinition(activityImpl, activityImpl.getId(), processInstanceId, map); - return task; - } + execution.setVariablesLocal(map); + // 当å‰æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ + FlowElement currentNode = bpmnModel.getFlowElement(execution.getActivityId()); + // 获å–æµç¨‹æ›²çº¿èµ°å‘ + List<SequenceFlow> outgoingFlows = ((FlowNode) currentNode).getOutgoingFlows(); + if (CollectionUtils.isNotEmpty(outgoingFlows)) { + return this.findNextUserTaskNode(outgoingFlows, execution); } return null; } @@ -342,84 +266,30 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService { * 下一个任务节点信æ¯, * * 如果下一个节点为用户任务则直接返回, - * * 如果下一个节点为排他网关, 获å–排他网关Idä¿¡æ¯, æ ¹æ®æŽ’他网关Idä¿¡æ¯å’Œexecution获å–æµç¨‹å®žä¾‹æŽ’他网关Id为keyçš„å˜é‡å€¼, * æ ¹æ®å˜é‡å€¼åˆ†åˆ«æ‰§è¡ŒæŽ’他网关åŽçº¿è·¯ä¸çš„el表达å¼, 并找到el表达å¼é€šè¿‡çš„线路åŽçš„用户任务 * - * @param activityImpl æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ - * @param activityId 当å‰æµç¨‹èŠ‚点Idä¿¡æ¯ - * @param processInstanceId æµç¨‹å®žä¾‹Idä¿¡æ¯ - * @param map æ ¡éªŒå‚æ•° + * @param outgoingFlows æ›²çº¿èµ°å‘ + * @param execution 执行器,包å«form表å•å‚æ•°ä¿¡æ¯ * @return */ - private TaskDefinition nextTaskDefinition(ActivityImpl activityImpl, String activityId, String processInstanceId, Map<String, Object> map) { - // 如果é历节点为用户任务并且节点ä¸æ˜¯å½“å‰èŠ‚ç‚¹ä¿¡æ¯ - if (ActivitiConstants.USER_TASK.equals(activityImpl.getProperty("type")) && !activityId.equals(activityImpl.getId())) { - // 获å–è¯¥èŠ‚ç‚¹ä¸‹ä¸€ä¸ªèŠ‚ç‚¹ä¿¡æ¯ - TaskDefinition taskDefinition = ((UserTaskActivityBehavior) activityImpl.getActivityBehavior()).getTaskDefinition(); - return taskDefinition; - } else if (ActivitiConstants.EXCLUSIVE_GATEWAY.equals(activityImpl.getProperty("type"))) {// 当å‰èŠ‚点为exclusiveGateway - List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions(); - // 如果排他网关åªæœ‰ä¸€æ¡çº¿è·¯ä¿¡æ¯ - if (outTransitions.size() == 1) { - return nextTaskDefinition((ActivityImpl) outTransitions.get(0).getDestination(), activityId, processInstanceId, map); - } else if (outTransitions.size() > 1) { // 如果排他网关有多æ¡çº¿è·¯ä¿¡æ¯ - for (PvmTransition tr1 : outTransitions) { - Object s = tr1.getProperty("conditionText"); // 获å–排他网关线路判æ–æ¡ä»¶ä¿¡æ¯ - // 判æ–el表达å¼æ˜¯å¦æˆç«‹ - if (isCondition(activityImpl.getId(), StringUtils.trim(s.toString()), map)) { - return nextTaskDefinition((ActivityImpl) tr1.getDestination(), activityId, processInstanceId, map); - } - } - } - } else { - // 获å–节点所有æµå‘çº¿è·¯ä¿¡æ¯ - List<PvmTransition> outTransitions = activityImpl.getOutgoingTransitions(); - for (PvmTransition tr : outTransitions) { - PvmActivity ac = tr.getDestination(); // 获å–线路的终点节点 - // 如果æµå‘线路为排他网关 - if (ActivitiConstants.EXCLUSIVE_GATEWAY.equals(ac.getProperty("type"))) { - List<PvmTransition> outTransitionsTemp = ac.getOutgoingTransitions(); - // 如果排他网关åªæœ‰ä¸€æ¡çº¿è·¯ä¿¡æ¯ - if (outTransitionsTemp.size() == 1) { - return nextTaskDefinition((ActivityImpl) outTransitionsTemp.get(0).getDestination(), activityId, processInstanceId, map); - } else if (outTransitionsTemp.size() > 1) { // 如果排他网关有多æ¡çº¿è·¯ä¿¡æ¯ - for (PvmTransition tr1 : outTransitionsTemp) { - Object s = tr1.getProperty("conditionText"); // 获å–排他网关线路判æ–æ¡ä»¶ä¿¡æ¯ - // 判æ–el表达å¼æ˜¯å¦æˆç«‹ - if (isCondition(ac.getId(), StringUtils.trim(s.toString()), map)) { - return nextTaskDefinition((ActivityImpl) tr1.getDestination(), activityId, processInstanceId, map); - } - } - } - } else if (ActivitiConstants.USER_TASK.equals(ac.getProperty("type"))) { - return ((UserTaskActivityBehavior) ((ActivityImpl) ac).getActivityBehavior()).getTaskDefinition(); - } else { + private UserTask findNextUserTaskNode(List<SequenceFlow> outgoingFlows, ExecutionEntity execution) { + for (SequenceFlow outgoingFlow : outgoingFlows) { + if (ConditionUtil.hasTrueCondition(outgoingFlow, execution)) { + if (outgoingFlow.getTargetFlowElement() instanceof ExclusiveGateway) { + // åªæœ‰æŽ’他网关æ‰ç»§ç» + ExclusiveGateway exclusiveGateway = (ExclusiveGateway) outgoingFlow.getTargetFlowElement(); + return findNextUserTaskNode(exclusiveGateway.getOutgoingFlows(), execution); + } else if (outgoingFlow.getTargetFlowElement() instanceof UserTask) { + UserTask nextUserTask = (UserTask) outgoingFlow.getTargetFlowElement(); + // 找到第一个符åˆæ¡ä»¶çš„userTask就跳出循环 + return nextUserTask; } } - return null; } return null; } - /** - * æ ¹æ®keyå’Œvalue判æ–el表达å¼æ˜¯å¦é€šè¿‡ä¿¡æ¯ - * - * @param key el表达å¼keyä¿¡æ¯ - * @param el el表达å¼ä¿¡æ¯ - * @param map el表达å¼ä¼ å…¥å€¼ä¿¡æ¯ - * @return - */ - public boolean isCondition(String key, String el, Map<String, Object> map) { - ExpressionFactory factory = new ExpressionFactoryImpl(); - SimpleContext context = new SimpleContext(); - for (Map.Entry<String, Object> entry : map.entrySet()) { - context.setVariable(entry.getKey(), factory.createValueExpression(entry.getValue(), activitiService.getValueClass(entry.getValue()))); - } - ValueExpression e = factory.createValueExpression(context, el, boolean.class); - return (Boolean) e.getValue(context); - } - /** * æ ¹æ®processDefinitionKey获å–æµç¨‹ä¸‹ä¸€ä¸ªç”¨æˆ·èŠ‚点的审批人 * diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiService.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiService.java index d9442eae1..0b6c30cd1 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiService.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiService.java @@ -1,32 +1,22 @@ /******************************************************************************* * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye ******************************************************************************/ + package com.skyeye.activiti.service.impl; import com.skyeye.activiti.service.ActivitiModelService; import com.skyeye.common.util.FileUtil; import com.skyeye.eve.dao.ActUserProcessInstanceIdDao; -import com.skyeye.jedis.JedisClientService; -import org.activiti.engine.HistoryService; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.history.HistoricTaskInstance; -import org.activiti.engine.impl.RepositoryServiceImpl; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; -import org.activiti.engine.impl.persistence.entity.TaskEntity; -import org.activiti.engine.impl.pvm.PvmTransition; -import org.activiti.engine.impl.pvm.process.ActivityImpl; -import org.activiti.engine.impl.pvm.process.ProcessDefinitionImpl; -import org.activiti.engine.impl.pvm.process.TransitionImpl; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.apache.commons.lang3.StringUtils; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import java.util.*; +import java.util.List; +import java.util.Map; /** * æµç¨‹æ’¤å›žæ‰€éœ€å·¥å…·ç±» @@ -35,256 +25,27 @@ import java.util.*; */ @Component public class ActivitiService { - - @Autowired - private HistoryService historyService;//查询历å²ä¿¡æ¯çš„类。在一个æµç¨‹æ‰§è¡Œå®ŒæˆåŽï¼Œè¿™ä¸ªå¯¹è±¡ä¸ºæˆ‘们æ供查询历å²ä¿¡æ¯ - - @Autowired - private TaskService taskService;//任务æœåŠ¡ç±»ã€‚å¯ä»¥ä»Žè¿™ä¸ªç±»ä¸èŽ·å–ä»»åŠ¡çš„ä¿¡æ¯ - - @Autowired - private RuntimeService runtimeService; - - @Autowired - private RepositoryService repositoryService; - + @Autowired private ActUserProcessInstanceIdDao actUserProcessInstanceIdDao; - @Autowired - public JedisClientService jedisClient; - @Value("${IMAGES_PATH}") private String tPath; @Autowired private ActivitiModelService activitiModelService; - - /** - * å–回æµç¨‹ - * - * @param taskId 当å‰ä»»åŠ¡ID - * @param activityId å–回节点ID - * @throws Exception - */ - public void callBackProcess(String taskId, String activityId) throws Exception { - //1.å–回æµç¨‹ - if (StringUtils.isEmpty(activityId)) { - throw new Exception("ç›®æ ‡èŠ‚ç‚¹ID为空ï¼"); - } - //查找所有并行任务节点,åŒæ—¶å–回 - List<Task> taskList = findTaskListByKey(findProcessInstanceByTaskId(taskId).getId(), findTaskById(taskId).getTaskDefinitionKey()); - for (Task bean : taskList) { - commitProcess(bean.getId(), null, activityId); - } - } - - - /** - * æ ¹æ®æµç¨‹å®žä¾‹ID和任务key值查询所有åŒçº§ä»»åŠ¡é›†åˆ - * - * @param processInstanceId - * @param key - * @return - * @throws Exception - */ - public List<Task> findTaskListByKey(String processInstanceId, String key) throws Exception { - return taskService.createTaskQuery().processInstanceId(processInstanceId).taskDefinitionKey(key).list(); - } - - /** - * æ交æµç¨‹/æµç¨‹è½¬å‘ - * @param taskId 当å‰ä»»åŠ¡ID - * @param variables æµç¨‹å˜é‡ - * @param activityId æµç¨‹è½¬å‘执行任务节点ID<br>æ¤å‚数为空,默认为æ交æ“作 - */ - public void commitProcess(String taskId, Map<String, Object> variables, String activityId) throws Exception { - if (variables == null) { - variables = new HashMap<String, Object>(); - } - //跳转节点为空,默认æ交æ“作 - if (StringUtils.isEmpty(activityId)) { - taskService.complete(taskId, variables); - }else{//æµç¨‹è½¬å‘æ“作 - turnTransition(taskId, activityId, variables); - } - } - - /** - * æµç¨‹è½¬å‘æ“作 - * - * @param taskId 当å‰ä»»åŠ¡ID - * @param activityId ç›®æ ‡èŠ‚ç‚¹ä»»åŠ¡ID - * @param variables æµç¨‹å˜é‡ - * @throws Exception - */ - public void turnTransition(String taskId, String activityId, Map<String, Object> variables) throws Exception { - // 当å‰èŠ‚点 - ActivityImpl currActivity = findActivitiImpl(taskId, null); - // 清空当å‰æµå‘ - List<PvmTransition> oriPvmTransitionList = clearTransition(currActivity); - // 创建新æµå‘ - TransitionImpl newTransition = currActivity.createOutgoingTransition(); - // ç›®æ ‡èŠ‚ç‚¹ - ActivityImpl pointActivity = findActivitiImpl(taskId, activityId); - // 设置新æµå‘çš„ç›®æ ‡èŠ‚ç‚¹ - newTransition.setDestination(pointActivity); - // 执行转å‘任务 - taskService.complete(taskId, variables); - // åˆ é™¤ç›®æ ‡èŠ‚ç‚¹æ–°æµå…¥ - pointActivity.getIncomingTransitions().remove(newTransition); - // 还原以å‰æµå‘ - restoreTransition(currActivity, oriPvmTransitionList); - } - /** - * 还原指定活动节点æµå‘ - * - * @param activityImpl 活动节点 - * @param oriPvmTransitionList 原有节点æµå‘é›†åˆ - */ - private void restoreTransition(ActivityImpl activityImpl, List<PvmTransition> oriPvmTransitionList) { - // 清空现有æµå‘ - List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions(); - pvmTransitionList.clear(); - // 还原以å‰æµå‘ - for (PvmTransition pvmTransition : oriPvmTransitionList) { - pvmTransitionList.add(pvmTransition); - } - } - - /** - * 清空指定活动节点æµå‘ - * - * @param activityImpl 活动节点 - * @return 节点æµå‘é›†åˆ - */ - public List<PvmTransition> clearTransition(ActivityImpl activityImpl) throws Exception { - // å˜å‚¨å½“å‰èŠ‚点所有æµå‘临时å˜é‡ - List<PvmTransition> oriPvmTransitionList = new ArrayList<PvmTransition>(); - // 获å–当å‰èŠ‚点所有æµå‘,å˜å‚¨åˆ°ä¸´æ—¶å˜é‡ï¼Œç„¶åŽæ¸…空 - List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions(); - for (PvmTransition pvmTransition : pvmTransitionList) { - oriPvmTransitionList.add(pvmTransition); - } - pvmTransitionList.clear(); - return oriPvmTransitionList; - } - - /** - * æ ¹æ®ä»»åŠ¡ID和节点ID获å–活动节点 <br> - * - * @param taskId 任务ID - * @param activityId - * 活动节点ID <br> - * 如果为null或"",则默认查询当å‰æ´»åŠ¨èŠ‚点 <br> - * 如果为"end",则查询结æŸèŠ‚点 <br> - * - * @return - * @throws Exception - */ - public ActivityImpl findActivitiImpl(String taskId, String activityId) throws Exception { - // å–å¾—æµç¨‹å®šä¹‰ - ProcessDefinitionEntity processDefinition = findProcessDefinitionEntityByTaskId(taskId); - // 获å–当å‰æ´»åŠ¨èŠ‚点ID - if (StringUtils.isEmpty(activityId)) { - activityId = findTaskById(taskId).getTaskDefinitionKey(); - }else{ - HistoricTaskInstance currTask = historyService.createHistoricTaskInstanceQuery().taskId(activityId).singleResult(); - activityId = currTask.getTaskDefinitionKey(); - } - // æ ¹æ®æµç¨‹å®šä¹‰ï¼ŒèŽ·å–该æµç¨‹å®žä¾‹çš„结æŸèŠ‚点 - if (activityId.toUpperCase().equals("END")) { - for (ActivityImpl activityImpl : processDefinition.getActivities()) { - List<PvmTransition> pvmTransitionList = activityImpl.getOutgoingTransitions(); - if (pvmTransitionList.isEmpty()) { - return activityImpl; - } - } - } - // æ ¹æ®èŠ‚点ID,获å–对应的活动节点 - ActivityImpl activityImpl = ((ProcessDefinitionImpl) processDefinition).findActivity(activityId); - return activityImpl; - } + @Autowired + private RuntimeService runtimeService; + @Autowired + private HistoryService historyService;; - /** - * æ ¹æ®ä»»åŠ¡ID获å–æµç¨‹å®šä¹‰ - * - * @param taskId 任务ID - * @return - * @throws Exception - */ - public ProcessDefinitionEntity findProcessDefinitionEntityByTaskId(String taskId) throws Exception { - // å–å¾—æµç¨‹å®šä¹‰ - ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService) - .getDeployedProcessDefinition(findTaskById(taskId).getProcessDefinitionId()); - if (processDefinition == null) { - throw new Exception("æµç¨‹å®šä¹‰æœªæ‰¾åˆ°!"); - } - return processDefinition; - } + @Autowired + private TaskService taskService; - /** - * æ ¹æ®ä»»åŠ¡ID获å–对应的æµç¨‹å®žä¾‹ - * - * @param taskId 任务ID - * @return - * @throws Exception - */ - public ProcessInstance findProcessInstanceByTaskId(String taskId) throws Exception { - // 找到æµç¨‹å®žä¾‹ - ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(findTaskById(taskId).getProcessInstanceId()).singleResult(); - if (processInstance == null) { - throw new Exception("æµç¨‹å®žä¾‹æœªæ‰¾åˆ°!"); - } - return processInstance; - } - - /** - * æ ¹æ®ä»»åŠ¡ID获得任务实例 - * @param taskId 任务ID - * @return - * @throws Exception - */ - public TaskEntity findTaskById(String taskId) throws Exception { - TaskEntity task = (TaskEntity)taskService.createTaskQuery().taskId(taskId).singleResult(); - if(task == null){ - throw new Exception("任务实例未找到!"); - } - return task; - } - - /** - * @Title: getValueClass - * - * @Description: (æ ¹æ®å€¼èŽ·å–值类型) - * @param obj - * @return - * @return Class<?> (这里用一å¥è¯æ述返回结果说明) - */ - public Class<?> getValueClass(Object obj) { - if (obj instanceof Boolean) { - return Boolean.class; - } else if (obj instanceof Integer) { - return Integer.class; - } else if (obj instanceof String) { - return String.class; - } else if (obj instanceof Long) { - return Long.class; - } else if (obj instanceof Map) { - return Map.class; - } else if (obj instanceof Collection) { - return Collection.class; - } else if (obj instanceof java.util.List) { - return java.util.List.class; - } else { - return String.class; - } - } - /** - * 撤销æµç¨‹ + * 撤销已ç»ç”³è¯·çš„æµç¨‹ * @param map 必须包å«processInstanceIdå’ŒuserId * @return * @throws Exception diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiTaskServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiTaskServiceImpl.java index b0543e060..1c0417a51 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiTaskServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiTaskServiceImpl.java @@ -22,23 +22,19 @@ import com.skyeye.eve.dao.ActModleTypeDao; import com.skyeye.eve.dao.ActUserProcessInstanceIdDao; import com.skyeye.eve.dao.SysEveUserDao; import com.skyeye.exception.CustomException; -import org.activiti.bpmn.model.BpmnModel; -import org.activiti.bpmn.model.UserTask; -import org.activiti.engine.HistoryService; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.history.HistoricProcessInstance; -import org.activiti.engine.history.HistoricTaskInstance; -import org.activiti.engine.history.HistoricVariableInstance; -import org.activiti.engine.impl.RepositoryServiceImpl; -import org.activiti.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; -import org.activiti.engine.impl.persistence.entity.ExecutionEntity; -import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity; -import org.activiti.engine.impl.pvm.process.ActivityImpl; -import org.activiti.engine.runtime.ProcessInstance; -import org.activiti.engine.task.Task; -import org.activiti.engine.task.TaskQuery; +import org.flowable.bpmn.model.BpmnModel; +import org.flowable.bpmn.model.UserTask; +import org.flowable.engine.HistoryService; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; +import org.flowable.engine.runtime.ProcessInstance; +import org.flowable.task.api.Task; +import org.flowable.task.api.TaskQuery; +import org.flowable.task.api.history.HistoricTaskInstance; +import org.flowable.variable.api.history.HistoricVariableInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -598,7 +594,7 @@ public class ActivitiTaskServiceImpl implements ActivitiTaskService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editActivitiModelToRun(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String processInstanceId = map.get("processInstanceId").toString(); @@ -731,55 +727,26 @@ public class ActivitiTaskServiceImpl implements ActivitiTaskService { public UserTask getCurrentUserTaskByTaskId(String taskId){ Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); - org.activiti.bpmn.model.Process process = bpmnModel.getProcesses().get(0); + + org.flowable.bpmn.model.Process process = bpmnModel.getProcesses().get(0); // 当å‰èŠ‚点 UserTask currentUserTask = (UserTask) process.getFlowElement(task.getTaskDefinitionKey()); return currentUserTask; } - @Override - public ActivityImpl getCurrentActivityNode(String processInstanceId){ - // 获å–æµç¨‹å‘布Idä¿¡æ¯ - String definitionId = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult().getProcessDefinitionId(); - ProcessDefinitionEntity processDefinitionEntity = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repositoryService).getDeployedProcessDefinition(definitionId); - ExecutionEntity execution = (ExecutionEntity) runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); - - // 当å‰æµç¨‹èŠ‚点Idä¿¡æ¯ - String activitiId = execution.getActivityId(); - // 获å–æµç¨‹æ‰€æœ‰èŠ‚ç‚¹ä¿¡æ¯ - List<ActivityImpl> activitiList = processDefinitionEntity.getActivities(); - // éåŽ†æ‰€æœ‰èŠ‚ç‚¹ä¿¡æ¯ - for (ActivityImpl activityImpl : activitiList) { - String id = activityImpl.getId(); - if (activitiId.equals(id)) { - return activityImpl; - } - } - return null; - } - @Override public boolean isMultiInstance(String taskId) { UserTask currentTaskNode = this.getCurrentUserTaskByTaskId(taskId); // 1.判æ–任务节点是å¦æ˜¯ç”¨æˆ·æ‰‹åŠ¨è½¬çš„会ç¾èŠ‚点 - if (currentTaskNode.getLoopCharacteristics() != null) { + if (currentTaskNode.getLoopCharacteristics() != null + || currentTaskNode.getBehavior() instanceof ParallelMultiInstanceBehavior) { return true; } // 2.判æ–工作æµæ¨¡åž‹ä¸çš„这个节点是å¦æ˜¯ä¼šç¾èŠ‚点 - Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); - if (task != null) { - // 获å–æµç¨‹å®šä¹‰id - ProcessDefinitionEntity processDefinitionEntity = - (ProcessDefinitionEntity)repositoryService.getProcessDefinition(task.getProcessDefinitionId()); - - // æ ¹æ®æ´»åŠ¨id获å–活动实例 - ActivityImpl activityImpl = processDefinitionEntity.findActivity(task.getTaskDefinitionKey()); - if (activityImpl.getActivityBehavior() instanceof ParallelMultiInstanceBehavior) { - ParallelMultiInstanceBehavior behavior = - (ParallelMultiInstanceBehavior)activityImpl.getActivityBehavior(); - if (behavior != null && behavior.getCollectionExpression() != null) { - return true; - } + if(currentTaskNode.getBehavior() instanceof ParallelMultiInstanceBehavior){ + ParallelMultiInstanceBehavior behavior = (ParallelMultiInstanceBehavior) currentTaskNode.getBehavior(); + if (behavior != null && behavior.getCollectionExpression() != null) { + return true; } } return false; diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiUserServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiUserServiceImpl.java index d7c10d2bd..88251537b 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiUserServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/ActivitiUserServiceImpl.java @@ -16,11 +16,11 @@ import com.skyeye.common.object.OutputObject; import com.skyeye.eve.dao.ActGroupDao; import com.skyeye.eve.dao.ActGroupUserDao; import net.sf.json.JSONObject; -import org.activiti.engine.IdentityService; -import org.activiti.engine.identity.Group; -import org.activiti.engine.identity.User; -import org.activiti.engine.impl.persistence.entity.GroupEntity; -import org.activiti.engine.impl.persistence.entity.UserEntity; +import org.flowable.engine.IdentityService; +import org.flowable.idm.api.Group; +import org.flowable.idm.api.User; +import org.flowable.idm.engine.impl.persistence.entity.GroupEntityImpl; +import org.flowable.idm.engine.impl.persistence.entity.UserEntityImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -221,7 +221,7 @@ public class ActivitiUserServiceImpl implements ActivitiUserService { // åŒæ¥ç”¨æˆ·ç»„ä¿¡æ¯ List<Map<String, Object>> groupList = actGroupDao.queryActGroupList(map); for(Map<String, Object> bean : groupList){ - Group group = new GroupEntity(); + Group group = new GroupEntityImpl(); group.setId(bean.get("id").toString()); group.setName(bean.get("name").toString()); identityService.deleteGroup(group.getId()); @@ -230,7 +230,7 @@ public class ActivitiUserServiceImpl implements ActivitiUserService { // åŒæ¥ç”¨æˆ·ä¿¡æ¯ List<Map<String, Object>> userList = actGroupUserDao.queryActUserList(map); for(Map<String, Object> bean : userList){ - User user = new UserEntity(); + User user = new UserEntityImpl(); user.setId(bean.get("id").toString()); user.setFirstName(bean.get("firstName").toString()); user.setLastName(bean.get("lastName").toString()); @@ -258,7 +258,7 @@ public class ActivitiUserServiceImpl implements ActivitiUserService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void addOrEditToSubmit(InputObject inputObject, OutputObject outputObject, int subType, String key, String dataId, String approvalId) throws Exception { if(subType == 1){ diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/CounterSignServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/CounterSignServiceImpl.java index a925393be..ded7a75c8 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/CounterSignServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/CounterSignServiceImpl.java @@ -12,26 +12,21 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.object.InputObject; import com.skyeye.common.object.OutputObject; import net.sf.json.JSONArray; -import org.activiti.bpmn.model.ActivitiListener; -import org.activiti.bpmn.model.MultiInstanceLoopCharacteristics; -import org.activiti.bpmn.model.UserTask; -import org.activiti.engine.ProcessEngine; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.delegate.ExecutionListener; -import org.activiti.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; -import org.activiti.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; -import org.activiti.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; -import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior; -import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; -import org.activiti.engine.impl.el.ExpressionManager; -import org.activiti.engine.impl.pvm.process.ActivityImpl; +import org.flowable.bpmn.model.MultiInstanceLoopCharacteristics; +import org.flowable.bpmn.model.UserTask; +import org.flowable.common.engine.impl.el.ExpressionManager; +import org.flowable.engine.ProcessEngine; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.impl.bpmn.behavior.MultiInstanceActivityBehavior; +import org.flowable.engine.impl.bpmn.behavior.ParallelMultiInstanceBehavior; +import org.flowable.engine.impl.bpmn.behavior.SequentialMultiInstanceBehavior; +import org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior; +import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,7 +67,7 @@ public class CounterSignServiceImpl implements CounterSignService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void covertToMultiInstance(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> params = inputObject.getParams(); String taskId = params.get("taskId").toString(); @@ -119,13 +114,12 @@ public class CounterSignServiceImpl implements CounterSignService { * 创建 多实例 行为解释器 * * @param currentTask 当å‰ä»»åŠ¡èŠ‚点 - * @param activityImpl æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ * @param sequential 是å¦ä¸²è¡Œ * @return */ @Override - public MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, ActivityImpl activityImpl, boolean sequential) { - return createMultiInstanceBehavior(currentTask, activityImpl, sequential, ActivitiConstants.DEFAULT_ASSIGNEE_LIST_EXP, + public MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, boolean sequential) { + return createMultiInstanceBehavior(currentTask, sequential, ActivitiConstants.DEFAULT_ASSIGNEE_LIST_EXP, ActivitiConstants.ASSIGNEE_USER); } @@ -133,27 +127,26 @@ public class CounterSignServiceImpl implements CounterSignService { * 创建多实例行为解释器 * * @param currentTask 当å‰ä»»åŠ¡èŠ‚点 - * @param activityImpl æµç¨‹èŠ‚ç‚¹ä¿¡æ¯ * @param sequential 是å¦ä¸²è¡Œ * @param assigneeListExp 用户组表达 * @param assigneeExp ç”¨æˆ·æ ‡è¯† * @return */ @Override - public MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, ActivityImpl activityImpl, boolean sequential, - String assigneeListExp, String assigneeExp) { + public MultiInstanceActivityBehavior createMultiInstanceBehavior(UserTask currentTask, boolean sequential, + String assigneeListExp, String assigneeExp) { ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl) processEngine.getProcessEngineConfiguration(); /** * 创建解释器 */ UserTaskActivityBehavior userTaskActivityBehavior = processEngineConfiguration.getActivityBehaviorFactory() - .createUserTaskActivityBehavior(currentTask, ((UserTaskActivityBehavior) activityImpl.getActivityBehavior()).getTaskDefinition()); + .createUserTaskActivityBehavior(currentTask); MultiInstanceActivityBehavior behavior = null; if (sequential) { - behavior = new SequentialMultiInstanceBehavior(activityImpl, userTaskActivityBehavior); + behavior = new SequentialMultiInstanceBehavior(currentTask, userTaskActivityBehavior); } else { - behavior = new ParallelMultiInstanceBehavior(activityImpl, userTaskActivityBehavior); + behavior = new ParallelMultiInstanceBehavior(currentTask, userTaskActivityBehavior); } /** @@ -201,26 +194,26 @@ public class CounterSignServiceImpl implements CounterSignService { // 这里需è¦æ³¨æ„一下,当用户节点设置了多实例属性åŽï¼Œè®¾ç½®ç›‘å¬å™¨æ—¶æ˜¯è®¾ç½®executionListeners而ä¸æ˜¯taskListeners。 // ç±»è¦å®žçŽ°ExecutionListener或者JavaDelegate,普通用户节点实现TaskListener。 // 还有多实例属性ä¸loopCardinalityå’ŒinputDataItem两个必须设置一个,这个在部署æµç¨‹ä¼¼æœ‰æ ¡éªŒ - currentTaskNode.setExecutionListeners(this.getActivitiListener()); +// currentTaskNode.setExecutionListeners(this.getActivitiListener()); // 设置审批人 currentTaskNode.setCandidateUsers(userIds); } - private List<ActivitiListener> getActivitiListener(){ - List<ActivitiListener> activitiListener = new ArrayList<>(); - Map<String, String> listeners = new HashMap<>(); - // 完æˆæ—¶å›žè°ƒ - listeners.put(ExecutionListener.EVENTNAME_TAKE, "com.skyeye.activiti.listener.MultiInstanceloopListener"); - for (String key: listeners.keySet()) { - ActivitiListener listener = new ActivitiListener(); - listener.setEvent(key); - // Springé…置以å˜é‡å½¢å¼è°ƒç”¨æ— 法写入,åªèƒ½é€šè¿‡ç»§æ‰¿TaskListener方法, - listener.setImplementationType("class"); - listener.setImplementation(listeners.get(key)); - activitiListener.add(listener); - } - return activitiListener; - } +// private List<ActivitiListener> getActivitiListener(){ +// List<ActivitiListener> activitiListener = new ArrayList<>(); +// Map<String, String> listeners = new HashMap<>(); +// // 完æˆæ—¶å›žè°ƒ +// listeners.put(ExecutionListener.EVENTNAME_TAKE, "com.skyeye.activiti.listener.MultiInstanceloopListener"); +// for (String key: listeners.keySet()) { +// ActivitiListener listener = new ActivitiListener(); +// listener.setEvent(key); +// // Springé…置以å˜é‡å½¢å¼è°ƒç”¨æ— 法写入,åªèƒ½é€šè¿‡ç»§æ‰¿TaskListener方法, +// listener.setImplementationType("class"); +// listener.setImplementation(listeners.get(key)); +// activitiListener.add(listener); +// } +// return activitiListener; +// } } diff --git a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/DsFormActivitiServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/DsFormActivitiServiceImpl.java index 928036b8c..4d0da71a3 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/DsFormActivitiServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/activiti/service/impl/DsFormActivitiServiceImpl.java @@ -62,7 +62,7 @@ public class DsFormActivitiServiceImpl implements DsFormActivitiService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertDSFormProcess(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> user = inputObject.getLogParams(); diff --git a/skyeye-activiti/src/main/java/com/skyeye/eve/service/impl/ActModleTypeServiceImpl.java b/skyeye-activiti/src/main/java/com/skyeye/eve/service/impl/ActModleTypeServiceImpl.java index 32d2a67cd..5f98491b5 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/eve/service/impl/ActModleTypeServiceImpl.java +++ b/skyeye-activiti/src/main/java/com/skyeye/eve/service/impl/ActModleTypeServiceImpl.java @@ -17,11 +17,11 @@ import com.skyeye.eve.dao.ActModleTypeDao; import com.skyeye.eve.dao.DsFormPageDataDao; import com.skyeye.eve.service.ActModleTypeService; import com.skyeye.jedis.JedisClientService; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.RuntimeService; -import org.activiti.engine.TaskService; -import org.activiti.engine.repository.Model; -import org.activiti.engine.repository.ProcessDefinition; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.TaskService; +import org.flowable.engine.repository.Model; +import org.flowable.engine.repository.ProcessDefinition; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/skyeye-activiti/src/main/java/com/skyeye/activity/main/StencilsetRestResource.java b/skyeye-activiti/src/main/java/com/skyeye/flowable/main/StencilsetRestResource.java similarity index 76% rename from skyeye-activiti/src/main/java/com/skyeye/activity/main/StencilsetRestResource.java rename to skyeye-activiti/src/main/java/com/skyeye/flowable/main/StencilsetRestResource.java index f948869c1..bbf7326bc 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activity/main/StencilsetRestResource.java +++ b/skyeye-activiti/src/main/java/com/skyeye/flowable/main/StencilsetRestResource.java @@ -13,20 +13,27 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.skyeye.activity.main; -import java.io.InputStream; +package com.skyeye.flowable.main; -import org.activiti.engine.ActivitiException; import org.apache.commons.io.IOUtils; +import org.flowable.common.engine.api.FlowableException; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; +import java.io.InputStream; + /** - * @author Tijs Rademakers - * 获å–编辑器组件åŠé…ç½®é¡¹ä¿¡æ¯ + * + * @ClassName: StencilsetRestResource + * @Description: 获å–编辑器组件åŠé…ç½®é¡¹ä¿¡æ¯ + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/17 20:35 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 */ @RestController @RequestMapping(value = "/service") @@ -38,7 +45,7 @@ public class StencilsetRestResource { try { return IOUtils.toString(stencilsetStream, "utf-8"); } catch (Exception e) { - throw new ActivitiException("Error while loading stencil set", e); + throw new FlowableException("Error while loading stencil set", e); } } } diff --git a/skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelEditorJsonRestResource.java b/skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelEditorJsonRestResource.java similarity index 78% rename from skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelEditorJsonRestResource.java rename to skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelEditorJsonRestResource.java index 0c48cb327..da1ff0a65 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelEditorJsonRestResource.java +++ b/skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelEditorJsonRestResource.java @@ -13,13 +13,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.skyeye.activity.model; -import org.activiti.editor.constants.ModelDataJsonConstants; -import org.activiti.engine.ActivitiException; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.repository.Model; +package com.skyeye.flowable.model; + import org.apache.commons.lang3.StringUtils; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.editor.constants.ModelDataJsonConstants; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.repository.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -32,8 +33,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; /** - * @author Tijs Rademakers - * æ ¹æ®modelId获å–model的节点信æ¯ï¼Œç¼–è¾‘å™¨æ ¹æ®è¿”回的json进行绘图 + * + * @ClassName: ModelEditorJsonRestResource + * @Description: æ ¹æ®modelId获å–model的节点信æ¯ï¼Œç¼–è¾‘å™¨æ ¹æ®è¿”回的json进行绘图 + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/17 20:36 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 */ @RestController @RequestMapping(value = "/service") @@ -68,7 +75,7 @@ public class ModelEditorJsonRestResource implements ModelDataJsonConstants { } catch (Exception e) { LOGGER.error("Error creating model JSON", e); - throw new ActivitiException("Error creating model JSON", e); + throw new FlowableException("Error creating model JSON", e); } } return modelNode; diff --git a/skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelSaveRestResource.java b/skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelSaveRestResource.java similarity index 82% rename from skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelSaveRestResource.java rename to skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelSaveRestResource.java index 3d6155823..fe74d31b8 100644 --- a/skyeye-activiti/src/main/java/com/skyeye/activity/model/ModelSaveRestResource.java +++ b/skyeye-activiti/src/main/java/com/skyeye/flowable/model/ModelSaveRestResource.java @@ -14,18 +14,18 @@ * limitations under the License. */ -package com.skyeye.activity.model; +package com.skyeye.flowable.model; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.skyeye.common.util.XssUtil; -import org.activiti.editor.constants.ModelDataJsonConstants; -import org.activiti.engine.ActivitiException; -import org.activiti.engine.RepositoryService; -import org.activiti.engine.repository.Model; import org.apache.batik.transcoder.TranscoderInput; import org.apache.batik.transcoder.TranscoderOutput; import org.apache.batik.transcoder.image.PNGTranscoder; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.editor.constants.ModelDataJsonConstants; +import org.flowable.engine.RepositoryService; +import org.flowable.engine.repository.Model; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -38,8 +38,14 @@ import java.io.IOException; import java.io.InputStream; /** - * @author Tijs Rademakers - * 编辑器制图之åŽï¼Œå°†èŠ‚点信æ¯ä»¥jsonçš„å½¢å¼æ交给这个Controller,然åŽç”±å…¶è¿›è¡ŒæŒä¹…化æ“作 + * + * @ClassName: ModelSaveRestResource + * @Description: 编辑器制图之åŽï¼Œå°†èŠ‚点信æ¯ä»¥jsonçš„å½¢å¼æ交给这个Controller,然åŽç”±å…¶è¿›è¡ŒæŒä¹…化æ“作 + * @author: skyeye云系列--å«å¿—强 + * @date: 2021/12/17 20:36 + * + * @Copyright: 2021 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved. + * 注æ„:本内容仅é™è´ä¹°åŽä½¿ç”¨.ç¦æ¢ç§è‡ªå¤–泄以åŠç”¨äºŽå…¶ä»–的商业目的 */ @RestController @RequestMapping(value = "/service") @@ -90,7 +96,7 @@ public class ModelSaveRestResource implements ModelDataJsonConstants { } catch (Exception e) { LOGGER.error("Error saving model", e); - throw new ActivitiException("Error saving model", e); + throw new FlowableException("Error saving model", e); } finally { if (outStream != null) { try { diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/db2.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/db2.properties new file mode 100644 index 000000000..68983a155 --- /dev/null +++ b/skyeye-activiti/src/main/resources/org/flowable/db/properties/db2.properties @@ -0,0 +1 @@ +boolValue=1 diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/h2.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/h2.properties new file mode 100644 index 000000000..e69de29bb diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/hsql.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/hsql.properties new file mode 100644 index 000000000..e69de29bb diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/mssql.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/mssql.properties new file mode 100644 index 000000000..68983a155 --- /dev/null +++ b/skyeye-activiti/src/main/resources/org/flowable/db/properties/mssql.properties @@ -0,0 +1 @@ +boolValue=1 diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/mysql.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/mysql.properties new file mode 100644 index 000000000..e69de29bb diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/oracle.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/oracle.properties new file mode 100644 index 000000000..68983a155 --- /dev/null +++ b/skyeye-activiti/src/main/resources/org/flowable/db/properties/oracle.properties @@ -0,0 +1 @@ +boolValue=1 diff --git a/skyeye-activiti/src/main/resources/org/flowable/db/properties/postgres.properties b/skyeye-activiti/src/main/resources/org/flowable/db/properties/postgres.properties new file mode 100644 index 000000000..abe3f3d48 --- /dev/null +++ b/skyeye-activiti/src/main/resources/org/flowable/db/properties/postgres.properties @@ -0,0 +1 @@ +blobType=BINARY diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetPurchaseNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetPurchaseNodeListener.java index 8802102ee..78791c645 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetPurchaseNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetPurchaseNodeListener.java @@ -12,9 +12,10 @@ import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.ActUserProcessInstanceIdDao; import com.skyeye.eve.dao.AssetApplyPurchaseDao; import com.skyeye.eve.dao.AssetDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -40,14 +41,10 @@ public class AssetPurchaseNodeListener implements JavaDelegate { * 资产采è´å…³è”的工作æµçš„key */ private static final String ACTIVITI_ASSET_PURCHAES_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_ASSET_PURCHAES_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { AssetDao assetDao = SpringUtils.getBean(AssetDao.class); ActUserProcessInstanceIdDao actUserProcessInstanceIdDao = SpringUtils.getBean(ActUserProcessInstanceIdDao.class); AssetApplyPurchaseDao assetApplyPurchaseDao = SpringUtils.getBean(AssetApplyPurchaseDao.class); diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetReturnNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetReturnNodeListener.java index 7868efce8..576ede7a2 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetReturnNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetReturnNodeListener.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.AssetApplyReturnDao; import com.skyeye.eve.dao.AssetDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -36,14 +37,10 @@ public class AssetReturnNodeListener implements JavaDelegate { * 资产归还关è”的工作æµçš„key */ private static final String ACTIVITI_ASSET_RETURN_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_ASSET_RETURN_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { AssetDao assetDao = SpringUtils.getBean(AssetDao.class); AssetApplyReturnDao assetApplyReturnDao = SpringUtils.getBean(AssetApplyReturnDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetUseNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetUseNodeListener.java index 45adf2316..39e391ca0 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetUseNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetUseNodeListener.java @@ -10,9 +10,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.AssetApplyUseDao; import com.skyeye.eve.dao.AssetDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -39,13 +40,9 @@ public class AssetUseNodeListener implements JavaDelegate { */ private static final String ACTIVITI_ASSET_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_ASSET_USE_PAGE.getKey(); - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { AssetDao assetDao = SpringUtils.getBean(AssetDao.class); AssetApplyUseDao assetApplyUseDao = SpringUtils.getBean(AssetApplyUseDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesPurchaseNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesPurchaseNodeListener.java index e8fc29121..fd6d92216 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesPurchaseNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesPurchaseNodeListener.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.AssetArticlesApplyPurchaseDao; import com.skyeye.eve.dao.AssetArticlesDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -37,14 +38,10 @@ public class AssetsArticlesPurchaseNodeListener implements JavaDelegate { * 用å“采è´å…³è”的工作æµçš„key */ private static final String ACTIVITI_ASSETARTICLES_PURCHASE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_ASSETARTICLES_PURCHASE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { AssetArticlesDao assetArticlesDao = SpringUtils.getBean(AssetArticlesDao.class); AssetArticlesApplyPurchaseDao assetArticlesApplyPurchaseDao = SpringUtils.getBean(AssetArticlesApplyPurchaseDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesUseNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesUseNodeListener.java index c229054ef..b94cb8236 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesUseNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/AssetsArticlesUseNodeListener.java @@ -9,10 +9,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.AssetArticlesApplyUseDao; import com.skyeye.eve.dao.AssetArticlesDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; - +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -37,14 +37,10 @@ public class AssetsArticlesUseNodeListener implements JavaDelegate { * 用å“领用关è”的工作æµçš„key */ private static final String ACTIVITI_ASSETARTICLES_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_ASSETARTICLES_USE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { AssetArticlesDao assetArticlesDao = SpringUtils.getBean(AssetArticlesDao.class); AssetArticlesApplyUseDao assetArticlesApplyUseDao = SpringUtils.getBean(AssetArticlesApplyUseDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/ConferenceroomReserveNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/ConferenceroomReserveNodeListener.java index 09caf1308..02a5959c5 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/ConferenceroomReserveNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/ConferenceroomReserveNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.ConferenceRoomReserveDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -34,14 +35,10 @@ public class ConferenceroomReserveNodeListener implements JavaDelegate { * 会议室预定关è”的工作æµçš„key */ private static final String ACTIVITI_CONFERENCEROOM_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_CONFERENCEROOM_USE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ConferenceRoomReserveDao conferenceRoomReserveDao = SpringUtils.getBean(ConferenceRoomReserveDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // 获å–ä¼šè®®å®¤é¢„å®šè¡¨ä¿¡æ¯ diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceBorrowNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceBorrowNodeListener.java index 4fb016f0d..4e65159b0 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceBorrowNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceBorrowNodeListener.java @@ -10,9 +10,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.LicenceApplyBorrowDao; import com.skyeye.eve.dao.LicenceDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.HashMap; import java.util.List; @@ -38,13 +39,9 @@ public class LicenceBorrowNodeListener implements JavaDelegate { */ private static final String ACTIVITI_LICENCE_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_LICENCE_USE_PAGE.getKey(); - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { LicenceDao licenceDao = SpringUtils.getBean(LicenceDao.class); LicenceApplyBorrowDao licenceApplyBorrowDao = SpringUtils.getBean(LicenceApplyBorrowDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceRevertNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceRevertNodeListener.java index 5b9abce94..79c1fee1f 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceRevertNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/LicenceRevertNodeListener.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.LicenceApplyRevertDao; import com.skyeye.eve.dao.LicenceDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import org.apache.commons.lang3.StringUtils; import java.util.List; @@ -36,14 +37,10 @@ public class LicenceRevertNodeListener implements JavaDelegate { * è¯ç…§å½’还关è”的工作æµçš„key */ private static final String ACTIVITI_LICENCE_REVERT_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_LICENCE_REVERT_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { LicenceDao licenceDao = SpringUtils.getBean(LicenceDao.class); LicenceApplyRevertDao licenceApplyRevertDao = SpringUtils.getBean(LicenceApplyRevertDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/SealBorrowNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/SealBorrowNodeListener.java index 3d1652e37..691d98716 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/SealBorrowNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/SealBorrowNodeListener.java @@ -10,9 +10,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.common.util.ToolUtil; import com.skyeye.eve.dao.SealApplyBorrowDao; import com.skyeye.eve.dao.SealDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -36,14 +37,10 @@ public class SealBorrowNodeListener implements JavaDelegate { * å°ç« 借用关è”的工作æµçš„key */ private static final String ACTIVITI_SEAL_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_SEAL_USE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { SealDao sealDao = SpringUtils.getBean(SealDao.class); SealApplyBorrowDao sealApplyBorrowDao = SpringUtils.getBean(SealApplyBorrowDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/SealRevertNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/SealRevertNodeListener.java index 745eb72ff..d6287765c 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/SealRevertNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/SealRevertNodeListener.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.SealApplyRevertDao; import com.skyeye.eve.dao.SealDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import org.apache.commons.lang3.StringUtils; import java.util.List; @@ -36,14 +37,10 @@ public class SealRevertNodeListener implements JavaDelegate { * å°ç« 归还关è”的工作æµçš„key */ private static final String ACTIVITI_SEAL_REVERT_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_SEAL_REVERT_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { SealDao sealDao = SpringUtils.getBean(SealDao.class); SealApplyRevertDao sealApplyRevertDao = SpringUtils.getBean(SealApplyRevertDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/listenner/service/VehicleUseNodeListener.java b/skyeye-admin-assistant/src/main/java/com/listenner/service/VehicleUseNodeListener.java index bf2b9e3e6..454bbfa0f 100644 --- a/skyeye-admin-assistant/src/main/java/com/listenner/service/VehicleUseNodeListener.java +++ b/skyeye-admin-assistant/src/main/java/com/listenner/service/VehicleUseNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.VehicleApplyUseDao; import com.skyeye.eve.dao.VehicleDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -28,14 +29,10 @@ public class VehicleUseNodeListener implements JavaDelegate { * 用车申请关è”的工作æµçš„key */ private static final String ACTIVITI_VEHICLE_USE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.ACTIVITI_VEHICLE_USE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { VehicleDao vehicleDao = SpringUtils.getBean(VehicleDao.class); VehicleApplyUseDao vehicleApplyUseDao = SpringUtils.getBean(VehicleApplyUseDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyPurchaseServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyPurchaseServiceImpl.java index 1fc9448cd..ee766d0ee 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyPurchaseServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyPurchaseServiceImpl.java @@ -74,7 +74,7 @@ public class AssetApplyPurchaseServiceImpl implements AssetApplyPurchaseService * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertAssetListToPurchase(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = ToolUtil.getSurFaceId();// 采è´å•ä¸»è¡¨id @@ -127,7 +127,7 @@ public class AssetApplyPurchaseServiceImpl implements AssetApplyPurchaseService * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetPurchaseToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = map.get("id").toString(); @@ -221,7 +221,7 @@ public class AssetApplyPurchaseServiceImpl implements AssetApplyPurchaseService * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateAssetListToPurchaseById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = map.get("id").toString();//采è´å•ä¸»è¡¨id @@ -250,7 +250,7 @@ public class AssetApplyPurchaseServiceImpl implements AssetApplyPurchaseService * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetPurchaseToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_ASSET_PURCHAES_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyReturnServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyReturnServiceImpl.java index b6bf57211..32a6705f5 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyReturnServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyReturnServiceImpl.java @@ -100,7 +100,7 @@ public class AssetApplyReturnServiceImpl implements AssetApplyReturnService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertAssetListToReturn(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String returnId = ToolUtil.getSurFaceId();//归还å•ä¸»è¡¨id @@ -136,7 +136,7 @@ public class AssetApplyReturnServiceImpl implements AssetApplyReturnService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetReturnToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String returnId = map.get("id").toString(); @@ -242,7 +242,7 @@ public class AssetApplyReturnServiceImpl implements AssetApplyReturnService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateAssetListToReturnById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String returnId = map.get("id").toString();//归还å•ä¸»è¡¨id @@ -289,7 +289,7 @@ public class AssetApplyReturnServiceImpl implements AssetApplyReturnService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetReturnToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_ASSET_RETURN_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyUseServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyUseServiceImpl.java index 3cf2da3fd..b2aa9014c 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyUseServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetApplyUseServiceImpl.java @@ -80,7 +80,7 @@ public class AssetApplyUseServiceImpl implements AssetApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertAssetListToUse(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = ToolUtil.getSurFaceId();//领用å•ä¸»è¡¨id @@ -190,7 +190,7 @@ public class AssetApplyUseServiceImpl implements AssetApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateAssetListToUseById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = map.get("id").toString();//领用å•ä¸»è¡¨id @@ -249,7 +249,7 @@ public class AssetApplyUseServiceImpl implements AssetApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetUseToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = map.get("id").toString(); @@ -275,7 +275,7 @@ public class AssetApplyUseServiceImpl implements AssetApplyUseService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetUseToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_ASSET_USE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyPurchaseServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyPurchaseServiceImpl.java index b785cb608..6a2bcdd17 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyPurchaseServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyPurchaseServiceImpl.java @@ -80,7 +80,7 @@ public class AssetArticlesApplyPurchaseServiceImpl implements AssetArticlesApply * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertAssetArticlesListToPurchase(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = ToolUtil.getSurFaceId();//采è´å•ä¸»è¡¨id @@ -159,7 +159,7 @@ public class AssetArticlesApplyPurchaseServiceImpl implements AssetArticlesApply * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetArticlesUseToPurchaseSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = map.get("id").toString(); @@ -211,7 +211,7 @@ public class AssetArticlesApplyPurchaseServiceImpl implements AssetArticlesApply * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateAssetArticlesListToPurchaseById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String purchaseId = map.get("id").toString();//采è´å•ä¸»è¡¨id @@ -270,7 +270,7 @@ public class AssetArticlesApplyPurchaseServiceImpl implements AssetArticlesApply * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetArticlesPurchaseToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_ASSETARTICLES_PURCHASE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyUseServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyUseServiceImpl.java index fa45ce789..b7f5e3b37 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyUseServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/AssetArticlesApplyUseServiceImpl.java @@ -80,7 +80,7 @@ public class AssetArticlesApplyUseServiceImpl implements AssetArticlesApplyUseSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertAssetArticlesListToUse(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = ToolUtil.getSurFaceId();//领用å•ä¸»è¡¨id @@ -191,7 +191,7 @@ public class AssetArticlesApplyUseServiceImpl implements AssetArticlesApplyUseSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateAssetArticlesListToUseById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = map.get("id").toString();//领用å•ä¸»è¡¨id @@ -223,7 +223,7 @@ public class AssetArticlesApplyUseServiceImpl implements AssetArticlesApplyUseSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetArticlesUseToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = map.get("id").toString(); @@ -280,7 +280,7 @@ public class AssetArticlesApplyUseServiceImpl implements AssetArticlesApplyUseSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editAssetArticlesUseToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_ASSETARTICLES_USE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/ConferenceRoomReserveServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/ConferenceRoomReserveServiceImpl.java index 0769b9f85..00701ad11 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/ConferenceRoomReserveServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/ConferenceRoomReserveServiceImpl.java @@ -78,7 +78,7 @@ public class ConferenceRoomReserveServiceImpl implements ConferenceRoomReserveSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertReserveConferenceRoomMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 获å–è¯¥ä¼šè®®å®¤é¢„å®šæ—¶é—´æ®µå†…å·²è¢«å…¶ä»–äººé¢„å®šçš„æ•°æ® @@ -155,7 +155,7 @@ public class ConferenceRoomReserveServiceImpl implements ConferenceRoomReserveSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateReserveConferenceRoomMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -182,7 +182,7 @@ public class ConferenceRoomReserveServiceImpl implements ConferenceRoomReserveSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editReserveConferenceRoomToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -239,7 +239,7 @@ public class ConferenceRoomReserveServiceImpl implements ConferenceRoomReserveSe * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editReserveConferenceRoomToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_CONFERENCEROOM_USE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyBorrowServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyBorrowServiceImpl.java index f45ee3b57..9795bde63 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyBorrowServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyBorrowServiceImpl.java @@ -80,7 +80,7 @@ public class LicenceApplyBorrowServiceImpl implements LicenceApplyBorrowService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertBorrowLicenceMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = ToolUtil.getSurFaceId();//借用å•ä¸»è¡¨id @@ -185,7 +185,7 @@ public class LicenceApplyBorrowServiceImpl implements LicenceApplyBorrowService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateBorrowLicenceMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String useId = map.get("id").toString();//借用å•ä¸»è¡¨id @@ -215,7 +215,7 @@ public class LicenceApplyBorrowServiceImpl implements LicenceApplyBorrowService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editBorrowLicenceToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -272,7 +272,7 @@ public class LicenceApplyBorrowServiceImpl implements LicenceApplyBorrowService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateBorrowLicenceMationToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_LICENCE_USE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyRevertServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyRevertServiceImpl.java index f721d7c67..1f6d8d0b7 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyRevertServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/LicenceApplyRevertServiceImpl.java @@ -80,7 +80,7 @@ public class LicenceApplyRevertServiceImpl implements LicenceApplyRevertService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertRevertLicenceMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String revertId = ToolUtil.getSurFaceId();//归还å•ä¸»è¡¨id @@ -165,7 +165,7 @@ public class LicenceApplyRevertServiceImpl implements LicenceApplyRevertService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateRevertLicenceMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String revertId = map.get("id").toString();//归还å•ä¸»è¡¨id @@ -222,7 +222,7 @@ public class LicenceApplyRevertServiceImpl implements LicenceApplyRevertService * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editRevertLicenceToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -279,7 +279,7 @@ public class LicenceApplyRevertServiceImpl implements LicenceApplyRevertService * @return void 返回类型 * @throws */ - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateRevertLicenceMationToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_LICENCE_REVERT_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyBorrowServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyBorrowServiceImpl.java index 732523cd9..e3e949e99 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyBorrowServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyBorrowServiceImpl.java @@ -80,7 +80,7 @@ public class SealApplyBorrowServiceImpl implements SealApplyBorrowService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertBorrowSealMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String borrowId = ToolUtil.getSurFaceId();//借用å•ä¸»è¡¨id @@ -184,7 +184,7 @@ public class SealApplyBorrowServiceImpl implements SealApplyBorrowService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateBorrowSealMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String borrowId = map.get("id").toString();//借用å•ä¸»è¡¨id @@ -215,7 +215,7 @@ public class SealApplyBorrowServiceImpl implements SealApplyBorrowService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editBorrowSealToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String borrowId = map.get("id").toString(); @@ -272,7 +272,7 @@ public class SealApplyBorrowServiceImpl implements SealApplyBorrowService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateBorrowSealToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_SEAL_USE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyRevertServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyRevertServiceImpl.java index 26429bf4e..feb616407 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyRevertServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/SealApplyRevertServiceImpl.java @@ -80,7 +80,7 @@ public class SealApplyRevertServiceImpl implements SealApplyRevertService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertRevertSealMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String revertId = ToolUtil.getSurFaceId();//归还å•ä¸»è¡¨id @@ -183,7 +183,7 @@ public class SealApplyRevertServiceImpl implements SealApplyRevertService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateRevertSealMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String revertId = map.get("id").toString();//归还å•ä¸»è¡¨id @@ -214,7 +214,7 @@ public class SealApplyRevertServiceImpl implements SealApplyRevertService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editRevertSealToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String revertId = map.get("id").toString(); @@ -272,7 +272,7 @@ public class SealApplyRevertServiceImpl implements SealApplyRevertService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateRevertSealToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, ACTIVITI_SEAL_REVERT_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/VehicleApplyUseServiceImpl.java b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/VehicleApplyUseServiceImpl.java index fc5c9c98c..40bd4ccd5 100644 --- a/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/VehicleApplyUseServiceImpl.java +++ b/skyeye-admin-assistant/src/main/java/com/skyeye/eve/service/impl/VehicleApplyUseServiceImpl.java @@ -77,7 +77,7 @@ public class VehicleApplyUseServiceImpl implements VehicleApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertVehicleMationToUse(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> m = vehicleDao.queryVehicleMationByVehicleId(map); @@ -131,7 +131,7 @@ public class VehicleApplyUseServiceImpl implements VehicleApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editVehicleUseToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -208,7 +208,7 @@ public class VehicleApplyUseServiceImpl implements VehicleApplyUseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateVehicleUseMationToEdit(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); diff --git a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkBusinessTripNodeListener.java b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkBusinessTripNodeListener.java index ae7c0375d..3a93f9b35 100644 --- a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkBusinessTripNodeListener.java +++ b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkBusinessTripNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.CheckWorkBusinessTripDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -35,8 +36,9 @@ public class CheckWorkBusinessTripNodeListener implements JavaDelegate { */ private static final String CHECK_WORK_BUSINESS_TRIP_KEY = ActivitiConstants.ActivitiObjectType.CHECK_WORK_BUSINESS_TRIP.getKey(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { CheckWorkBusinessTripDao checkWorkBusinessTripDao = SpringUtils.getBean(CheckWorkBusinessTripDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id Map<String, Object> mation = checkWorkBusinessTripDao.queryCheckWorkBusinessTripByProcessInstanceId(processInstanceId); diff --git a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkCancelLeaveNodeListener.java b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkCancelLeaveNodeListener.java index 3acf88354..b91bd61c7 100644 --- a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkCancelLeaveNodeListener.java +++ b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkCancelLeaveNodeListener.java @@ -12,9 +12,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.CheckWorkCancelLeaveDao; import com.skyeye.eve.dao.CheckWorkLeaveDao; import com.skyeye.eve.dao.SysEveUserStaffDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -53,13 +54,9 @@ public class CheckWorkCancelLeaveNodeListener implements JavaDelegate { sysEveUserStaffDao = SpringUtils.getBean(SysEveUserStaffDao.class); } - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id Map<String, Object> mation = checkWorkCancelLeaveDao.queryCheckWorkCancelLeaveByProcessInstanceId(processInstanceId); String cancelLeaveId = mation.get("id").toString(); diff --git a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkLeaveNodeListener.java b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkLeaveNodeListener.java index 1822d70b4..45995f239 100644 --- a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkLeaveNodeListener.java +++ b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkLeaveNodeListener.java @@ -13,9 +13,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.CheckWorkLeaveDao; import com.skyeye.eve.dao.SysEveUserStaffDao; import com.skyeye.eve.service.SystemFoundationSettingsService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -53,13 +54,9 @@ public class CheckWorkLeaveNodeListener implements JavaDelegate { systemFoundationSettingsService = SpringUtils.getBean(SystemFoundationSettingsService.class); } - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); Map<String, Object> mation = checkWorkLeaveDao.queryCheckWorkLeaveByProcessInstanceId(processInstanceId); diff --git a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkOvertimeNodeListener.java b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkOvertimeNodeListener.java index d6bd6ddc1..4e2df2966 100644 --- a/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkOvertimeNodeListener.java +++ b/skyeye-checkwork/src/main/java/com/listenner/service/CheckWorkOvertimeNodeListener.java @@ -12,10 +12,10 @@ import com.skyeye.common.util.SpringUtils; import com.skyeye.eve.dao.CheckWorkOvertimeDao; import com.skyeye.eve.dao.SysEveUserStaffDao; import com.skyeye.eve.service.CompanyDepartmentService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; - +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -51,13 +51,9 @@ public class CheckWorkOvertimeNodeListener implements JavaDelegate { companyDepartmentService = SpringUtils.getBean(CompanyDepartmentService.class); } - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id Map<String, Object> mation = checkWorkOvertimeDao.queryCheckWorkOvertimeByProcessInstanceId(processInstanceId); String overtimeId = mation.get("id").toString(); diff --git a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkBusinessTripServiceImpl.java b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkBusinessTripServiceImpl.java index 7ff5bea1b..f5e7df32e 100644 --- a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkBusinessTripServiceImpl.java +++ b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkBusinessTripServiceImpl.java @@ -71,7 +71,7 @@ public class CheckWorkBusinessTripServiceImpl implements CheckWorkBusinessTripSe * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCheckWorkBusinessTripMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 出差申请id @@ -135,7 +135,7 @@ public class CheckWorkBusinessTripServiceImpl implements CheckWorkBusinessTripSe * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateCheckWorkBusinessTripById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 出差申请id @@ -182,7 +182,7 @@ public class CheckWorkBusinessTripServiceImpl implements CheckWorkBusinessTripSe * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkBusinessTripToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String businessTripId = map.get("id").toString(); @@ -231,7 +231,7 @@ public class CheckWorkBusinessTripServiceImpl implements CheckWorkBusinessTripSe * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkBusinessTripToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CHECK_WORK_BUSINESS_TRIP_KEY).revokeActivi(); } diff --git a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkCancelLeaveServiceImpl.java b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkCancelLeaveServiceImpl.java index 8396a0f46..85ff95cd5 100644 --- a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkCancelLeaveServiceImpl.java +++ b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkCancelLeaveServiceImpl.java @@ -72,7 +72,7 @@ public class CheckWorkCancelLeaveServiceImpl implements CheckWorkCancelLeaveServ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCheckWorkCancelLeaveMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 销å‡ç”³è¯·id @@ -136,7 +136,7 @@ public class CheckWorkCancelLeaveServiceImpl implements CheckWorkCancelLeaveServ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateCheckWorkCancelLeaveById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 销å‡ç”³è¯·id @@ -183,7 +183,7 @@ public class CheckWorkCancelLeaveServiceImpl implements CheckWorkCancelLeaveServ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkCancelLeaveToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String cancelLeaveId = map.get("id").toString(); @@ -232,7 +232,7 @@ public class CheckWorkCancelLeaveServiceImpl implements CheckWorkCancelLeaveServ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkCancelLeaveToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CHECK_WORK_CANCEL_LEAVE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkLeaveServiceImpl.java b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkLeaveServiceImpl.java index d659a4b2c..1f2527f6b 100644 --- a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkLeaveServiceImpl.java +++ b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkLeaveServiceImpl.java @@ -73,7 +73,7 @@ public class CheckWorkLeaveServiceImpl implements CheckWorkLeaveService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCheckWorkLeaveMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 请å‡ç”³è¯·id @@ -137,7 +137,7 @@ public class CheckWorkLeaveServiceImpl implements CheckWorkLeaveService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateCheckWorkLeaveById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // 请å‡ç”³è¯·id @@ -184,7 +184,7 @@ public class CheckWorkLeaveServiceImpl implements CheckWorkLeaveService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkLeaveToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String leaveId = map.get("id").toString(); @@ -233,7 +233,7 @@ public class CheckWorkLeaveServiceImpl implements CheckWorkLeaveService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkLeaveToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CHECK_WORK_LEAVE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkOvertimeServiceImpl.java b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkOvertimeServiceImpl.java index 77be94c31..0a11569f6 100644 --- a/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkOvertimeServiceImpl.java +++ b/skyeye-checkwork/src/main/java/com/skyeye/eve/service/impl/CheckWorkOvertimeServiceImpl.java @@ -73,7 +73,7 @@ public class CheckWorkOvertimeServiceImpl implements CheckWorkOvertimeService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCheckWorkOvertimeMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // åŠ ç申请id @@ -137,7 +137,7 @@ public class CheckWorkOvertimeServiceImpl implements CheckWorkOvertimeService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void updateCheckWorkOvertimeById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); // åŠ ç申请id @@ -184,7 +184,7 @@ public class CheckWorkOvertimeServiceImpl implements CheckWorkOvertimeService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkOvertimeToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String overtimeId = map.get("id").toString(); @@ -234,7 +234,7 @@ public class CheckWorkOvertimeServiceImpl implements CheckWorkOvertimeService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCheckWorkOvertimeToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CHECK_WORK_OVERTIME_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-common/src/main/java/com/skyeye/common/util/ToolUtil.java b/skyeye-common/src/main/java/com/skyeye/common/util/ToolUtil.java index 1be5854a9..d06d6e5fe 100644 --- a/skyeye-common/src/main/java/com/skyeye/common/util/ToolUtil.java +++ b/skyeye-common/src/main/java/com/skyeye/common/util/ToolUtil.java @@ -580,7 +580,6 @@ public class ToolUtil { * @param javaBean * @return */ - @SuppressWarnings("unchecked") public static <K, V> Map<K, V> javaBean2Map(Object javaBean) { Map<K, V> ret = new HashMap<>(); try { diff --git a/skyeye-crm/src/main/java/com/listenner/service/ContractCheckNodeListener.java b/skyeye-crm/src/main/java/com/listenner/service/ContractCheckNodeListener.java index 8bbe2cc59..251884e88 100644 --- a/skyeye-crm/src/main/java/com/listenner/service/ContractCheckNodeListener.java +++ b/skyeye-crm/src/main/java/com/listenner/service/ContractCheckNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.CrmContractDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,14 +36,10 @@ public class ContractCheckNodeListener implements JavaDelegate { * 客户åˆåŒæ交到工作æµä¸çš„key */ private static final String CRM_CONTRACT_PAGE_KEY = ActivitiConstants.ActivitiObjectType.CRM_CONTRACT_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { CrmContractDao crmContractDao = SpringUtils.getBean(CrmContractDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // 获å–åˆåŒå…³è”è¡¨ä¿¡æ¯ diff --git a/skyeye-crm/src/main/java/com/listenner/service/OpportunityTypeOneNodeListener.java b/skyeye-crm/src/main/java/com/listenner/service/OpportunityTypeOneNodeListener.java index 431415c1a..d882f9e34 100644 --- a/skyeye-crm/src/main/java/com/listenner/service/OpportunityTypeOneNodeListener.java +++ b/skyeye-crm/src/main/java/com/listenner/service/OpportunityTypeOneNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.CrmOpportunityDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,14 +36,10 @@ public class OpportunityTypeOneNodeListener implements JavaDelegate { * 客户商机申请到工作æµä¸çš„key */ private static final String CRM_OPPORTUNITY_PAGE_KEY = ActivitiConstants.ActivitiObjectType.CRM_OPPORTUNITY_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { CrmOpportunityDao crmOpportunityDao = SpringUtils.getBean(CrmOpportunityDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // 获å–商机工作æµå…³è”è¡¨ä¿¡æ¯ diff --git a/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmContractServiceImpl.java b/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmContractServiceImpl.java index ce8c8d905..4debbf427 100644 --- a/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmContractServiceImpl.java +++ b/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmContractServiceImpl.java @@ -144,7 +144,7 @@ public class CrmContractServiceImpl implements CrmContractService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCrmContractMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); judgeParams(map); @@ -241,7 +241,7 @@ public class CrmContractServiceImpl implements CrmContractService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCrmContractMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); judgeParams(map); @@ -292,7 +292,7 @@ public class CrmContractServiceImpl implements CrmContractService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCrmContractToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -439,7 +439,7 @@ public class CrmContractServiceImpl implements CrmContractService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editCrmContractToRevokeByProcessInstanceId(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CRM_CONTRACT_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmOpportunityServiceImpl.java b/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmOpportunityServiceImpl.java index f025bb6f4..73bcc187b 100644 --- a/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmOpportunityServiceImpl.java +++ b/skyeye-crm/src/main/java/com/skyeye/service/impl/CrmOpportunityServiceImpl.java @@ -98,7 +98,7 @@ public class CrmOpportunityServiceImpl implements CrmOpportunityService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertCrmOpportunityMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = crmOpportunityDao.queryOpportunityMationByName(map); @@ -191,7 +191,7 @@ public class CrmOpportunityServiceImpl implements CrmOpportunityService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editOpportunityMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = crmOpportunityDao.queryOpportunityMationByName(map); @@ -402,7 +402,7 @@ public class CrmOpportunityServiceImpl implements CrmOpportunityService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editOpportunityToApprovalById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String opportunityId = map.get("id").toString(); @@ -652,7 +652,7 @@ public class CrmOpportunityServiceImpl implements CrmOpportunityService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editOpportunityProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, CRM_OPPORTUNITY_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-crm/src/main/java/com/skyeye/service/impl/CustomerServiceImpl.java b/skyeye-crm/src/main/java/com/skyeye/service/impl/CustomerServiceImpl.java index 69bcaab33..a168150a1 100644 --- a/skyeye-crm/src/main/java/com/skyeye/service/impl/CustomerServiceImpl.java +++ b/skyeye-crm/src/main/java/com/skyeye/service/impl/CustomerServiceImpl.java @@ -166,7 +166,7 @@ public class CustomerServiceImpl implements CustomerService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void deleteCustomerMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); customerDao.deleteCustomerMationById(map); //åˆ é™¤å®¢æˆ· diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/OtherOutLetsNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/OtherOutLetsNodeListenner.java index 692baead6..b1d58ff41 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/OtherOutLetsNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/OtherOutLetsNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class OtherOutLetsNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.OUT_IS_OTHERS.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/OtherWareHousNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/OtherWareHousNodeListenner.java index a4a9cf278..5ec52c2dc 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/OtherWareHousNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/OtherWareHousNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class OtherWareHousNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.PUT_IS_OTHERS.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseOrderNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseOrderNodeListenner.java index cebe7e494..6d39548ff 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseOrderNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseOrderNodeListenner.java @@ -10,9 +10,10 @@ import com.skyeye.common.util.DateUtil; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.dao.PurchaseOrderDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.HashMap; import java.util.Map; @@ -37,8 +38,9 @@ public class PurchaseOrderNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.PURCHASE_ORDER.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); PurchaseOrderDao purchaseOrderDao = SpringUtils.getBean(PurchaseOrderDao.class); // æµç¨‹å®žä¾‹id diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchasePutNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchasePutNodeListenner.java index 28e201aec..c333a1af2 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchasePutNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchasePutNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class PurchasePutNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.PUT_IS_PURCHASE.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseReturnsNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseReturnsNodeListenner.java index 82894a815..c9ffe4794 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseReturnsNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/PurchaseReturnsNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class PurchaseReturnsNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.OUT_IS_PURCHASE_RETURNS.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/RetailOutLetNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/RetailOutLetNodeListenner.java index 84359d025..69307670b 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/RetailOutLetNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/RetailOutLetNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class RetailOutLetNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.OUT_IS_RETAIL.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/RetailReturnsNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/RetailReturnsNodeListenner.java index 95f335355..78cf6e7f6 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/RetailReturnsNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/RetailReturnsNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class RetailReturnsNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.PUT_IS_RETAIL_RETURNS.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOrderNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOrderNodeListenner.java index 4398a8438..e0180db41 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOrderNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOrderNodeListenner.java @@ -10,9 +10,10 @@ import com.skyeye.common.util.DateUtil; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.dao.SalesOrderDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.HashMap; import java.util.Map; @@ -37,8 +38,9 @@ public class SalesOrderNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.OUTCHASE_ORDER.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); SalesOrderDao salesOrderDao = SpringUtils.getBean(SalesOrderDao.class); // æµç¨‹å®žä¾‹id diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOutLetNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOutLetNodeListenner.java index fde1c3107..9c1fb8681 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOutLetNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesOutLetNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class SalesOutLetNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.OUT_IS_SALES_OUTLET.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesReturnsNodeListenner.java b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesReturnsNodeListenner.java index 20c469573..535e78c45 100644 --- a/skyeye-erp/src/main/java/com/skyeye/listenner/SalesReturnsNodeListenner.java +++ b/skyeye-erp/src/main/java/com/skyeye/listenner/SalesReturnsNodeListenner.java @@ -9,9 +9,10 @@ import com.skyeye.common.constans.ErpConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ErpCommonDao; import com.skyeye.service.StoreHouseApprovalService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -35,8 +36,9 @@ public class SalesReturnsNodeListenner implements JavaDelegate { */ private static final String ORDER_TYPE = ErpConstants.DepoTheadSubType.PUT_IS_SALES_RETURNS.getType(); + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ErpCommonDao erpCommonDao = SpringUtils.getBean(ErpCommonDao.class); // æµç¨‹å®žä¾‹id String processInstanceId = execution.getProcessInstanceId(); diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/ErpCommonServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/ErpCommonServiceImpl.java index 9b23b0e23..795756045 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/ErpCommonServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/ErpCommonServiceImpl.java @@ -535,7 +535,7 @@ public class ErpCommonServiceImpl implements ErpCommonService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editDepotHeadToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { String orderType = inputObject.getParams().get("orderType").toString(); ErpRunFactory.run(inputObject, outputObject, orderType).revokeOrder(); diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherOutLetsServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherOutLetsServiceImpl.java index 2ad9a7879..0dde15188 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherOutLetsServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherOutLetsServiceImpl.java @@ -57,7 +57,7 @@ public class OtherOutLetsServiceImpl implements OtherOutLetsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertOtherOutLetsMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -80,7 +80,7 @@ public class OtherOutLetsServiceImpl implements OtherOutLetsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editOtherOutLetsMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherWareHousServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherWareHousServiceImpl.java index a5932cc13..987c59710 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherWareHousServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/OtherWareHousServiceImpl.java @@ -57,7 +57,7 @@ public class OtherWareHousServiceImpl implements OtherWareHousService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertOtherWareHousMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -80,7 +80,7 @@ public class OtherWareHousServiceImpl implements OtherWareHousService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editOtherWareHousMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseOrderServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseOrderServiceImpl.java index 602580488..9e54526cf 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseOrderServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseOrderServiceImpl.java @@ -88,7 +88,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertPurchaseOrderMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -113,7 +113,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editPurchaseOrderMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchasePutServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchasePutServiceImpl.java index 45cd3fc90..ebabda54e 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchasePutServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchasePutServiceImpl.java @@ -58,7 +58,7 @@ public class PurchasePutServiceImpl implements PurchasePutService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertPurchasePutMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -81,7 +81,7 @@ public class PurchasePutServiceImpl implements PurchasePutService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editPurchasePutMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseReturnsServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseReturnsServiceImpl.java index 7c56483cd..d7c339db8 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseReturnsServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/PurchaseReturnsServiceImpl.java @@ -58,7 +58,7 @@ public class PurchaseReturnsServiceImpl implements PurchaseReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertPurchaseReturnsMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -81,7 +81,7 @@ public class PurchaseReturnsServiceImpl implements PurchaseReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editPurchaseReturnsMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailOutLetServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailOutLetServiceImpl.java index e49df28fa..dc5c45b70 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailOutLetServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailOutLetServiceImpl.java @@ -57,7 +57,7 @@ public class RetailOutLetServiceImpl implements RetailOutLetService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertRetailOutLetMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -80,7 +80,7 @@ public class RetailOutLetServiceImpl implements RetailOutLetService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editRetailOutLetMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailReturnsServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailReturnsServiceImpl.java index 825ce78a5..97a8cfa0a 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailReturnsServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/RetailReturnsServiceImpl.java @@ -57,7 +57,7 @@ public class RetailReturnsServiceImpl implements RetailReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertRetailReturnsMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -80,7 +80,7 @@ public class RetailReturnsServiceImpl implements RetailReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editRetailReturnsMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOrderServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOrderServiceImpl.java index fc581406c..1c46f21ec 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOrderServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOrderServiceImpl.java @@ -88,7 +88,7 @@ public class SalesOrderServiceImpl implements SalesOrderService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertSalesOrderMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -113,7 +113,7 @@ public class SalesOrderServiceImpl implements SalesOrderService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editSalesOrderMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOutLetServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOutLetServiceImpl.java index fb8b24c9c..d3bc16b93 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOutLetServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesOutLetServiceImpl.java @@ -58,7 +58,7 @@ public class SalesOutLetServiceImpl implements SalesOutLetService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertSalesOutLetMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -81,7 +81,7 @@ public class SalesOutLetServiceImpl implements SalesOutLetService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editSalesOutLetMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesReturnsServiceImpl.java b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesReturnsServiceImpl.java index 9152e44b2..7e073a124 100644 --- a/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesReturnsServiceImpl.java +++ b/skyeye-erp/src/main/java/com/skyeye/service/impl/SalesReturnsServiceImpl.java @@ -58,7 +58,7 @@ public class SalesReturnsServiceImpl implements SalesReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertSalesReturnsMation(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).insertOrderMation(); } @@ -81,7 +81,7 @@ public class SalesReturnsServiceImpl implements SalesReturnsService{ * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editSalesReturnsMationById(InputObject inputObject, OutputObject outputObject) throws Exception { ErpRunFactory.run(inputObject, outputObject, ORDER_TYPE).editOrderMationById(); } diff --git a/skyeye-pro/src/main/java/com/listenner/service/ProCostExpenseNodeListener.java b/skyeye-pro/src/main/java/com/listenner/service/ProCostExpenseNodeListener.java index 8a8082a01..7c21412ad 100644 --- a/skyeye-pro/src/main/java/com/listenner/service/ProCostExpenseNodeListener.java +++ b/skyeye-pro/src/main/java/com/listenner/service/ProCostExpenseNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ProCostExpenseDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -34,13 +35,9 @@ public class ProCostExpenseNodeListener implements JavaDelegate { */ private static final String PRO_COST_EXPENSE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.PRO_COST_EXPENSE_PAGE.getKey(); - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ProCostExpenseDao proCostExpenseDao = SpringUtils.getBean(ProCostExpenseDao.class); String processInstanceId = execution.getProcessInstanceId();// æµç¨‹å®žä¾‹id // 获å–费用报销工作æµå…³è”è¡¨ä¿¡æ¯ diff --git a/skyeye-pro/src/main/java/com/listenner/service/ProFileNodeListener.java b/skyeye-pro/src/main/java/com/listenner/service/ProFileNodeListener.java index 8063ff665..b9086ac32 100644 --- a/skyeye-pro/src/main/java/com/listenner/service/ProFileNodeListener.java +++ b/skyeye-pro/src/main/java/com/listenner/service/ProFileNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ProFileDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -28,14 +29,10 @@ public class ProFileNodeListener implements JavaDelegate { * é¡¹ç›®æ–‡æ¡£å®¡æ ¸åœ¨å·¥ä½œæµä¸é…置的key */ private static final String PRO_FILE_PAGE_KEY = ActivitiConstants.ActivitiObjectType.PRO_FILE_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ProFileDao proFileDao = SpringUtils.getBean(ProFileDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // 获å–文档工作æµå…³è”è¡¨ä¿¡æ¯ diff --git a/skyeye-pro/src/main/java/com/listenner/service/ProProjectNodeListener.java b/skyeye-pro/src/main/java/com/listenner/service/ProProjectNodeListener.java index 4b377fb95..cade9b590 100644 --- a/skyeye-pro/src/main/java/com/listenner/service/ProProjectNodeListener.java +++ b/skyeye-pro/src/main/java/com/listenner/service/ProProjectNodeListener.java @@ -7,9 +7,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ProProjectDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Map; @@ -28,13 +29,9 @@ public class ProProjectNodeListener implements JavaDelegate{ */ private static final String PRO_PROJECT_PAGE_KEY = ActivitiConstants.ActivitiObjectType.PRO_PROJECT_PAGE.getKey(); - /** - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ProProjectDao proProjectDao = SpringUtils.getBean(ProProjectDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // æ ¹æ®æµç¨‹id获å–å¯¹åº”çš„é¡¹ç›®ä¿¡æ¯ diff --git a/skyeye-pro/src/main/java/com/listenner/service/ProTaskNodeListener.java b/skyeye-pro/src/main/java/com/listenner/service/ProTaskNodeListener.java index f97e48a70..041f7c296 100644 --- a/skyeye-pro/src/main/java/com/listenner/service/ProTaskNodeListener.java +++ b/skyeye-pro/src/main/java/com/listenner/service/ProTaskNodeListener.java @@ -11,9 +11,10 @@ import com.skyeye.dao.ProTaskDao; import com.skyeye.eve.constants.ScheduleDayConstants; import com.skyeye.eve.dao.SysEnclosureDao; import com.skyeye.eve.service.ScheduleDayService; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.Locale; import java.util.Map; @@ -38,14 +39,9 @@ public class ProTaskNodeListener implements JavaDelegate { */ private static final String PRO_TASK_PAGE_KEY = ActivitiConstants.ActivitiObjectType.PRO_TASK_PAGE.getKey(); - /** - * 执行方法 - * - * @param execution - * @throws Exception - */ + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ProTaskDao proTaskDao = SpringUtils.getBean(ProTaskDao.class); SysEnclosureDao sysEnclosureDao = SpringUtils.getBean(SysEnclosureDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id diff --git a/skyeye-pro/src/main/java/com/listenner/service/ProWorkloadNodeListener.java b/skyeye-pro/src/main/java/com/listenner/service/ProWorkloadNodeListener.java index a04f5491b..3d8c209e9 100644 --- a/skyeye-pro/src/main/java/com/listenner/service/ProWorkloadNodeListener.java +++ b/skyeye-pro/src/main/java/com/listenner/service/ProWorkloadNodeListener.java @@ -8,9 +8,10 @@ import com.skyeye.activiti.factory.ActivitiRunFactory; import com.skyeye.common.constans.ActivitiConstants; import com.skyeye.common.util.SpringUtils; import com.skyeye.dao.ProWorkloadDao; -import org.activiti.engine.delegate.DelegateExecution; -import org.activiti.engine.delegate.Expression; -import org.activiti.engine.delegate.JavaDelegate; +import lombok.SneakyThrows; +import org.flowable.common.engine.api.delegate.Expression; +import org.flowable.engine.delegate.DelegateExecution; +import org.flowable.engine.delegate.JavaDelegate; import java.util.List; import java.util.Map; @@ -34,14 +35,10 @@ public class ProWorkloadNodeListener implements JavaDelegate { * 项目工作é‡åœ¨å·¥ä½œæµä¸çš„key */ private static final String PRO_WORKLOAD_PAGE_KEY = ActivitiConstants.ActivitiObjectType.PRO_WORKLOAD_PAGE.getKey(); - - /** - * - * @param execution - * @throws Exception - */ + + @SneakyThrows @Override - public void execute(DelegateExecution execution) throws Exception { + public void execute(DelegateExecution execution) { ProWorkloadDao proWorkloadDao = SpringUtils.getBean(ProWorkloadDao.class); String processInstanceId = execution.getProcessInstanceId();//æµç¨‹å®žä¾‹id // 获å–工作é‡å·¥ä½œæµå…³è”è¡¨ä¿¡æ¯ diff --git a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProCostExpenseServiceImpl.java b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProCostExpenseServiceImpl.java index 73c18c775..74dd2b2ed 100644 --- a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProCostExpenseServiceImpl.java +++ b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProCostExpenseServiceImpl.java @@ -89,7 +89,7 @@ public class ProCostExpenseServiceImpl implements ProCostExpenseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertProCostExpenseMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String expensePurposeStr = map.get("expensePurposeStr").toString(); @@ -188,7 +188,7 @@ public class ProCostExpenseServiceImpl implements ProCostExpenseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProCostExpenseMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String expensePurposeStr = map.get("expensePurposeStr").toString(); @@ -236,7 +236,7 @@ public class ProCostExpenseServiceImpl implements ProCostExpenseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProCostExpenseToApprovalById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -262,7 +262,7 @@ public class ProCostExpenseServiceImpl implements ProCostExpenseService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProCostExpenseProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, PRO_COST_EXPENSE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProFileServiceImpl.java b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProFileServiceImpl.java index aa6821e88..c80f82dde 100644 --- a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProFileServiceImpl.java +++ b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProFileServiceImpl.java @@ -87,7 +87,7 @@ public class ProFileServiceImpl implements ProFileService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertProFileMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = proFileDao.queryProFileByTitle(map); @@ -163,7 +163,7 @@ public class ProFileServiceImpl implements ProFileService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProFileMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = proFileDao.queryProFileByTitle(map); @@ -189,7 +189,7 @@ public class ProFileServiceImpl implements ProFileService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProFileToApprovalById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); @@ -216,7 +216,7 @@ public class ProFileServiceImpl implements ProFileService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProFileProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, PRO_FILE_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProProjectServiceImpl.java b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProProjectServiceImpl.java index 4db8cab58..124dfc6ea 100644 --- a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProProjectServiceImpl.java +++ b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProProjectServiceImpl.java @@ -104,7 +104,7 @@ public class ProProjectServiceImpl implements ProProjectService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertProProjectMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); List<Map<String, Object>> beans = proProjectDao.queryProProjectMationByNameAndNum(map); @@ -222,7 +222,7 @@ public class ProProjectServiceImpl implements ProProjectService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProProjectMationById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String proId = map.get("id").toString(); @@ -247,7 +247,7 @@ public class ProProjectServiceImpl implements ProProjectService { * @throws Exception */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProProjectMationToSubApproval(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String proId = map.get("id").toString(); @@ -299,7 +299,7 @@ public class ProProjectServiceImpl implements ProProjectService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProjectProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, PRO_PROJECT_PAGE_KEY).revokeActivi(); } diff --git a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProTaskServiceImpl.java b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProTaskServiceImpl.java index 990859cd8..55155da7e 100644 --- a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProTaskServiceImpl.java +++ b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProTaskServiceImpl.java @@ -84,7 +84,7 @@ public class ProTaskServiceImpl implements ProTaskService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertProTaskMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = proTaskDao.queryProTaskByTaskName(map); @@ -166,7 +166,7 @@ public class ProTaskServiceImpl implements ProTaskService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProTaskMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); Map<String, Object> bean = proTaskDao.queryProTaskByTaskName(map); @@ -224,7 +224,7 @@ public class ProTaskServiceImpl implements ProTaskService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProTaskProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, PRO_TASK_PAGE_KEY).revokeActivi(); } @@ -240,7 +240,7 @@ public class ProTaskServiceImpl implements ProTaskService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProTaskToApprovalById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String id = map.get("id").toString(); diff --git a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProWorkloadServiceImpl.java b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProWorkloadServiceImpl.java index d6ef973af..81dedc992 100644 --- a/skyeye-pro/src/main/java/com/skyeye/service/impl/ProWorkloadServiceImpl.java +++ b/skyeye-pro/src/main/java/com/skyeye/service/impl/ProWorkloadServiceImpl.java @@ -88,7 +88,7 @@ public class ProWorkloadServiceImpl implements ProWorkloadService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void insertProWorkloadMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String workloadId = ToolUtil.getSurFaceId();//工作é‡ä¸»è¡¨id @@ -156,7 +156,7 @@ public class ProWorkloadServiceImpl implements ProWorkloadService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProWorkloadToApprovalById(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String workloadId = map.get("id").toString(); @@ -184,7 +184,7 @@ public class ProWorkloadServiceImpl implements ProWorkloadService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProWorkloadProcessToRevoke(InputObject inputObject, OutputObject outputObject) throws Exception { ActivitiRunFactory.run(inputObject, outputObject, PRO_WORKLOAD_PAGE_KEY).revokeActivi(); } @@ -248,7 +248,7 @@ public class ProWorkloadServiceImpl implements ProWorkloadService { * @throws */ @Override - @ActivitiAndBaseTransaction(value = {"activitiTransactionManager", "transactionManager"}) + @ActivitiAndBaseTransaction(value = {"transactionManager"}) public void editProWorkloadMation(InputObject inputObject, OutputObject outputObject) throws Exception { Map<String, Object> map = inputObject.getParams(); String workloadId = map.get("id").toString();//工作é‡ä¸»è¡¨id diff --git a/skyeye-quartz/src/main/java/com/skyeye/quartz/config/TaskRunner.java b/skyeye-quartz/src/main/java/com/skyeye/quartz/config/TaskRunner.java index d154efae3..9502bb6ea 100644 --- a/skyeye-quartz/src/main/java/com/skyeye/quartz/config/TaskRunner.java +++ b/skyeye-quartz/src/main/java/com/skyeye/quartz/config/TaskRunner.java @@ -1,6 +1,7 @@ /******************************************************************************* * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye ******************************************************************************/ + package com.skyeye.quartz.config; import cn.hutool.json.JSONUtil; diff --git a/skyeye-web/src/main/java/com/SkyEyeApplication.java b/skyeye-web/src/main/java/com/SkyEyeApplication.java index a3f088735..9c50b8cd1 100644 --- a/skyeye-web/src/main/java/com/SkyEyeApplication.java +++ b/skyeye-web/src/main/java/com/SkyEyeApplication.java @@ -4,10 +4,12 @@ package com; +import org.flowable.ui.modeler.properties.FlowableModelerAppProperties; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.TaskScheduler; @@ -19,9 +21,10 @@ import javax.servlet.MultipartConfigElement; @SpringBootApplication @EnableAutoConfiguration(exclude={ - org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, - org.activiti.spring.boot.SecurityAutoConfiguration.class + org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class, + org.flowable.spring.boot.FlowableSecurityAutoConfiguration.class }) +@EnableConfigurationProperties({FlowableModelerAppProperties.class}) @EnableTransactionManagement//å¯æ³¨è§£äº‹åŠ¡ç®¡ç†ï¼Œç‰åŒäºŽxmlé…置方å¼çš„ <tx:annotation-driven /> @EnableScheduling public class SkyEyeApplication { diff --git a/skyeye-web/src/main/java/com/skyeye/common/filter/SessionFilter.java b/skyeye-web/src/main/java/com/skyeye/common/filter/SessionFilter.java index ff86bfd46..a1d758db9 100644 --- a/skyeye-web/src/main/java/com/skyeye/common/filter/SessionFilter.java +++ b/skyeye-web/src/main/java/com/skyeye/common/filter/SessionFilter.java @@ -10,7 +10,6 @@ import com.skyeye.common.object.GetUserToken; import com.skyeye.common.util.SpringUtils; import com.skyeye.common.util.ToolUtil; import com.skyeye.jedis.impl.JedisClientServiceImpl; -import org.apache.log4j.MDC; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -93,11 +92,6 @@ public class SessionFilter implements Filter { // æƒé™æ ¡éªŒé€šè¿‡ if(authPoints(authPoints, key) || "2".equals(allUse)){ url = Constants.REQUEST_MAPPING.get(key).get("path").toString(); - // 设置日志 - // userName:如果没有userCode则默认id - MDC.put("userName", !userMation.containsKey("userCode") ? userMation.get("id") : userMation.get("userCode")); - MDC.put("realPath", url); - MDC.put("ip", ToolUtil.getIpByRequest(servletRequest)); request.getRequestDispatcher(url + "?sessionKey=" + key + "&allUse=" + allUse + "&userToken=" + userToken).forward(request, response); }else{ LOGGER.info("key[{}] is Forced visit, real url is {}", key, Constants.REQUEST_MAPPING.get(key).get("val").toString()); diff --git a/skyeye-web/src/main/java/com/skyeye/db/config/ActivitiDataSourceConfig.java b/skyeye-web/src/main/java/com/skyeye/db/config/ActivitiDataSourceConfig.java deleted file mode 100644 index 43fe2302b..000000000 --- a/skyeye-web/src/main/java/com/skyeye/db/config/ActivitiDataSourceConfig.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************* - * Copyright å«å¿—强 QQ:598748873@qq.com Inc. All rights reserved. å¼€æºåœ°å€ï¼šhttps://gitee.com/doc_wei01/skyeye - ******************************************************************************/ -package com.skyeye.db.config; - -import org.activiti.engine.ProcessEngineConfiguration; -import org.activiti.spring.SpringProcessEngineConfiguration; -import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration; -import org.apache.ibatis.session.SqlSessionFactory; -import org.mybatis.spring.SqlSessionFactoryBean; -import org.mybatis.spring.SqlSessionTemplate; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.jdbc.DataSourceBuilder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; -import org.springframework.transaction.PlatformTransactionManager; - -import javax.sql.DataSource; - -/** - * activiti工作æµæ•°æ®æºé…ç½® - * @author Administrator - * - */ -@Configuration -@MapperScan(basePackages = {"com.skyeye.activiti.mapper"}, sqlSessionFactoryRef = "activitiSqlSessionFactory") -public class ActivitiDataSourceConfig extends AbstractProcessEngineAutoConfiguration { - - @Bean(name = "activitiDataSource") - @ConfigurationProperties(prefix = "spring.datasource.activiti") - public DataSource activitiDataSource() { - return DataSourceBuilder.create().build(); - } - - @Bean(name = "activitiSqlSessionFactory") - public SqlSessionFactory baseSqlSessionFactory(@Qualifier("activitiDataSource") DataSource dataSource) throws Exception { - SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); - bean.setDataSource(dataSource); - try { - return bean.getObject(); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); - } - } - - @Bean(name = "activitiTransactionManager") - public PlatformTransactionManager transactionManager(@Qualifier("activitiDataSource") DataSource activitiDataSource) { - return new DataSourceTransactionManager(activitiDataSource); - } - - public SqlSessionTemplate activitiSqlsessionTemplate(@Qualifier("activitiSqlsessionTemplate") SqlSessionFactory sqlSessionFactory) throws Exception { - // 使用上é¢é…置的Factory - return new SqlSessionTemplate(sqlSessionFactory); - } - - @Bean - public SpringProcessEngineConfiguration springProcessEngineConfiguration(@Qualifier("activitiDataSource") DataSource activitiDataSource) { - SpringProcessEngineConfiguration configuration = new SpringProcessEngineConfiguration(); - configuration.setDataSource(activitiDataSource()); - configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); - // activiti的任务查询定时任务 - configuration.setJobExecutorActivate(false); - configuration.setTransactionManager(transactionManager(activitiDataSource)); - return configuration; - } - -} diff --git a/skyeye-web/src/main/java/com/skyeye/db/config/BaseDataSourceConfig.java b/skyeye-web/src/main/java/com/skyeye/db/config/BaseDataSourceConfig.java index 84d65cf87..5ce2b1900 100644 --- a/skyeye-web/src/main/java/com/skyeye/db/config/BaseDataSourceConfig.java +++ b/skyeye-web/src/main/java/com/skyeye/db/config/BaseDataSourceConfig.java @@ -5,26 +5,99 @@ package com.skyeye.db.config; import com.zaxxer.hikari.HikariDataSource; +import liquibase.Liquibase; +import liquibase.database.Database; +import liquibase.database.DatabaseConnection; +import liquibase.database.DatabaseFactory; +import liquibase.database.jvm.JdbcConnection; +import liquibase.exception.DatabaseException; +import liquibase.resource.ClassLoaderResourceAccessor; +import org.apache.commons.collections.CollectionUtils; import org.apache.ibatis.session.SqlSessionFactory; +import org.flowable.common.engine.api.FlowableException; +import org.flowable.ui.common.service.exception.InternalServerErrorException; +import org.flowable.ui.modeler.properties.FlowableModelerAppProperties; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; +import java.io.IOException; +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; @Configuration -@MapperScan(basePackages = {"com.skyeye.eve.dao", "com.skyeye.dao", "com.skyeye.school.dao"}, sqlSessionFactoryRef = "baseSqlSessionFactory") +@MapperScan(basePackages = { + "com.skyeye.eve.dao", + "com.skyeye.dao", + "com.skyeye.school.dao", + "com.skyeye.activiti.mapper"}, sqlSessionFactoryRef = "baseSqlSessionFactory") public class BaseDataSourceConfig { + private static final Logger LOGGER = LoggerFactory.getLogger(BaseDataSourceConfig.class); + + protected static Properties databaseTypeMappings = getDefaultDatabaseTypeMappings(); + + protected static final String LIQUIBASE_CHANGELOG_PREFIX = "ACT_ADM_"; + + public static Properties getDefaultDatabaseTypeMappings() { + Properties databaseTypeMappings = new Properties(); + databaseTypeMappings.setProperty("H2", "h2"); + databaseTypeMappings.setProperty("HSQL Database Engine", "hsql"); + databaseTypeMappings.setProperty("MySQL", "mysql"); + databaseTypeMappings.setProperty("Oracle", "oracle"); + databaseTypeMappings.setProperty("PostgreSQL", "postgres"); + databaseTypeMappings.setProperty("Microsoft SQL Server", "mssql"); + databaseTypeMappings.setProperty("db2", "db2"); + databaseTypeMappings.setProperty("DB2", "db2"); + databaseTypeMappings.setProperty("DB2/NT", "db2"); + databaseTypeMappings.setProperty("DB2/NT64", "db2"); + databaseTypeMappings.setProperty("DB2 UDP", "db2"); + databaseTypeMappings.setProperty("DB2/LINUX", "db2"); + databaseTypeMappings.setProperty("DB2/LINUX390", "db2"); + databaseTypeMappings.setProperty("DB2/LINUXX8664", "db2"); + databaseTypeMappings.setProperty("DB2/LINUXZ64", "db2"); + databaseTypeMappings.setProperty("DB2/LINUXPPC64", "db2"); + databaseTypeMappings.setProperty("DB2/400 SQL", "db2"); + databaseTypeMappings.setProperty("DB2/6000", "db2"); + databaseTypeMappings.setProperty("DB2 UDB iSeries", "db2"); + databaseTypeMappings.setProperty("DB2/AIX64", "db2"); + databaseTypeMappings.setProperty("DB2/HPUX", "db2"); + databaseTypeMappings.setProperty("DB2/HP64", "db2"); + databaseTypeMappings.setProperty("DB2/SUN", "db2"); + databaseTypeMappings.setProperty("DB2/SUN64", "db2"); + databaseTypeMappings.setProperty("DB2/PTX", "db2"); + databaseTypeMappings.setProperty("DB2/2", "db2"); + databaseTypeMappings.setProperty("DB2 UDB AS400", "db2"); + databaseTypeMappings.setProperty("DM DBMS", "dm"); + return databaseTypeMappings; + } + + @Autowired + protected FlowableModelerAppProperties modelerAppProperties; + + @Autowired + protected ResourceLoader resourceLoader; + /** * Primary å¿…é¡»åŠ æ¤æ³¨è§£ï¼Œä¸ç„¶æŠ¥é”™ï¼Œä¸‹ä¸€ä¸ªç±»åˆ™ä¸éœ€è¦æ·»åŠ ,表示这个数æ®æºæ˜¯é»˜è®¤æ•°æ®æº * ConfigurationProperties(prefix)值必须是application.properteisä¸å¯¹åº”属性的å‰ç¼€ @@ -52,21 +125,72 @@ public class BaseDataSourceConfig { @Primary @Bean(name = "baseSqlSessionFactory") public SqlSessionFactory baseSqlSessionFactory(@Qualifier("baseDataSource") DataSource dataSource) throws Exception { - SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); - bean.setDataSource(dataSource); - // æ·»åŠ XML目录 - ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); - try { - bean.setMapperLocations(resolver.getResources("classpath*:mapper/**/*.xml")); - return bean.getObject(); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException(e); + SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); + + sqlSessionFactoryBean.setDataSource(dataSource); + String databaseType = this.initDatabaseType(dataSource); + if (databaseType == null) { + throw new FlowableException("couldn't deduct database type"); + } else { + try { + // æ·»åŠ XML目录 + sqlSessionFactoryBean.setMapperLocations(resolveMapperLocations()); + Properties properties = new Properties(); + properties.put("prefix", this.modelerAppProperties.getDataSourcePrefix()); + properties.put("blobType", "BLOB"); + properties.put("boolValue", "1"); + properties.load(this.getClass().getClassLoader().getResourceAsStream("org/flowable/db/properties/" + databaseType + ".properties")); + sqlSessionFactoryBean.setConfigurationProperties(properties); + sqlSessionFactoryBean.afterPropertiesSet(); + return sqlSessionFactoryBean.getObject(); + } catch (Exception var5) { + throw new FlowableException("Could not create sqlSessionFactory", var5); + } + } + } + + public Resource[] resolveMapperLocations() { + ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver(); + List<String> mapperLocations = new ArrayList<>(); + mapperLocations.add("classpath*:mapper/**/*.xml"); + mapperLocations.add("classpath:/META-INF/modeler-mybatis-mappings/*.xml"); + List<Resource> resources = new ArrayList(); + if (!CollectionUtils.isEmpty(mapperLocations)) { + for (String mapperLocation : mapperLocations) { + try { + Resource[] mappers = resourceResolver.getResources(mapperLocation); + resources.addAll(Arrays.asList(mappers)); + } catch (IOException e) { + LOGGER.error("Get myBatis resources happened exception", e); + } + } + } + return resources.toArray(new Resource[resources.size()]); + } + + @Bean + public Liquibase liquibase(@Qualifier("baseDataSource") DataSource dataSource) { + LOGGER.info("Configuring Liquibase"); + Liquibase liquibase = null; + try { + DatabaseConnection connection = new JdbcConnection(dataSource.getConnection()); + Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(connection); + database.setDatabaseChangeLogTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogTableName()); + database.setDatabaseChangeLogLockTableName(LIQUIBASE_CHANGELOG_PREFIX + database.getDatabaseChangeLogLockTableName()); + + liquibase = new Liquibase("META-INF/liquibase/flowable-modeler-app-db-changelog.xml", new ClassLoaderResourceAccessor(), database); + liquibase.update("flowable"); + return liquibase; + } catch (Exception var9) { + throw new InternalServerErrorException("Error creating liquibase database", var9); + } finally { + this.closeDatabase(liquibase); } } + @Primary @Bean(name = "transactionManager") - public PlatformTransactionManager transactionManagerOne(@Qualifier("baseDataSource") DataSource dataSourceOne) { + public PlatformTransactionManager transactionManager(@Qualifier("baseDataSource") DataSource dataSourceOne) { return new DataSourceTransactionManager(dataSourceOne); } @@ -75,5 +199,55 @@ public class BaseDataSourceConfig { // 使用上é¢é…置的Factory return new SqlSessionTemplate(sqlSessionFactory); } + + /** + * åˆå§‹åŒ– + * + * @param dataSource + * @return + */ + protected String initDatabaseType(@Qualifier("activitiDataSource") DataSource dataSource) { + String databaseType = null; + Connection connection = null; + + try { + connection = dataSource.getConnection(); + DatabaseMetaData databaseMetaData = connection.getMetaData(); + String databaseProductName = databaseMetaData.getDatabaseProductName(); + LOGGER.info("database product name: '{}'", databaseProductName); + databaseType = databaseTypeMappings.getProperty(databaseProductName); + if (databaseType == null) { + throw new FlowableException("couldn't deduct database type from database product name '" + databaseProductName + "'"); + } + + LOGGER.info("using database type: {}", databaseType); + } catch (SQLException var14) { + LOGGER.error("Exception while initializing Database connection", var14); + } finally { + try { + if (connection != null) { + connection.close(); + } + } catch (SQLException var13) { + LOGGER.error("Exception while closing the Database connection", var13); + } + + } + databaseType = ("dm".equals(databaseType)) ? "oracle" : databaseType; + return databaseType; + } + + private void closeDatabase(Liquibase liquibase) { + if (liquibase != null) { + Database database = liquibase.getDatabase(); + if (database != null) { + try { + database.close(); + } catch (DatabaseException var4) { + LOGGER.warn("Error closing database", var4); + } + } + } + } } diff --git a/skyeye-web/src/main/resources/application.properties b/skyeye-web/src/main/resources/application.properties new file mode 100644 index 000000000..e69de29bb diff --git a/skyeye-web/src/main/resources/application.yml b/skyeye-web/src/main/resources/application.yml index 7bd69e5f4..30267cf1b 100644 --- a/skyeye-web/src/main/resources/application.yml +++ b/skyeye-web/src/main/resources/application.yml @@ -27,13 +27,6 @@ spring: max-connections: 100 user: ${activite.username} datasource: - activiti: - check-process-definitions: false - driver-class-name: com.mysql.jdbc.Driver - type: com.zaxxer.hikari.HikariDataSource - jdbc-url: ${activiti.database.path} - username: ${activiti.database.username} - password: ${activiti.database.password} basedata: connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 driver-class-name: ${jdbc.database.driverClassName} -- GitLab