wuxw
2020-06-21 f7b0c64785d8f64ee9b628808f1022f8460bab5e
优化流程图
5个文件已修改
79 ■■■■■ 已修改文件
pom.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/pom.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/CommonServiceApplicationStart.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/activity/ActivitiConfig.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/smo/impl/WorkflowInnerServiceSMOImpl.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -500,6 +500,24 @@
                <version>6.0.0.RC1</version>
            </dependency>
            <!--<dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-modeler</artifactId>
                <version>6.0.0</version>
            </dependency>-->
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-spring-boot-starter-basic</artifactId>
                <version>6.0.0</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.mybatis</groupId>
                        <artifactId>mybatis</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.tencentcloudapi</groupId>
                <artifactId>tencentcloud-sdk-java</artifactId>
service-common/pom.xml
@@ -26,14 +26,22 @@
            <groupId>com.java110</groupId>
            <artifactId>java110-service</artifactId>
        </dependency>
        <dependency>
       <!-- <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
        </dependency>
        </dependency>-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
        </dependency>
       <!-- <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-modeler</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
        </dependency>
    </dependencies>
    <build>
service-common/src/main/java/com/java110/common/CommonServiceApplicationStart.java
@@ -36,7 +36,9 @@
        "com.java110.config.properties.code",
        "com.java110.db"},
        exclude = {LiquibaseAutoConfiguration.class,
                org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class})
                org.activiti.spring.boot.SecurityAutoConfiguration.class,
                org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class}
        )
@EnableDiscoveryClient
@Java110ListenerDiscovery(listenerPublishClass = BusinessServiceDataFlowEventPublishing.class,
        basePackages = {"com.java110.common.listener"})
service-common/src/main/java/com/java110/common/activity/ActivitiConfig.java
@@ -12,7 +12,7 @@
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.transaction.PlatformTransactionManager;
import org.activiti.spring.boot.ProcessEngineConfigurationConfigurer;
import javax.sql.DataSource;
import java.io.IOException;
@@ -25,7 +25,7 @@
 * add by wuxw 2019/10/22
 **/
@Configuration
public class ActivitiConfig  {
public class ActivitiConfig implements ProcessEngineConfigurationConfigurer {
    @Autowired
@@ -85,4 +85,10 @@
        return processEngine().getObject().getHistoryService();
    }
    @Override
    public void configure(SpringProcessEngineConfiguration springProcessEngineConfiguration) {
        springProcessEngineConfiguration.setActivityFontName("宋体");
        springProcessEngineConfiguration.setAnnotationFontName("宋体");
        springProcessEngineConfiguration.setLabelFontName("宋体");
    }
}
service-common/src/main/java/com/java110/common/smo/impl/WorkflowInnerServiceSMOImpl.java
@@ -14,14 +14,8 @@
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.StringUtil;
import org.activiti.bpmn.BpmnAutoLayout;
import org.activiti.bpmn.model.BpmnModel;
import org.activiti.bpmn.model.EndEvent;
import org.activiti.bpmn.model.ExclusiveGateway;
import org.activiti.bpmn.model.ParallelGateway;
import org.activiti.bpmn.model.Process;
import org.activiti.bpmn.model.SequenceFlow;
import org.activiti.bpmn.model.StartEvent;
import org.activiti.bpmn.model.UserTask;
import org.activiti.bpmn.model.*;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
@@ -172,19 +166,19 @@
                    List<WorkflowStepStaffDto> userList = step.getWorkflowStepStaffs();
                    for (int u = 0; u < userList.size(); u++) {
                        //并行网关分支的审核节点
                        process.addFlowElement(createUserTask("userTask" + i + u, "userTask" + i + u, userList.get(u).getStaffId()));
                        process.addFlowElement(createUserTask("userTask" + i + u, userList.get(u).getStaffName(), userList.get(u).getStaffId()));
                    }
                    //并行网关-汇聚
                    process.addFlowElement(createParallelGateway("parallelGateway-join" + i, "parallelGateway-join" + i));
                    process.addFlowElement(createUserTask("repulse" + i, "repulse" + i, "${startUserId}"));
                    process.addFlowElement(createUserTask("repulse" + i, "提交者", "${startUserId}"));
                } else {
                    //普通流转
                    //审核节点
                    process.addFlowElement(createGroupTask("task" + i, "task" + i, step.getWorkflowStepStaffs().get(0).getStaffId()));
                    process.addFlowElement(createGroupTask("task" + i, step.getWorkflowStepStaffs().get(0).getStaffName(), step.getWorkflowStepStaffs().get(0).getStaffId()));
                    //回退节点
                    process.addFlowElement(createUserTask("repulse" + i, "repulse" + i, "${startUserId}"));
                    process.addFlowElement(createUserTask("repulse" + i, "提交者", "${startUserId}"));
                }
            }
            //结束节点
@@ -206,7 +200,7 @@
                        if (WorkflowStepDto.TYPE_COUNTERSIGN.equals(workflowStepDtos.get(y - 1).getType())) {
                            process.addFlowElement(createSequenceFlow("parallelGateway-join" + (y - 1), "parallelGateway-fork" + y, "parallelGateway-join-parallelGateway-fork-分支" + y, ""));
                        } else {
                            process.addFlowElement(createSequenceFlow("task" + (y - 1), "repulse" + y, "task-repulse" + y, ""));
                            process.addFlowElement(createSequenceFlow("task" + (y - 1), "parallelGateway-fork" + y, "task-repulse" + y, ""));
                        }
                    }
                    //并行网关-分支和会签用户连线,会签用户和并行网关-汇聚连线
@@ -220,9 +214,9 @@
                        }
                    }
                    //最后一个节点  并行网关-汇聚到结束节点
//                if (y == (userList.size() - 1)) {
//                    process.addFlowElement(createSequenceFlow("parallelGateway-join" + y, "endEvent", "parallelGateway-join-endEvent", ""));
//                }
                    if (y == (workflowStepDtos.size() - 1)) {
                        process.addFlowElement(createSequenceFlow("repulse" + y, "endEvent", "parallelGateway-join-endEvent", "${flag=='true'}"));
                    }
                } else {
                    //普通流转
                    //第一个节点
@@ -243,10 +237,12 @@
                    //是否最后一个节点
                    if (y == (workflowStepDtos.size() - 1)) {
                        //审核节点到结束节点
                        process.addFlowElement(createSequenceFlow("task" + y, "endEvent", "task" + y + "endEvent", "${flag=='true'}"));
                    }
                        process.addFlowElement(createSequenceFlow("repulse" + y, "endEvent", "task" + y + "endEvent", "${flag=='true'}"));
                        process.addFlowElement(createSequenceFlow("task" + y, "repulse" + y, "task-repulse" + y, ""));
                    } else {
                    //审核节点到回退节点
                    process.addFlowElement(createSequenceFlow("task" + y, "repulse" + y, "task-repulse" + y, "${flag=='false'}"));
                    }
                    process.addFlowElement(createSequenceFlow("repulse" + y, "task" + y, "repulse-task" + y, ""));
                }
            }
@@ -255,7 +251,8 @@
            new BpmnAutoLayout(model).execute();
            // 3. 部署流程
            Deployment deployment = processEngine.getRepositoryService().createDeployment().addBpmnModel(process.getId() + ".bpmn", model).name(process.getId() + "_deployment").deploy();
            Deployment deployment = processEngine.getRepositoryService().createDeployment()
                    .addBpmnModel(process.getId() + ".bpmn", model).name(process.getId() + "_deployment").deploy();
            workflowDto.setProcessDefinitionKey(deployment.getId());
            //        // 4. 启动一个流程实例
//        ProcessInstance processInstance = processEngine.getRuntimeService().startProcessInstanceByKey(process.getId());
@@ -282,7 +279,7 @@
    }
    private int getNormal(List<WorkflowStepDto> workflowStepDtos, int y) {
        for (int stepIndex = y; stepIndex > 0; y--) {
        for (int stepIndex = y; stepIndex > 0; stepIndex--) {
            if (WorkflowStepDto.TYPE_NORMAL.equals(workflowStepDtos.get(stepIndex).getType())) {
                return stepIndex;
            }