从http://www.omg.org/spec/BPMN/2.0.2/PDF(第238页):
如果Process用作全局Process(可以从其他进程的Call Activities调用的可调用进程)并且有多个None Start Events,那么当flow从父进程转移到全局进程时,只有一个进程将触发全局流程的启动事件.可以扩展传递给Call Activity对象的Sequence Flow的targetRef属性,以识别适当的Start Event.
如何扩展targetRef属性?它不一定是有效的IDREF吗?也许他们的意思是应该使用自定义属性扩展sequenceFlow元素?
有这种延期的例子吗?现有的BPMN工具是否支持它?
这是我手工编辑的BPMN片段,用于说明问题:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL">
<process id="p1" name="Process 1" isExecutable="false" processType="Private">
<sequenceFlow id="startAflow" sourceRef="start" targetRef="A"/>
<sequenceFlow id="callActivityFlow" sourceRef="A" targetRef=" !? WHAT_GOES_HERE ?! "/>
<startEvent id="start" name="Start">
<outgoing>startAflow</outgoing>
</startEvent>
<task id="A">
<incoming>startAflow</incoming>
<outgoing>callActivityFlow</outgoing>
</task>
<callActivity id="call" calledElement="p2">
<incoming>callActivityFlow</incoming>
</task>
</process>
<process id="p2" name="Process 2" isExecutable="false" processType="Private">
<sequenceFlow id="start2Aflow" sourceRef="start1" targetRef="2A"/>
<sequenceFlow id="start2Bflow" sourceRef="start2" targetRef="2B"/>
<startEvent id="start1" name="Start">
<outgoing>start2Aflow</outgoing>
</startEvent>
<task id="2A">
<incoming>start2Aflow</incoming>
</task>
<startEvent id="start2" name="Start in middle …
Run Code Online (Sandbox Code Playgroud) 我想实现以下目标:使用rest-api运行一个camunda-7.3预打包发行版.有另一台服务器,比方说一个wildfly服务器,运行部署的vaadin应用程序.
从vaadin应用程序中,我想创建一个cmmn案例并在流程引擎中部署/启动它.然后从vaadin应用程序中我想显示某种任务列表来完成活动任务.
这里的问题是:这种设置是否可行?如果是这样,如何将新的cmmn案例部署到引擎?
我检查了camunda网页上的教程,但是每个教程只通过将另一个webapp部署到托管camunda引擎的服务器来部署cmmn案例(和bpmn进程).另一方面,camunda引用了清晰状态,可以使独立的camunda引擎运行.
有人对这个话题有什么看法吗?
我已经使用 Spring Boot 作为独立流程引擎构建了一个 Camunda BPM,它将等待来自其他 Web 应用程序的一些启动流程的请求
现在,我的同事在 BPMN 工具中设计了一些流程,我想我应该使用 REST API 将这些 BPMN 部署到独立流程引擎,我该怎么办?或其他允许将 BPMN 文件上传到独立流程引擎的解决方案?
有什么例子吗?
我们想在我们的应用程序中使用Camunda BPM,所以我们必须解决一些问题
谢谢
我正在尝试使用带有Camunda弹簧启动启动器的启动事件的嵌入式表格.
我的startEvent描述如下:
<bpmn:startEvent id="StartEvent_1" name="Rechnungseingang" camunda:formKey="embedded:app:forms/rechnungseingang.html">
<bpmn:outgoing>SequenceFlow_0dtfc1a</bpmn:outgoing>
</bpmn:startEvent>
Run Code Online (Sandbox Code Playgroud)
表单本身位于"src/main/webapp/forms/rechnungseingang.html"下,根据我的理解,这应该是正确的路径.
如果我在启动spring boot app后尝试启动该过程,则收到错误:"表单失败:上下文路径为空或未定义."
在浏览器的控制台,我可以看到一个请求访问http://本地主机:8080 /测试/ API /发动机/发动机/默认/流程定义/ Rechnungseingang:1:927f0aa4-e590-11e7-973d-e2cbd8678b9f/startForm与响应:
{"key":"embedded:app:forms/rechnungseingang.html","contextPath":null}
Run Code Online (Sandbox Code Playgroud)
显然,应用程序无法处理contextPath中的null值.我怎样才能在Spring Boot中为Camunda设置contextPath?在application.properties中,我已经尝试设置但server.context-path
没有效果.
我尝试为 Camunda Spring Boot 应用程序运行 JUnit 测试。我跟着测试:
JUnit 4
使用 JUnit 4 编写单元测试的风格,必须使用 ProcessEngineRule。通过此规则,流程引擎和服务可通过 getter 获得。与 ProcessEngineTestCase(见上文)一样,包含此规则将在类路径上查找默认配置文件。当使用相同的配置资源时,流程引擎静态缓存在多个单元测试上。
以下代码片段显示了使用 JUnit 4 测试风格和 ProcessEngineRule 用法的示例。
Run Code Online (Sandbox Code Playgroud)public class MyBusinessProcessTest { @Rule public ProcessEngineRule processEngineRule = new ProcessEngineRule(); @Test @Deployment public void ruleUsageExample() { RuntimeService runtimeService = processEngineRule.getRuntimeService(); runtimeService.startProcessInstanceByKey("ruleUsage"); TaskService taskService = processEngineRule.getTaskService(); Task task = taskService.createTaskQuery().singleResult(); assertEquals("My Task", task.getName()); taskService.complete(task.getId()); assertEquals(0, runtimeService.createProcessInstanceQuery().count()); } }
但我收到一个错误:
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [activiti.cfg.xml]; nested exception is java.io.FileNotFoundException: class path …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的 javascript 前端连接到我的 camunda 编排的 REST API,它被部署为 Spring Boot 应用程序的一部分。
被调用的网址是:
获取http://localhost:8081/oms-orchestrator-ms/api/engine/engine/default/history/process-instance
对于未经过身份验证的查询,我收到 401 错误,这是正常的
第一个问题:查询 Engine Rest API 以获取流程定义/实例和历史记录是否正确?
为了使其工作,我将 JSESSIONID cookie 作为标头添加到我的请求中,我如何使用基本身份验证来查询 Orchestrator api 而不是使用 cookie?
感谢您的帮助
我从 camunda BPM 开始,所以我使用https://start.camunda.com/创建 camunda spring boot 应用程序。我已经使用虚拟/虚拟凭据创建了管理员用户,我在那里设置了 kepy spring 安全选项作为开始。
当我启动应用程序时,每当我使用我的凭据时都会出现以下错误:
Login Failed :
CSRFPreventionFilter: Invalid HTTP Header Token
Run Code Online (Sandbox Code Playgroud)
我在 application.yml 中没有看到任何相关设置
例如,我可以为 \xe2\x80\x9cretry 时间周期 \xe2\x80\x9d 配置许多不同的间隔表达式吗
\n类似的东西: \xe2\x80\x9cR6/PT10S, R2/PT30M\xe2\x80\x9d - 每 10 秒 6 次,然后 30 分钟后 2 次
\n提前致谢,\nWladi
\n我读过 Camunda 的 Zeebe ( https://zeebe.io/ ) 是专门为微服务编排创建的。我知道在性能方面存在一些差异。
我的问题是“我可以使用 Camunda 实现与 Zeebe 相同的功能吗?”
我注意到 Camunda Enterprise 提供了许多免费版本或 Zeebe 中没有提供的功能,例如 BPMN 部署、以前工作流的历史记录。我想为微服务编排获得这些功能。我的猜测是,如果我使用 Zeebe,我将无法获得。
当我尝试在 Ubuntu 中运行 Camunda Modeler时,出现以下错误:
A JavaScript error occurred in the main process
Uncaught Exception:
Error: Failed to load /opt/camunda-modeler/resources/app.asar/node_modules/grpc/src/node/extension_binary/electron-v12.0-linux-x64-glibc/grpc_node.node. /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /tmp/.org.chromium.Chromium.hoRe47)
at process.func [as dlopen] (electron/js2c/asar_bundle.js:5:1846)
at Object.Module._extensions..node (internal/modules/cjs/loader.js:1138:18)
at Object.func [as .node] (electron/js2c/asar_bundle.js:5:2073)
at Module.load (internal/modules/cjs/loader.js:935:32)
at Module._load (internal/modules/cjs/loader.js:776:14)
at Function.f._load (electron/js2c/asar_bundle.js:5:12684)
at Module.require (internal/modules/cjs/loader.js:959:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/opt/camunda-modeler/resources/app.asar/node_modules/grpc/src/grpc_extension.js:32:13)
at Module._compile (internal/modules/cjs/loader.js:1078:30)
libva error: /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so init failed
Run Code Online (Sandbox Code Playgroud)
我的系统已更新,并且已安装 Google Chrome。
我怎样才能解决这个问题?