前面一瓶文章参考:
http://blog.sina.com.cn/s/blog_493a84550102v3e8.html
在前面一篇文章中已经从全新业务应用构建和端到端流程整合两个方面来探讨了BPM系统实施的方法和问题,也给出对于一个遗留的IT系统,由于相关的IT遗留系统已经成型,对于BPM实施来说更加重要的是端到端流程的整合和监控,解决端到端流程中的断点问题。这篇文章还是想从一个理想化的场景来谈下比较理想的BPM建设和实施的方法,即基于SOA参考架构思想,如何在企业内部构建松耦合和服务化的SOA架构,并基于SOA架构来构建上层的BPM业务应用。
分析和建模方式的改变
从这几天的思考来看,个人认为对于一个BPM项目的成功实施,最重要的就是分析和建模方法的转变,如果仍然是按照传统的方法已经将业务分解到多个业务系统,那么面对的又将是遗留系统流程整合问题,而不是直接通过BPM+SOA方式来构建业务系统的问题。
流程驱动IT是分析建模中的一个重要点,从流程开始自顶向下分析和分解,划分组件和识别服务;在从组件开始自底向上进行服务组合和编排,形成应用或流程。这是一个完整的闭环路线,没有前者我们就很难真正的保证我们最终划分的组件,识别的服务能够真正应用到后续的服务组合和编排上面。
不应该太早的进入到业务系统的概念,对于SOA整个咨询和建模方法论里面的,我们是弱化业务系统的概念,而是进一步强化了业务组件和技术组件的概念。这样做的目的主要是在SOA参考架构里面原有的业务系统已经变成一个弱边界,业务系统仅仅是多个组件的灵活组合或组装;其次当我们以业务系统出发进行考虑的时候,我们思维里面仍然是纵向架构模式,但是当我们以组件,服务和流程角度来考虑的时候,思维里面是一种横向分层架构模式。对于横向架构模式本身重要的目的就是要打破传统业务系统纵向的强划分。
上面谈的是BPM实施中相当关键的一点,把这点想清楚了就清楚了BPM流程建模的真正意义。在流程建模过程中我们是按照流程驱动的思路在分解流程,在规划流程应该涉及到的流程环节和活动节点,在设计每个流程节点应该业务自动化和人工化处理的事情,在考虑相关的流程节点是否应该有前台的展现和交互界面,表单所涉及到的数据对象结构;这块想通了我们才会进一步考虑这些需要的数据或业务规则逻辑处理能力究竟应该由下层的哪些业务组件或技术组件来提供这些服务。
上面这句话如何理解?即就业务组件或技术组件本身来说还是按业务域,数据或技术域分开的,底层是组件化和服务化的,但是这些组件本身更偏服务能力提供,这些组件并不关系前端对应了什么流程,应该有什么样的人机界面交互,这些组件的职责相当简单,就是提供业务或技术服务能力而已。但是在组件或服务的上层,我们最终涉及完成的前端或业务流程流转所需要的界面却是不分业务组件或系统的,其本身就是流程化和一体化的,这些前端界面,交互和展现不属于任何一个业务系统,而应该属于BPM系统。
这就是一个理想化的BPM构建的方法和思路,把这个思路想明白后做过传统IT系统开发的就比较容易理解为啥BPM系统实施如此困难,为何BPM系统实施看到的很多都是单纯的HWF人工工作流引擎的实施。这个的本质就是分析和建模思路没有转变,没有从传统围绕业务系统为核心转换为横向的围绕组件和服务为中心来思考。
BPM构建和实施层面
当前各个国际大厂商的BPM工具和产品套件已经相当成熟,但是在这里要说明的是BPM软件产品虽然可以灵活的通过配置和可视化建模设计和方式来构建业务系统前端流程,但是其配置的繁琐和复杂程度往往超过了直接写代码的模式。也就是说很多时候可配置的方法虽然开似很美好,能够灵活的应对业务的变化,但是很多时候往往开发配置效率是降低的,同时对于BPM本身新设计完成的流程仍然涉及到需重新发布的过程,也远远无法达到我们期望的零部署模式。
一个BPM建模和执行工具平台,更多的是从服务层开始流程整合,而不是从遗留系统的界面层。如果已经有成熟的业务系统和前端功能界面,那么实际问题仅仅是两个系统的两个功能间的业务或数据交互问题,这类问题是不需要用BPM工具来解决的,直接用到ESB服务总线这层就足够了。
对于BPM平台一定要注意到其擅长的并不是单个业务系统内部的功能构建,如果一个业务系统本身不涉及到外部交互,仅仅涉及到内部功能或数据流转,我们其实强烈不推荐采用BPM产品和建模方法,能够有人工工作流引擎就足够了。一个稍微复杂点的业务如果全部用BPM可视化建模和配置来实现出来,超过几十个节点是常事。这种BPM建模文件文件维护的难度反而不如逻辑清晰的源代码。不要把BPM产品理解为快速开发平台,虽然很多BPM产品想朝这个方向走,但是确实不是BPM擅长的事情。
而真正BPM产品最擅长的还是在跨系统的业务流程场景出现的时候,这种业务场景显然放在任何一个已有的业务系统都不合适,但是这种端到端流程本身在业务上又需要统一管理和管控。在这种场景下是最需要BPM的能力,即前端交互和流程流转统一规划和设计,原有的业务系统仅仅为上层提供数据和业务服务能力。
大家可以考虑下,如何我们要构建一个企业电商的客户自服务平台,这个自服务平台需要能够方便客户实现对从订单到交互的全流程跟踪和管理。这种平台往往本身并不产生大量的基础数据和存储逻辑,而是需要大量的调用或系统企业内部已有的CRM系统,ERP系统,PDM系统,MDM系统的能力。对于这些遗留系统能够提供的能力根据客户需求和流程的需要进行组合和编排。同时基于这些能力,重新设计端到端的前端界面交互和流程流转,这就是一个BPM相当理想的实施环境。从这个层面来说企业内部常见的风险管控系统,合同端到端跟踪系统,财务共享服务平台等都是比较适合BPM的应用场景。
青春就应该这样绽放 游戏测试:三国时期谁是你最好的兄弟!! 你不得不信的星座秘密