BPM引擎与BPM引擎服务器

时间:2015-04-29 12:42:18

标签: bpm bpmn

我正在研究工作流程概念,特别是BPMN标准。而且我最感兴趣的是有关该主题的可用软件。

我已经研究过像Activiti和jBPM这样的软件,它们都是用Java实现的。尽管如此,我正在寻找其他的东西。即使这样的软件自称BPM Engine,我宁愿将它们命名为BPM Engine Servers。它们是独立的服务器(使用基于Web的GUI),这使得将它们嵌入其他服务器非常困难。

现在我的问题是:作为BPM Engine的概念是否仅以给定数据执行给定BPM的方式,只有一步?没有任何GUI或直接用户交互(类似于库)?我应该搜索什么?它的名字是什么?我的期望是否有效?

[UPDATE]

我花了最后几个小时研究Activiti的用户指南。我仍然不确定我是否可以按照我想要的方式使用它!如果有人能证实,我将不胜感激。

我对类似控制台的应用感兴趣,我可以随时运行它,给它以前运行的进程(很可能被序列化为字符串)。引擎应该根据给定的历史构建流程。

重建过程后,我想通过告诉它发生了什么来向前迈进一步。然后它应该通知我下一个要执行和关闭的任务。

最后,我将在将其作为字符串获取后存储更新的进程(引擎应该以某种方式对其进行序列化,以便以后可以对其进行反序列化。)

我不希望引擎拥有自己的数据库或内存存储。我希望它一旦完成就完全关闭。我的意思是Engine,没有用户交互,没有存储访问权。

任何BPM引擎都能以这种方式运行吗?

2 个答案:

答案 0 :(得分:0)

您可能对http://php.net/manual/en/function.parse-url.php感兴趣。 这个开源BPM解决方案提供了一个可以独立使用的执行引擎。 与竞争对手一样,它还提供基于Web的应用程序形式的可选GUI:Bonita Portal。

答案 1 :(得分:0)

我认为您要执行的任务是大多数BPM引擎将流程的定义执行分开。因此,对于其中大多数人,您需要一个可以长期存储定义(通常是数据库)的地方,然后他们为您跟踪该定义的给定实例的状态。

如果您想要一个真正的无状态BPMN“解释”引擎,那么您的序列化数据不仅必须包括流程的当前状态,还必须包括流程定义。我敢肯定这是可以做到的,但是我不认为任何引擎都会采用这种方法,因为这样做会增加解决方案的复杂性,并解决了似乎没有多少人问的问题。

另外,它提出了一个问题:“假设我们现在有一个进程知道它在执行什么任务,如何该任务实际上是如何执行的?”在大多数解决方案中,我已经看到任务的执行与引擎在同一服务器上进行。在某些使用不同技术执行的情况下,“执行者”根本不了解流程,只是发出信号以表明“好了,这件事已经完成”,并且引擎会处理接下来发生的事情。您希望在某种序列化数据结构中拥有此数据,因此会出现一个问题:“如果我们拥有此无状态BPMN引擎,任务执行者是否必须更新序列化数据以指示任务的状态更改”

我认为BPMN规范还有其他要求,这会使您的方法非常困难,例如如何处理诸如中间消息事件之类的项目,这些项目要么等待特定时间,要么在继续前进之前发送一条消息。尽管所有这些都有可能解决,但无疑需要对现有方法进行大量重新设计。