通过API进行Camunda流程定义部署

Tar*_*eik 3 camunda

我正在尝试使用以下代码从文件部署流程定义

    DeploymentBuilder deploymentBuilder = repositoryService.createDeployment().name(definitionName);
    deploymentBuilder.addInputStream(definitionName, definitionFileInputStream);
    String deploymentId = deploymentBuilder.deploy().getId();
    System.out.println(deploymentId);
Run Code Online (Sandbox Code Playgroud)

上面的代码成功运行,并打印出新的deploymentId.

后来,我尝试使用以下代码列出已部署的流程定义

    List<ProcessDefinition> definitions = repositoryService.createProcessDefinitionQuery().list();
    System.out.println(definitions.size());
Run Code Online (Sandbox Code Playgroud)

上面的代码运行成功,但输出始终为0.

我做了一些调查,发现在ACT_GE_BYTEARRAY表中有一个相应deploymentId存在的条目,该BYTES_列包含定义文件的内容.

我还发现ACT_RE_PROCDEF表中没有相应的条目.

有什么东西搞乱吗?从API和我发现的例子看来上面的代码就足够了,或者是否有缺失的步骤?

谢谢你的帮助

Tar*_*eik 5

原来,该问题涉及到definitionName (感谢thorben!) ,因为它必须在任结束.bpmn20.xml.bpmn.

进一步测试后,下面definitionName的代码需要后缀

    deploymentBuilder.addInputStream(definitionName, definitionFileInputStream);
Run Code Online (Sandbox Code Playgroud)

definitionName如果没有后缀,请保留以下内容

    repositoryService.createDeployment().name(definitionName);
Run Code Online (Sandbox Code Playgroud)