当前位置: 首页 > 面试题库 >

工作流引擎的用例

墨寂弦
2023-03-14
问题内容

我想知道您(SO读者)使用Workflow Engines解决的特定问题,以及如果您不自己动手使用的库/框架。我还想知道何时工作流引擎不是最佳选择,以及您是否/如何选择更简单的东西,例如使用状态机的TaskList / WorkList / Task-Management类型应用程序。

问题:

  • 您使用工作流引擎解决了哪些问题?
  • 您使用了哪些库/框架?
  • 什么时候像系统这样简单的状态机/任务管理就足够了?
  • 奖励:您如何/如何区分了任务管理和工作流引擎?

问题答案:

我也有偏见,因为我是StonePath的主要作者。

我已经为美国国务院,日内瓦人道主义排雷中心,多家财富500强客户以及最近的华盛顿特区公立学校系统开发了工作流程应用程序。每当我看到一个“工作流引擎”试图成为业务流程的主要参考时,我都会看到一个组织在努力使用该工具。这可能是由于以下事实:这些解决方案一直都是由供应商/产品驱动的,然后最终由一个由“顾问”组成的战术团队不断为该应用程序供食…但是,因此,当我听到这些消息时,我往往会做出负面反应基于流程的工具的好处,它们承诺“将工作流定义集中在一个地方并使其可重复”。

就是说,我非常喜欢Ruote-我已经关注该项目一段时间了,如果我需要那种解决方案,它将成为我愿意尝试的下一个工具。StonePath的目的与ruote完全不同-Ruote通常对Ruby有用,而StonePath则针对用Ruby编写的Web框架Rails。Ruote涉及长期的业务流程及其相关定义,而StonePath则涉及管理基于状态的工作流和任务。坦率地说,我认为与外部查看的区别可能很微妙-很多时候可以用任何一种方式表示相同类型的业务流程-但是基于状态和任务的模型往往会映射到我的思维模型。

让我描述基于状态的工作流的重点。简而言之,想象一个工作流围绕着诸如抵押贷款或护照更新之类的处理。当文档在“办公室周围”移动时,它会从一个州到另一个州。想象一下,如果您对文档负责,您的老板每隔几个小时问您一次状态更新,并想要一个简短的答案…您会说诸如“它正在数据输入中”之类的内容……“我们正在检查申请人的凭据” …“我们正在等待质量审查” …“我们已经完成” …等等。这些是基于状态的工作流程中的状态。我们通过过渡(例如“批准”,“应用”,反冲”,“否定”等在状态之间移动),这些往往是动作动词。

基于状态/任务的工作流的下一部分是任务的创建。任务是一个工作单元,通常具有截止日期和处理说明,该任务将工作项(例如,贷款申请或护照续签)连接到用户的“收件箱”中。任务可以彼此并行或顺序发生,并且我们可以在进入状态时自动创建任务,在人们意识到需要完成工作时手动创建任务,并要求任务完成后才能进入新状态。所有这些行为都是可选的,并且是工作流定义的一部分。

兔子洞的作用远不止于此,我为《实用程序员》杂志《 PragPub》第4期撰写了一篇有关它的文章。请查看上方的reo链接,以获取该文章的更新的PDF。

在最近几个月与StonePath的合作中,我发现基于状态的模型可以很好地映射到宁静的Web架构-特别是,任务和状态转换可以很好地映射为嵌套资源。希望将来能看到我写的关于这个主题的文章。



 类似资料:
  • 我正在研究一个需要工作流/流程引擎的解决方案。我的工作流包含一些基于Java的进程(类)和一些Linux Shell脚本。流程不会是静态的,每个流程的执行取决于前一个流程的状态/结果,将有多条路径,路径将由前一个流程的状态确定。 我尝试查看jBPM,但没有找到合适的支持来调用shell脚本。请根据我的要求为我推荐一个合适的替代方案。 非常感谢。

  • 问题内容: 编写新的工作流引擎还是使用现有的BPM引擎更好吗:jBPM 5,Activiti 5? 我的应用程序是基于Web的应用程序,性能非常重要。我的疑问是,与编写简单的工作流引擎相比,使用jBPM / Activiti是否会增加性能开销。 如果我采用自我实现,我会错过工作流程的可视化。为了性能,可以进行交易。 问题答案: 这确实取决于您的要求。首先,查看您是否真的需要工作流引擎(此资源或其他

  • 问题内容: 目前,我们正在评估BPM引擎,我非常感谢社区的投入。我正在做我自己的尽职调查,但也想听听基于实施案例的建议。 我的主要评估标准如下 开源和OEM友好许可证 生产装置(成功的故事很有帮助) 提供商业支持 开放标准支持-BPMN 根据输入动态创建/组装工作流程 可嵌入的 目前,我正在评估Activiti和JBPM。Bonita开放式BPM似乎也不错,但从未使用过。你们在Bonita上有任何

  • Cocos Creator 的引擎部分包括 JavaScript、Cocos2d-x-lite 和 adapter 三个部分。全部都在 GitHub 上开源。地址在: JavaScript 引擎:https://github.com/cocos-creator/engine Cocos2d-x-lite 引擎:https://github.com/cocos-creator/cocos2d-x-l

  • Cocos Creator 3D 的引擎部分包括 JavaScript、Cocos2d-x-lite 和 adapter 三个部分(暂不支持 adapter 引擎定制)。全部都在 github 上开源。地址在: JavaScript 引擎:https://github.com/cocos-creator/engine Cocos2d-x-lite 引擎:https://github.com/coc

  • 我很困惑。我正在为我的公司开发一个基于grails的内部工具。此工具中的一个组件是简单的问题跟踪程序(帮助台功能)。我有一些领域对象,比如Problem、Question和NewFeature。每个域类都有不同的工作流。 我最初的想法是在域对象中滚动我自己的状态机功能。然后我在google上搜索状态机引擎和工作流引擎。现在我迷路了。 我想听听其他开发者是如何解决这个问题的。你使用Drools、Jb