camunda bpnm Весенняя загрузка Деятельность делегатов Соответствие делегатов не работает - PullRequest
2 голосов
/ 03 ноября 2019

Я скачал образец, предоставленный для оркестровки весенних микроуслуг, с GITHUB

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

В путеводителе bpnm имя первого действия отображается как Получить корзину покупок , а второе - как Проверить адрес , но при запуске рабочего процессас остальным вызовом из приведенного ниже кода

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 (Имя в этом и фактическом классах не совпадают?

1 Ответ

1 голос
/ 04 ноября 2019

Вопрос 2 первый: java api и соответствие процесса через технический идентификатор процесса. Вы видите это в вызове «startProcessInstanceByKey»: submitShoppingCart - это технический идентификатор процесса. В Modeller вы найдете его в самом верху панели свойств. enter image description here

Вопрос 1: Java API camunda связывает службы Задачи с выполнением через интерфейсы JavaDelegate. Таким образом, для каждой сервисной задачи есть класс, который реализует то, что должно происходить в его методе execute(DelegateExecution execution).

В весенних проектах эти делегаты обычно называются своими именами компонентов ... в вашем примере,услуга «Получить карту покупателя» поддерживается делегатом ${retrieveShoppingCartActivity}. По соглашению, имя бина равно имени класса, поэтому ищите RetrieveShoppingCartActivity, чтобы увидеть, что внутри.

...