Six*_*Bit 26 architecture workflow business-process-management
我的客户正在寻找业务流程管理(BPM)解决方案.他们需要的是简单的文档路由和批准系统.实施BPM系统的驱动因素是什么?开发人员建议实施BPM解决方案与工作流工具或自定义开发的门槛是多少?
jBPM什么时候适合?内置于应用程序中的状态机何时适合?应该存在哪些问题,确定您需要使用类似于jBPM的解决方案?
我正在寻找一些现实世界的例子"我们试图自己构建解决方案,但最终因为_而使用AquaLogic/jBPM/Lombardi ".请填写空白.
Yur*_*rev 26
BPM酸测试(来自Michael Havey的Essential Business Process Modeling,由O'Reilly出版).
... BPM仅适用于具有基本状态或过程感的应用程序 - 即面向过程的应用程序.如果应用程序以合法的流程为导向,则应用程序通过BPM酸测试.例如,旅行社申请通过了测试,因为它最好根据行程的状态来理解,并且始终根据行程的距离来定义.面向过程的应用程序的其他典型特征包括:
- 长期运行 -
从开始到结束,该过程跨越数小时,数天,数周,数月或更长时间.
- 坚持国家 -
因为该过程是长期存在的,所以它的状态被持久化到数据库,因此它比托管它的服务器更长
- 突发,大部分时间都在睡觉 -
该过程大部分时间都处于睡眠状态,等待下一个触发事件发生,此时它会唤醒并执行一系列活动.
- 系统或人类通信的编排 -
该过程负责管理和协调各种系统或人类行为者的通信.
...例如,在一台自动柜员机中,它可以让用户查询他们的账户余额,提取现金,存款支票和现金,并支付账单 - 任何流程意识都是短暂而不必要的; ATM是在线交易处理器,而不是面向过程的应用程序.
ora*_*ips 22
我写了一个工作流引擎,因为我的雇主希望拥有IP,模仿jBPM.现在你使用这样一个工具而不是创建自己的有限状态机的原因是,在不改变持久性和支持工作流程边缘情况的情况下适应变化,正如我将解释的那样.
典型的,或者更好地称之为"天真",有限状态机实现具有一组数据库表,这些表紧密耦合到所管理的数据及其流过的过程.可能有一种方法可以保留过去的版本并跟踪谁在过程中采取了什么操作.这会遇到问题,数据和流程结构发生变化.然后需要改变那些紧密耦合的表以反映新结构,并且可能不会与旧的结构向后兼容.
工作流引擎以两种方式克服了这一挑战,通过使用序列化来表示数据和流程,以及抽象集成点,特别是安全性.序列化方面意味着数据和过程可以在系统中一起移动.这允许相同类型的数据实例遵循完全不同的过程,直到过程可以在运行时改变,例如通过添加新状态.这一切都不需要改变底层存储.
集成点是将算法注入流程并与身份验证存储(即必须采取操作的用户)绑定的方法.注入的算法可能包括确定状态是否完成,而身份验证存储示例是LDAP.
现在权衡难以搜索.例如,由于数据是序列化的,因此通常无法查询历史信息 - 除了检索记录,反序列化和使用代码进行分析.
工作流工具的另一个方面是嵌入其设计和功能的体验,您可能不会考虑自己滚动,并且可能会在您需要时感到后悔.我想到的两种情况是定时任务和并行执行路径.
定时任务在经过一定时间后为数据分配角色.例如,说新闻稿是提交并提交批准,然后坐了一个星期没有审查.你可能希望你的系统做的是识别那些挥之不去的文件并吸引相关各方的注意力.
根据我的经验(内容管理系统),并行执行路径并不常见,但仍然是经常出现的情况.这是一种想法,即一个给定的数据被发送到两个不同的审查或处理路径,只是稍后重新组合.这类问题需要有用的合并算法和同时表示数据的能力.在事实之后将其编织成一个朴素的解决方案比看起来要复杂得多,特别是如果你想跟踪历史数据.
如果您的系统不太可能改变,那么滚动您自己的系统可能是一个更容易的解决方案,特别是如果更改可能会破坏旧信息 但是,如果您怀疑自己需要这种类型的耐久性,或者会遇到一些不常见但很棘手的情况,那么工作流工具可以提供更多的灵活性和保险,您不会将自己描绘成数据和业务流程的角落更改.
也许问一些问题可能有所帮助.
流程会改变吗?过程的较新版本是否会继续存在?是否应该测量过程(和每个步骤)的运行时间?
它是关于业务流程(编排多个资源的状态)还是资源生命周期(仅限于单个文档/资源的状态)?...
对不起,如果这不是一个答案.