Возможно ли (и если да: как) добавить пользовательскую работу в исполнительскую службу в camunda BPM? Мое требование заключается в выполнении связанной с процессом службы по таймеру или циклу. Я не хочу моделировать это в bpmn прямо, так как это не является частью процесса. Я мог бы запустить дополнительные произвольные процессы, содержащие только одну задачу async Service, чтобы архивировать это, но я бы предпочел добавить вызов Soap/Rest/rmi в очередь заданий напрямую без дополнительных усилий. Кто-нибудь пробовал это раньше?Добавить пользовательскую работу в jobexecutor
4
A
ответ
6
Это расширенный вопрос. Возможно создание задания с использованием внутреннего API. Вы должны предоставить две вещи:
пользовательский обработчик работы:
public class CustomjobHandler implements JobHandler {
public static final String TYPE = "customjobHandler";
public String getType() {
return TYPE;
}
public void execute(String configuration, ExecutionEntity execution, CommandContext commandContext) {
// provide custom job execution logic
}
}
Обработчик задания добавляется к конфигурации процесса двигателя. См. Список (customJobHandlers
).
Команда для создания задания
, например, из Java-делегата (вы также можете использовать пользовательскую команду).
public class CreateJobCommand implements Command<String> {
public String execute(CommandContext commandContext) {
MessageEntity message = new MessageEntity();
message.setJobHandlerType(CustomJobHandler.TYPE);
String config = "some string you want to pass to the hanlder";
message.setJobHandlerConfiguration(config);
Context
.getCommandContext()
.getJobManager()
.send(message);
return message.getId();
}
}
Это создает «Сущность сообщения», который выполняется как можно скорее. Если вы хотите выполнить время по времени, вы можете создать TimerEntity. Затем вы можете выполнить команду на исполнителе команд механизма процесса.
Edit: проверить это в автономном Engine, вы должны добавить CustomJobHandler к camunda.cfg.xml:
<property name="customJobHandlers">
<list>
<bean class="<FQN of CustomJobHandler>" />
</list>
</property>
Смежные вопросы
- 1. photoswipe - как сделать пользовательскую работу pid
- 2. django admin Добавить пользовательскую кнопку + пользовательскую форму
- 3. Добавить пользовательскую кнопку в jtable
- 4. Добавить историю в пользовательскую оболочку
- 5. Добавить пользовательскую проверку в SmartWizard
- 6. Добавить пользовательскую библиотеку в ember
- 7. Добавить пользовательскую функцию в объекты
- 8. Добавить пользовательскую кнопку в CKEditor
- 9. Добавить пользовательскую БД в WordPress
- 10. Добавить пользовательскую функцию в WooCommerce
- 11. Добавить пользовательскую кнопку в install4j
- 12. Добавить пользовательскую функцию в кукольный
- 13. UDDI добавить пользовательскую категорию
- 14. Добавить пользовательскую задержку распознавателя
- 15. Rails добавить пользовательскую загрузку
- 16. Добавить пользовательскую кнопку подписи
- 17. OpenSIPS добавить пользовательскую ошибку
- 18. Как добавить пользовательскую ошибку?
- 19. MapKit: Добавить пользовательскую выноску
- 20. Как добавить пользовательскую клавиатуру
- 21. Добавить пользовательскую кнопку в подкласс UINavigationController
- 22. Добавить пользовательскую функцию setInterval в JQuery
- 23. Добавить дополнительную работу в SaveChangesAsync
- 24. Добавить пользовательскую страницу PHP с phpBB3?
- 25. QBSDK Добавить работу клиента
- 26. Добавить пользовательскую кнопку в TinyMCE в WordPress
- 27. Добавить поля в пользовательскую модель в Devise
- 28. Добавить вложение в пользовательскую форму в Orchard
- 29. Django admin добавить пользовательскую кнопку
- 30. Как добавить пользовательскую привязку Sling?
спасибо Даниилу. Как я могу получить команду исполнителя? Кастинг в ProcessEngineImpl, а затем getConfiguration(). GetCommandExecutor? Или есть лучший (не кастинг) способ? –
В настоящее время нет. Мы могли бы подумать о предоставлении метода службы управления. Что-то вроде managementService.executeCommand (cmd) – meyerdan
У вас есть рабочий пример? Я написал Spike с двумя классами выше, но получаю NPE внутри JobEntity, когда я делаю managementService.executeJob(). Кажется, что работа не может выполняться без выполнения ... Мой тестовый класс: https://gist.github.com/jangalinski/6497803 –