java - 如何在 Flowable 中执行高效的卸载过程

标签 java spring-boot activiti bpmn flowable

我是 Flowable 新手。我尝试创建 BPMN 部署到 MYSQL,并且部署成功。

但是在取消部署过程中,我将所有部署存储在列表中,然后根据我的条件执行取消部署,就像如果 resouceName 和 CompanyCode 都匹配,那么我们将删除部署。

假设如果我们有更多部署,我们无法将其存储在列表中,然后尝试将整个列表与我的条件进行匹配。

我怎样才能有效地执行此操作。

public void deployResource(String resourceName, InputStream resourceStream, 
    String companyCode) {

    RepositoryService repoService = processEngine.getRepositoryService();
    DeploymentBuilder dbuilder = repoService.createDeployment();
    dbuilder.addInputStream(resourceName, resourceStream);
    dbuilder.name(resourceId);

    if (companyCode != null && !companyCode.isEmpty()) {
        logger.info("Setting Tenant ID with companyCode {}", companyCode);
        dbuilder.tenantId(companyCode);
    }
    dbuilder.deploy();
}

//这是取消部署方法

 public void undeploy(String resourceName, String companyCode) {
    try {

        logger.debug(LogMarker.ENTRY, "Undeployment Process {} is Started for Resource Name{}", resourceName, companyCode);

        RepositoryService repoService = processEngine.getRepositoryService();

        List<ProcessDefinition> list = repoService.createProcessDefinitionQuery().processDefinitionResourceNameLike(resourceName)
            .processDefinitionTenantIdLike(companyCode).list();

        for (ProcessDefinition processDefinition : list) {
            repoService.deleteDeployment(processDefinition.getDeploymentId(), true);

            logger.debug(LogMarker.EXIT, "Undeployment Process {} is Successfully Completed for Resource Name{}", resourceName);
            break;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

最佳答案

为什么不查询部署而不是查询流程定义?

你可以这样做:

List<Deployment> deployments = repositoryService.createDeploymentQuery()
    .deploymentTenantId(companyCode)
    .processDefinitionKey(processDefinitionKey)
    .list();

然后您可以删除这些部署。请记住,当前执行取消部署的方式可能会删除与您的条件不匹配、但属于另一个流程定义部署的一部分的流程定义(您可以在每个部署中部署多个流程定义)。

关于java - 如何在 Flowable 中执行高效的卸载过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55306351/

相关文章:

java - 是否可以使用 Spring-WS 从 WSDL 文件创建 WS 客户端? (好像没有)

java - Android 内存使用情况

java - Activiti BPM 可以与 Eclipse neon 配合使用吗?

java - 从 IDE 运行服务时的 catalina.base 路径

java - IntelliJ IDEA 中的 scala 包导入错误

spring-boot - Elasticsearch 索引生命周期策略

java - Spring 启动: How to avoid too many JPA repositories for each domain class

java - Spring Boot 过滤器未返回正确的响应

intellij-idea - 当我使用 'actiBPM' 时, 'Activiti' 是 IntelliJ IDEA 的最佳插件吗?

java - 在Activiti Java Delegate内部启动进程并查询任务