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
以查看其中的内容。
我从 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
以查看其中的内容。