首先,我是新来的camunda .. 我在camunda中创建了一个自定义任务列表。 我可以声明/取消任务等,这是有效的。
现在我想完成某项任务,但是当我打电话时:
public void completeSelectedTask() {
taskService.complete(selectedTask.getId());
}
似乎camunda想要进入此上下文中的下一步,而不是已部署BPMN架构的上下文以及执行下一步所需部署的所有内容。所以我得到“classNotFound”异常,因为我在customTasklist.war中没有与camundaProcessor.war中相同的类..
我怎么能告诉camunda在正确的背景下进入下一步?!或者我是在处理这个错误,我应该总是在camundaProccessor上下文中完成任务吗?
更多信息:使用表单完成userTask。我目前添加到customTasklist.war的表单而不是camundaProcessor.war(所以开箱即用的任务列表不再工作,因为他正在寻找camundaProcessor.war中的表单)
答案 0 :(得分:0)
为了解释,我假设存在上下文A和上下文B.例如,这些可以是针对同一数据库运行进程引擎的集群节点。我们假设您在上下文A中完成了任务,但是处理下一个任务的资源(例如服务任务的JavaDelegate
实现)仅在上下文B中可用。
解决草图问题的两种方法都是有效的。您可以确保在上下文B中完成任务。或者,在上下文A中完成任务后,确保在上下文B中继续执行流程。
要实施第二种解决方案,您可以使用asynchronous continuations。特别是,在BPMN XML中的userTask
元素上,您可以设置属性camunda:asyncAfter="true"
。当任务在上下文A中完成时,流程执行将继续,直到用户任务的活动实例完成为止。流程引擎不会立即在后续活动中继续执行,而是在数据库中保留作业。该作业表示继续执行流程的任务。它最终被job executor component拾取并执行。假设作业执行程序在上下文B中运行,它将能够正确地解析资源。