Как выполнить эффективный процесс UnDeployment в Flowable - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в Текучем. Я попытался создать BPMN-развертывание на MYSQL, и оно успешно развернуто.

Но в процессе UnDeployment я сохраняю все развертывания в списке, а затем выполняю отмену развертывания на основе My Criteria, например, если оба параметра 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();
    }
}

1 Ответ

0 голосов
/ 25 марта 2019

Вместо того, чтобы запрашивать определения процессов, почему бы не запросить Deployment (s)?

Вы можете сделать:

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

Затем вы можете удалить эти развертывания. Помните, что ваш текущий способ выполнения развертывания может удалить определения процессов, которые не соответствуют вашим критериям, но являются частью развертывания другого определения процесса (вы можете развернуть несколько определений процессов на развертывание).

...