我的客户正在寻找业务流程管理(BPM)解决方案。他们需要的是简单的文档路由和批准系统。实施BPM系统的驱动因素是什么?开发人员建议实施BPM解决方案与工作流工具或自定义开发的门槛是多少?
jBPM什么时候适合?内置于应用程序中的状态机何时适合?应该存在哪些问题,确定您需要使用类似于jBPM的解决方案?
我正在寻找一些现实世界的例子,“我们自己试图建立解决方案,但最终因为 _ 而使用AquaLogic / jBPM / Lombardi”。请填写空白。
答案 0 :(得分:26)
BPM酸测试(来自Michael Havey的Essential Business Process Modeling,由O'Reilly出版)。
... BPM仅适用于 具有本质意义的应用程序 国家或过程 - 即 应用程序 注重过程。一个应用程序 如果是的话,通过BPM酸测试 合法的过程导向。该 旅行社申请 例如,通过测试,因为它 在状态方面最好理解 行程和定义 时间距离行程有多远 得到。其他典型特征 面向过程的应用程序 包括以下内容:
- 长跑 -
从头到尾,这个过程 跨越小时,天,周,月或 更多。
- 坚持国家 -
因为这个过程是长寿的,所以 state被持久化到数据库中 它比托管它的服务器长得多
- Bursty,大部分时间都在睡觉 -
这个过程花费了大部分时间 睡着了,等待下一个 触发事件发生,在此处 指出它醒来并执行一个 一连串的活动。
- 系统或人类通讯的编排 -
该过程负责 管理和协调 各种系统的通信或 人类演员。
...例如,在自动化中 柜员机,让用户查询 他们的帐户余额,提取现金, 存款支票和现金,并支付账单 - 任何过程感都是短暂而不必要的; ATM是在线的 交易处理器,而不是 面向过程的应用程序。
答案 1 :(得分:22)
我写了一个工作流引擎,因为我的雇主希望拥有IP,模仿jBPM。现在你使用这样一个工具而不是创建自己的有限状态机的原因是,在不改变持久性和支持工作流程边缘情况的情况下适应变化,正如我将解释的那样。
典型的,或者更好地称之为“天真”,有限状态机实现具有一组数据库表,这些数据库表与管理的数据及其流过的流程紧密耦合。可能有一种方法可以保留过去的版本并跟踪谁在过程中采取了什么操作。这会遇到问题,数据和流程结构发生变化。然后需要改变那些紧密耦合的表以反映新结构,并且可能不会与旧的结构向后兼容。
工作流引擎以两种方式克服了这一挑战:使用序列化来表示数据和流程,以及抽象集成点,特别是安全性。序列化方面意味着数据和过程可以在系统中一起移动。这允许相同类型的数据实例遵循完全不同的过程,直到过程可以在运行时改变,例如通过添加新状态。这一切都不需要改变底层存储。
集成点是将算法注入流程并与身份验证存储(即必须采取行动的用户)绑定的方法。注入的算法可能包括确定状态是否完成,而身份验证存储示例是LDAP。
现在权衡难以搜索。例如,由于数据是序列化的,因此通常无法查询历史信息 - 除了检索记录,反序列化和使用代码进行分析。
工作流工具的另一个方面是嵌入其设计和功能的体验,您可能不会考虑自己滚动,并且在您需要时可能会后悔。我想到的两种情况是定时任务和并行执行路径。
定时任务是在经过一定时间后为数据分配角色。例如,说新闻稿是提交并提交批准,然后坐了一个星期没有审查。你可能希望你的系统做的是识别那些挥之不去的文件并吸引相关各方的注意力。
并行执行路径在我的经验(内容管理系统)中并不常见,但仍然是经常出现的情况。这是一种想法,即一个给定的数据被发送到两个不同的审查或处理路径,只是稍后重新组合。这类问题需要有用的合并算法和同时表示数据的能力。在事实之后将其编织成一个朴素的解决方案比看起来要复杂得多,特别是如果你想跟踪历史数据。
如果您的系统不太可能改变,那么滚动您自己的系统可能是一个更容易的解决方案,特别是如果更改可能会破坏旧信息。但是,如果您怀疑自己需要这种类型的耐久性,或者会遇到一些不常见但很棘手的情况,那么工作流工具可以提供更多的灵活性和保险,您不会将自己描绘成数据和业务流程的角落更改。
答案 2 :(得分:6)
也许问一些问题可能有所帮助。
流程会改变吗? 过程的较新版本是否会继续存在? 是否应该测量过程(和每个步骤)的运行时间?
是关于业务流程(编排多个资源的状态)还是资源生命周期(仅限于单个文档/资源的状态)? ...
很抱歉,如果答案不是很多。
答案 3 :(得分:3)
我会仔细研究推动您努力的业务需求(即“业务案例”)。根据我的理解,BPM /工作流可能包含以下一个或多个目标:
<强> 1。自动化行动
通常需要通过自动化任务来替换人员,例如创建文档,存档信息,通知用户等。
<强> 2。跟踪每个流程
公司需要在存在大量流程时建立跟踪,并且业务用户会忘记跟踪这些流程,因为通常在办公室文档,电子邮件中运行它们。每个外部状态请求(例如来自客户端)都会变成调查。
第3。建立控制
对于管理人员而言,获取流程的高级视图并进行统计学研究通常很重要:查看是否保留KPI,任何滞后,异常等
<强> 4。管理流程内文档交换和协作
BPM通常用作文档交换工具,因为它们通常可以实现从电子邮件和语言交流切换到BPM中的可跟踪交换
<强> 5。自动化企业系统之间的数据交换
这是一个纯粹的集成案例,并且在已经(或通过)各种系统执行了许多操作的情况下通常需要这种情况,并且需要在它们之间自动化信息交换。
现在,全功能的即用型BPM适用于2,3和有时4。 jBPM和其他工作流引擎适用于1和3,但有一个重要的警告 - 它们需要复杂的配置/开发。
基于SOA的流程编排引擎(有时也称为BPM!)适用于(5)和(3)。
请随意添加到列表中并争辩! 我已将此发布为我的博文,并在此处详细阐述:http://processmate.net/do-you-need-a-bpm-or-a-workflow/
答案 4 :(得分:1)
最终,处理业务相关信息处理的所有业务系统都是BPM或工作流系统。任何业务的信息处理都可以根据工作流程或“业务流程”来描述,涉及角色和活动。
这些业务活动通常用Java,C#或其他编程语言描述的事实基本上只是自动化的结果,没有足够成熟的技术来处理和使用自动代理描述业务流程。
重点是增长,上市时间等等,计算机化是在没有充分考虑长期维护和灵活性的情况下进行的。现在99%的代码不应该是。
相比之下,实时控制系统,视频游戏,高性能计算,预测,商业智能和数学分析都是不适合图形工作流程描述的问题的例子。这些应由计算机完成并由计算机专家维护。
业务流程应由业务运营专家规定,描述和阅读。随着世界经济不再强调“增长”,这种技术可以使这种(工作流程系统)变得更好,并得到更广泛的接受,因此灵活性的提高将越来越被认可。
答案 5 :(得分:1)