我正在从事Camunda BPM项目,我的目标是创建一个Java项目(.jar或.war),其中包含多个Delegates
,可从各个过程中调用。
我最终想要的是让用户能够使用建模者调用由上载项目提供的委托来创建流程。
为了实现这一点,我认为我可能需要以某种方式将项目连接到camunda引擎,但是我不确定如何,我尝试将项目上传到modules
文件夹中并添加一个{ {1}}文件失败。
这是我遇到的错误:
无法实例化流程定义Test__1:1:e038081e-7335-11e9-81d2-acd1b8773d2f:ENGINE-09008实例化类'com.foo.sharedModule.MyDelegate'时发生异常:ENGINE-09017无法加载类'com.foo.sharedModule .MyDelegate':com.foo.sharedModule.MyDelegate,来自[Service Module Loader中的模块“ deployment.camunda-webapp-ee-jboss-7.10.5-ee.war”]
有人可以帮助我找出正确的方法吗? 谢谢。
答案 0 :(得分:0)
它们允许您扩展建模器,以便用户可以选择预定义的服务组件。您将只需要在您的流程应用程序中包含jar。
{
"name": "Mail Task",
"id": "com.camunda.example.MailTask",
"appliesTo": [
"bpmn:ServiceTask"
],
"properties": [
{
"label": "Implementation Type",
"type": "String",
"value": "com.mycompany.MailTaskImpl",
"editable": false,
"binding": {
"type": "property",
"name": "camunda:javaDelegate"
}
},
...
答案 1 :(得分:0)
假设您使用的是Wildfly或JBoss,并且似乎提到模块,那么您就走对了。
如果希望Java类在应用程序服务器中通用,包括部署到的任何新应用程序(* .war或* .ear文件)(可能与Camunda流程,决策等一起使用)或Camunda通过REST API上传的部署中,您需要将其打包为JAR文件并将其添加为模块。您将需要确保添加适当的模块依赖性。
鉴于在这方面与Wildfly / JBoss相关的增加的复杂性,它可能有助于简单地指出,如果您使用的是Tomcat,则需要做的就是将这些类打包到一个JAR文件中并将它们放入Tomcat的共享的lib目录。额外的复杂性仅仅是Wildfly / JBoss设计的结果,而不是与Camunda本身有关的任何事情。然后,您可以在Camunda实例中的任何流程模型,决策定义(DMN)或案例中使用它们。
希望对您有帮助!
答案 2 :(得分:0)
您所指的是camunda规范中的全局任务,尚不支持该任务。 (https://forum.camunda.org/t/how-is-a-global-task-defined/16455)
解决方案将是只有一个任务的子流程,可以位于另一个项目中。子流程可以使用其流程ID进行全局调用。为此,您必须使用通话活动。 https://docs.camunda.org/manual/7.9/reference/bpmn20/subprocesses/call-activity/