как инициировать рабочий процесс activiti из java-программы

У меня есть требование инициировать рабочий процесс после отправки значений формы на уровне пользовательского интерфейса. Внутри прослушивателя отправки есть средства, как вызвать рабочий процесс, и я сделал, что все значения формы хранятся в одном объекте. Теперь, как я могу вызвать рабочий процесс, как отправить эти отправленные значения формы (объект) отправляются в рабочий процесс, потому что я хочу отображать эти значения формы в другой форме (на уровне пользовательского интерфейса).

Например: на уровне пользовательского интерфейса я создаю форму с полями имя пользователя, адрес электронной почты, адрес, мобильный телефон и т. д., наконец, нажмите «Отправить», после того как мой рабочий процесс инициирует и утверждает данные с помощью двухуровневой проверки пользователем (пользователь A, пользователь B).

В то же время я реализую код для папки «Входящие», в этой папке «Входящие» я хочу отображать эти значения формы. Всякий раз, когда пользователь отправляет форму, она отправляется в папку «Входящие», внутри папки «Входящие» я получаю этот запрос на утверждение, где я одобряю его.

Представьте, что я создал начало рабочего процесса, пользователь A, пользователь B, конечные события. Всякий раз, когда я запускаю поток экземпляра процесса, теперь начинается поток, я показываю, какая задача выполняется, кто является уполномоченным и т. д. из службы задач, но я не знаю, как передать отправленную форму значения от уровня пользовательского интерфейса до рабочего процесса и отображать эти данные в папке «Входящие».

Я знаю, что через getVariables() мы получаем все атрибуты. Но как перейти от пользовательского интерфейса к рабочему процессу и от рабочего процесса к пользовательскому интерфейсу?


person sai576    schedule 22.04.2013    source источник


Ответы (2)


Сначала у вас есть экземпляр класса ProcessEngine, как указано здесь:

ProcessEngine processEngine = ProcessEngineConfiguration.createProcessEngineConfigurationFromResourceDefault() .buildProcessEngine();

После этого получите экземпляр RuntimeService, как указано здесь:

RuntimeService runtimeService = processEngine.getRuntimeService();

Вы можете создать экземпляр процесса, используя следующий метод:

ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("processId");

Вам необходимо добавить все файлы jar, доступные внутри пакета activiti, в библиотеки вашего проекта.

person Madhusudan Joshi    schedule 03.05.2013
comment
Во-первых, спасибо за ваш ответ, Джоши, независимо от того, какое решение я уже пробовал. Но я хочу, предположим, создать один проект vaadin, в котором я создал несколько регистрационных форм. Я создал еще одно свое собственное приложение Inbox (UI) через vaadin. хорошо. Теперь мой вопрос заключается в том, что после отправки любой регистрационной формы она отправляется в мой почтовый ящик в этом почтовом ящике, как я могу получить отправленные значения формы регистрации. Я хочу отобразить эти значения в моем пользовательском интерфейсе входящих сообщений. - person sai576; 05.05.2013
comment
@sai576 надеюсь, что ответ был полезен - person Madhusudan Joshi; 07.05.2013

Как только вы отправите свои значения, они перейдут на следующий уровень в диаграмме процесса. Итак, здесь будет создан новый taskId. Вот код, который использовал Java APIs, предоставленный Activiti, для получения свойств формы:

FormService formService = processEngine.getFormService();
TaskService taskService1 = processEngine.getTaskService();
TaskQuery taskQuery1 = taskService1.createTaskQuery().taskAssignee("gonzo");
List<Task> taskList1 = taskQuery1.list();
int j = 0;
for(Task task : taskList1){
    j++;
TaskFormData taskFormData = formService.getTaskFormData(task.getId());
List<FormProperty> listFormProperty = taskFormData.getFormProperties();
for(FormProperty formProperty : listFormProperty){
       out.println(task.getId()+":"+task.getName()+"id:"+formProperty.getId());
       out.println(task.getId()+":"+task.getName()+"name:"+formProperty.getName());
       out.println(task.getId()+":"+task.getName()+"type:"+formProperty.getType().getName());
       out.println(task.getId()+":"+task.getName()+"value:"+formProperty.getValue());

    }

    out.println("task "+j+"is "+task.getId()+":"+task.getName()+":"+task.getAssignee()+":"+task.getDescription());
}

Приведенный выше код поможет вам получить все свойства формы, такие как type, name, value и многие другие.

Также те же свойства, которые вы можете получить с помощью REST API, предоставляемого Activiti. Вот API свойств формы.

person Madhusudan Joshi    schedule 06.05.2013