Workflow 使用Activiti运行自定义(非BPMN)流程定义

Workflow 使用Activiti运行自定义(非BPMN)流程定义,workflow,activiti,bpmn,Workflow,Activiti,Bpmn,我们正在评估Activiti作为一个流程引擎,以取代现有的国产工作流引擎。Activiti的功能给我们留下了深刻的印象,特别是与多租户和REST WS相关的功能 然而,采用Activiti的最大挑战之一(可能是阻碍因素)是——我们如何运行或迁移现有的工作流定义 正如我前面提到的,我们的工作流解决方案是自主开发的,不符合BPMN规范。有成千上万的模板。我们不能简单地要求客户使用Activiti重新定义他们的模板。这些定义以专有XML格式存储 从模板中的定制级别来看,将这些定义迁移到BPMN格式是非

我们正在评估Activiti作为一个流程引擎,以取代现有的国产工作流引擎。Activiti的功能给我们留下了深刻的印象,特别是与多租户和REST WS相关的功能

然而,采用Activiti的最大挑战之一(可能是阻碍因素)是——我们如何运行或迁移现有的工作流定义

正如我前面提到的,我们的工作流解决方案是自主开发的,不符合BPMN规范。有成千上万的模板。我们不能简单地要求客户使用Activiti重新定义他们的模板。这些定义以专有XML格式存储

从模板中的定制级别来看,将这些定义迁移到BPMN格式是非常困难的

那么,Activiti是否提供了任何钩子来运行这些自定义模板呢。或者,请分享您关于将模板从专有格式迁移到BPMN格式的想法

我想这种情况很常见,其他人也会面临同样的情况


我知道我对这个查询很含糊,但在这个阶段我没有可以讨论的具体问题。

一个选择是实现您自己的专有XML解析器和解析器处理程序。查看org.activiti.engine.impl.bpmn.parser.BpmnParse和org.activiti.engine.impl.bpmn.parser.handler.AbstractBpmnParseHandler及其子体


我们做得很好。

谢谢费斯米。通过专有的XML解析器和处理程序,我知道它们被用来解析自定义模板。请建议我的理解是否正确。我的主要困惑源于自定义构造到BPMN构造的映射。XML解析器读取每个XML元素并将其放入相应的处理程序(AbstractBpmnParseHandler)中。处理程序将元素转换为activiti节点。例如,StartEventParseHandler将StartEvent添加到流程定义中。这就是如何从自己的XML格式创建用于部署到数据库的流程定义的方法。