camunda bpmn spring boot activity 委托匹配不起作用

camunda bpnm spring boot activity delegates matching is not working

我从 GITHUB

下载了为 spring 微服务编排提供的示例

它的工作原理与描述中给出的细节一样,但现在我正在尝试构建自己的工作流程,但无法将调用流程(代码执行)从一个 activity 映射到另一个 activity。

在 bpnm guide 中,第一个 activity 名称显示为 检索购物车 ,第二个名称显示为 验证地址 但是当我从下面的代码

开始使用 rest 调用工作流时
public class ShoppingCartRestController {

    @Autowired
    private ProcessEngine camunda;

    @RequestMapping(value = "/{scId}/submit", method = RequestMethod.POST)
    public ResponseEntity<?> placeOrderPOST(@PathVariable("scId") String scId) {
        ProcessContext context = new ProcessContext();
        submitShoppingCart(scId, context);
        if (context.getError() != null) {
            return new ResponseEntity<>(context.getError(), HttpStatus.FORBIDDEN);
        }
        return new ResponseEntity<>(context.getResponse(), HttpStatus.OK);

    }

    private ProcessInstance submitShoppingCart(String scId, ProcessContext context) {
        return camunda.getRuntimeService().startProcessInstanceByKey(//
                "submitShoppingCart", //
                Variables //
                        .putValue(ProcessConstants.VAR_SC_ID, scId).putValue(ProcessConstants.VAR_CTX, context));
    }
}

从上面我无法了解它如何委托检索地址,然后委托验证地址等等以结束流程?

以及如何从 submitShoppingCart.bpmn 链接进程(此处的名称与实际 类 不匹配?

问题 2 首先:java api 和进程通过进程技术 ID 匹配。 您在 "startProcessInstanceByKey" 调用中看到它: submitShoppingCart 是进程的技术 ID。在建模器中,您可以在属性面板的最顶部找到它。

问题 1:camunda Java API 通过 Java 委托接口将服务任务链接到执行。因此,对于每个服务任务,都有一个 class 实现其 execute(DelegateExecution execution) 方法中应该发生的事情。

在 spring 项目中,这些委托通常由它们的 bean 名称引用...在您的示例中,"Retrieve Shopping Card" 服务由 ${retrieveShoppingCartActivity} 委托支持。按照惯例,bean 名称等于 class 名称,因此请查找 RetrieveShoppingCartActivity 以查看其中的内容。