Выполнение пользовательской задачи Camunda не выполняется

У меня есть модель BPMN, встроенная в приложение Camunda Spring. Настройка, которую я взял с этого сайта: https://github.com/camunda/camunda-bpm-examples/tree/master/deployment/embedded-spring-rest

Я пытаюсь подключить пользовательскую задачу bmpn к моему приложению и выполнить ее при запуске всего процесса. Кроме того, я хочу, чтобы при выполнении этой задачи была открыта форма. К сожалению, я получаю сообщение об ошибке при попытке сделать это. Я сделал следующие конфигурации:

В пользовательской задаче файла.bpmn я добавил эту строку:

<userTask id="Task_18modqk" name="fill out form" camunda:formKey="embedded:app:forms/request-loan.html" camunda:assignee="${fillOut}">

Мой bpmn выглядит так:

Затем в контексте приложения я создал бин, подобный этому:

<bean id="fillOut" class="org.camunda.bpm.example.loanapproval.FillOutForm" />

Кроме того, я создал класс, связанный с компонентом, со следующим кодом: package org.camunda.bpm.example.loanapproval;

public class FillOutForm 
{
    public String fillOut() {
    return "form filled out";
 }

}

Когда я запускаю стартовый класс, я получаю следующую ошибку:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.camunda.bpm.example.loanapproval.Starter#0'

определено в ресурсе ServletContext [/WEB-INF/applicationContext.xml]: сбой вызова метода init; вложенным исключением является java.lang.ClassCastException: org.camunda.bpm.example.loanapproval.FillOutForm не может быть приведен к java.lang.String

Сервисные задачи работают тихо, потому что соответствующие классы реализуют JavaDelegate, но я не знаю, как работать с пользовательскими задачами в сочетании с компонентами Spring.

Пожалуйста, предоставьте мне некоторую помощь Заранее спасибо

1 ответ

Кажется, это работает, вы устанавливаете ${fillOut}, который отображается на связанный бин Spring (<.bean id = "fillOut"....), но свойство Camunda Assignee ожидает, что String не является объектом...

Если вы наберете ${fillout.fillout()}, это должно сработать.

(кстати, выглядит немного странно, что вы делаете;), но я также не эксперт Камунды...)

Другие вопросы по тегам