【问题标题】:Is BPMN 2.0 Turing complete?BPMN 2.0 图灵完备吗?
【发布时间】:2016-04-14 20:16:02
【问题描述】:

我正在使用 BPMN 2.0 开始一个新项目。图灵语言是完整的吗? 乍一看,我会说它不是,但我发现一些讨论(例如,https://groups.google.com/forum/#!topic/vertx/Q1fql6BxYpg)提到它不是。但是,我不确定这些说法的正确性。

我提出这个问题的主要动机之一是 支持 BPMN 2.0 的工作流引擎允许包含脚本活动(例如,使用像 Groovy 这样的图灵完备语言)。我想知道这样做的唯一目标是允许流程工程师实现业务流程的简单定制,还是脚本语言也应该涵盖 BPMN 2.0 的表达性问题?

【问题讨论】:

  • It is not and never will be compilable (= turing completeness) Compilable != 图灵完成。那个来源似乎很混乱。 Compilable 本身未定义为一个术语。图灵完备意味着你可以使用 BPM 来指定一个图灵机(模拟器),看起来就是这样。
  • 不确定这是否是一个错字,因为在该行下面它说:“如果你在 BPMN 2.0 中设计一个流程,你总是需要一些 IT 人员/程序员来注释技术细节。需要注释在某种程度上是由非图灵完备性引起的。这与问题密切相关,即一个 BPMN 操作可以有多种解释(这就是为什么 BPMN 2.0 不是图灵完备的原因)。”

标签: bpmn turing-complete


【解决方案1】:

BPMN 有循环和条件吗?可能是因为业务流程需要它。然后就是图灵完备了。

脚本任务似乎是必要的,因为 BPMN 是一种糟糕的通用编程语言。它是为特定目的而制作的。

也用于重用现有库和代码结束外部副作用(发送邮件等)。

【讨论】:

  • 确实是一种糟糕的通用编程语言。我的问题是要区分“你不能”和“你不应该”。您似乎暗示 BPMN 引擎支持脚本语言的主要原因是清晰度?我只是想了解我是否遗漏了其他东西。
  • 清晰、重用现有库和代码、外部副作用(发送邮件等)。我应该马上说的。
  • 感谢您的回答。它澄清了我的问题。我找到了一个讨论的链接,其中提到 BPMN 不是图灵完备的。请查看我的问题的更新,如果您还有其他 cmets,请告诉我。他们很感激。
  • 只是为了澄清:如果一种语言可以模拟任何图灵机,那么它就是图灵完备的,这与循环没有直接关系。定义一种只有终止循环的语言很容易。
  • 据我记忆,事先知道迭代次数的静态循环是不够的。
猜你喜欢
  • 2014-12-26
  • 2015-08-23
  • 2011-05-22
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
相关资源
最近更新 更多