gpt4 book ai didi

java - 将自定义作业添加到作业执行器

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:20:37 41 4
gpt4 key购买 nike

是否可以(如果可以:如何)将自定义作业添加到 camunda BPM 中的作业执行器?我的需求是通过Timer或者Loop来执行一个流程相关的Service。我不想直接在 BPMN 中对此进行建模,因为它实际上并不是流程的一部分。我可以启动仅包含一个异步服务任务的其他任意进程来实现此目的,但我更愿意直接向作业队列添加一个包含 SOAP/REST/RMI 调用的方法调用,而无需额外的努力。有人试过这个吗?

最佳答案

这是一个高级问题。可以使用内部 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 委托(delegate)(您也可以使用自定义命令)。

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。然后就可以在流程引擎的命令执行器上执行命令了。

编辑:要在独立引擎中对此进行测试,您必须将 CustomJobHandler 添加到 camunda.cfg.xml:

<property name="customJobHandlers">
<list>
<bean class="<FQN of CustomJobHandler>" />
</list>
</property>

关于java - 将自定义作业添加到作业执行器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18674917/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com