??xml version="1.0" encoding="utf-8" standalone="yes"?> 很多人对SOA的理解就是分层、模块化、面向对象。。。这U理解对不对后面再说。先看一些问题: 我今天看了一个开发团队的开发工E包l构Q部分类的命名及l织产生了如下印象: q也是我们U的SOApȝQ!Q!q最基本的模型设计、模块设计、分层设计都没做好,难怪年q重构、年q完成不可能完成的Q务!Q!我确信这U重构、这U不可能完成的Q务还会年q持l下去!Q! I竟什么是W合SOA风格的系l?先看看SOA宗师IBM的一文章: http://www.ibm.com/developerworks/cn/architecture/ar-soastyle/ 我来ȝ一下?/p> SOA能达C么目的: 1.实现业务与IT的一致性; 2. 创徏更灵zȝ反应更敏LIT基础设施Q?/p> 3. 化集成实玎ͼ SOA要怎么做? 别再说你的应用程序或烟囱遵@SOA的架构风|
]]>
Business Process ManagementQ?span lang="EN-US">BPMQ不是一个新概念Q甚至不是一个新名词。它是从相关的业务流E变革领域,如业务流E改q(BPIQ、业务流E重l(BPRQ、业务流E革C发展h的。流E管理技术也是从早期的工作流理?span lang="EN-US">EAI企业应用集成Q?span lang="EN-US">Enterprise Application IntegrationQ)、流E自动化、流E集成、流E徏模、流E优化等技术中发展h的?/p>
BPM理pȝ能够提供方便q速分析业务流E、商业数据的工具Q以便企业决定用最适和程引导商业目的的实现。也是BPM必须能用一U通用的语a传达l商业伙伴对于特D业务流E的清晰明确的描q?span lang="EN-US">
BPM的定义是Q?span lang="EN-US">BPM是一个描qCl服务和工具的一般名词,q些服务和工具ؓ昑ּ的流E管?span lang="EN-US">(如流E的分析、定义、执行、监视和理)提供支持?/p>
目前Q?span lang="EN-US">BPM斚w的研I主要集中在Q?span lang="EN-US">
?nbsp;理论基础Q?span lang="EN-US">BPM的体pR模型、定义语a的研IӞ
?nbsp;实现技术:BPM的仿真和评估Q流E的事务Ҏ;Web Service?span lang="EN-US">XML、组件技术等?span lang="EN-US">BPM中的应用
?nbsp;应用Q?span lang="EN-US">BPM的实施技术;在不同领域内的应用方法?/p>
BPM的生命周?nbsp;
从整体上?span lang="EN-US">BPM生命周期划分Z个阶D,分别是:业务程发掘Q?span lang="EN-US">Business Process DiscoveryQ、业务流E设计(Business Process DesignQ、业务流E执行(Business Process ExecutionQ、业务流E管理维?span lang="EN-US">(Business Process Administration)Q以及业务流E最优化Q?span lang="EN-US">Business Process OptimizationQ。对于这五个阶段Q各个厂商之间ƈ不存在过多的异议?/p>
1. 业务程发掘 BPM的未来趋?nbsp;
企业要全面应?span lang="EN-US">BPMQ首先面临的工作当然是要搞清楚知道企业现行流E的工作方式与工作状况,q是后箋所有工作的出发点和基石Q因此理应得到够的重视。其中,最为重要的是当前流E中的信息流(Message flow)、事件流(Event flow)以及控制?span lang="EN-US">(Control flow)。更为具体一点,企业需要了解哪些流E可以实施自动化Q哪些流E需要h工参与?各个程都是需要什么h来参与?需要多hQ相xE是在组l内部执行,q是在外部被执行Q风险如何评伎ͼ现有程的瓶颈可能位于哪个环节?诸如此类Q不一而。在q个阶段Q通常有两个方面的工作需要进行。第一个工作是q行程评估(BPAQ?span lang="EN-US">Business Process Assessment)Q一般的做法是聘请企业外部的N理公司或者行业专家进行,评估的范围可能涵盖策略与理目标与流E的q结。完成了程评估之后Q接下来是配合导入一些管理主题(譬如ISO质量理体系或六西格玛等Q,q行程再?span lang="EN-US">(BPRQ?span lang="EN-US">Business Process Reengineering)。然后,得到的信息和数据反馈到W二个阶Dc?span lang="EN-US">
2. 业务程设计
q个阶段是根据前期的工作Ҏ来进行流E的定位和设计。本阶段分ؓ四个步骤Q分别是建模(Modeling)、分?span lang="EN-US">(Analyzing)、模?span lang="EN-US"> (Simulation)和流E重?span lang="EN-US">(Redesigning)。如?span lang="EN-US">1所C,q四个步骤是一个反复的循环Q@环的目的是力求得到更准确、更有h值的业务程?span lang="EN-US">
首先是徏模,通常我们徏模所采用的工L?span lang="EN-US">Process DesignerQ进E设计器Q,一般来说它包括四个比较重要的部分:l构表格(Organization Chart)、流E图(Activity Diagram)、商业规则(Business RuleQ,以及电子H体(e-Form)设计工具Q电子窗体指的是信息昄的接口,一般而言企业可以把应用系l的数据与流E相关的数据Q通过电子H体来展玎ͼq样做有助于处理W三个阶D中人机互动的步骤,而呈现的方式则可以通过特定的工兯行快速的订制Q,
分析是从程定义的语意与理论上进行推论,仿真则可讑֮机率变量与行为假设让pȝ自动跑出期望值或变异差数据。市Z有些产品则仅提供自动执行(Automation)或手动逐步执行以观流E行为?span lang="EN-US">
需要注意的是,建模q不是孤立的Q在建模之后企业一定要q行程执行动作前的分析与仿真,以便验证设计出来的流E是否正ƈ且适用于本企业Q此外它q能提供初步设计的流E可能遇到的瓉信息Q以避免在业务流E执行后才发现相关问题进而导致重大的q营损失。与此同Ӟ如果分析和模拟出来的l果q不如人意Q可以多ơ反复和循环本阶D늚四个步骤Q直x意ؓ止。这样做的好处还在于Q面对外部巨大的竞争压力与种U商机,企业在进行经营和理中(非模拟状态)Q对于一些细微的程变化(Fine-grained process change)Q可以做出实时有效的反应Q以便于企业快速地q行重构程的工作?span lang="EN-US">
3. 业务程执行
l过多次的徏模、分析、仿真和定了企业的业务程之后Q接下来面的就是流E的执行?span lang="EN-US">
业务程的执行分Z个步骤,分别是部|ԌdeploymentQ、自动操作(automationQ和人机交互Q?span lang="EN-US">interactionQ这三个步骤q一个@环的关系Q而是由部|引动操作和人机交互两个步骤Q自动操作与人机交互q行q行?span lang="EN-US">
布v是将设计好的程推出上线Qƈ且让所有的参与者来执行。这里所说的参与者是泛指的,它可能是人,也可能是某些pȝ应用或者其他流E。对于这个步骤,企业的主要目的应该是以最的工作量达到运资?span lang="EN-US">(Computing Resource)与组lh员的优化和整合,最的工作量ƈ不意味着偷工减料或者有意地减少工作Q其目的是减企业资源占有,降低成本Q从而达到效益的最大化?span lang="EN-US">
在自动操作这一步骤中,负责控制执行的模块我们可UC为工作流引擎(Workflow Engine)或流E服务器(Process Server)。这个步骤具有一个重要的特点Q那是无需技术h员的亲自参与Q流E的使用者依然可以自行编辑和修改既有的商业逻辑。企业可以借助调度日程 (Scheduler) 来设定启动自动操作的旉和周期频率,另外有些厂商提供?span lang="EN-US">BPM解决Ҏq会提供规则引擎 (Rule Engine)来进行商业规则的判别与推理?span lang="EN-US">
通常情况下,q企业的所有流E都可以自动操作Q因?span lang="EN-US">BPMq应提供能够让h理自动程与h工流E之间的接口Q有的时候这U流E接口本w也是一个流E)。负责与Z动的接口被称为工作项目处理器 (Workitem Handler)。几q前工作目处理器大都比较简单,然而在实际工作中,׃U种原因Q企业往往需要的是U能订制、个性化Qƈ且能整合在不同系l的接口Q因此很多厂商纷UhZ更加W合用户需求的程入口(Process Portal)。应当说Q这是一个可喜的变化?span lang="EN-US">
4. 业务程理l护
当流E上U后Q伴随而来的自然是理l护的问题,q其中包括三个步骤的工作Q运行(operationQ、维护(maintainingQ和监测Q?span lang="EN-US">Activity monitoringQ。如?span lang="EN-US">1所C,q三个工作ƈ行进行,怺之间不存在递进或者@环的关系?span lang="EN-US">
前两个步骤相对简单,q里不再赘述Q我们重点关注一下流E的监测。由于在q营中,企业内外部各U状况不断出玎ͼ人员l织也会出现一些变更以及其他一些变化,业务程的用者或理者需要随时掌握流E的执行状态与q程Q因此他们就要求pȝ具备预警功能Q同时可以让他们讑֮程要追t的兛_Qƈ得到pȝd回报相关信息Q及时处理相关问题。另外,服务器的量与执行监控及程存储Q?span lang="EN-US">Process RepositoryQ的数据l护功能也相当重要?span lang="EN-US">
5. 业务程最佛_
q是所有五个阶D늚最后一步,也是业务程理pȝ生命周期q入下一个@环的“前夜”Q不是终l,而是开始。本阶段包括三个步骤:定Q?span lang="EN-US">MeasurementQ、报告(ReportingQ和改进Q?span lang="EN-US">ImprovementQ。三者呈逐步推进的关p,~Z不可?span lang="EN-US">
定能够向用者和理者提供流E的执行效率Q通过报告工具Q?span lang="EN-US">Reporting ToolQ,企业可以对自ql织行ؓ有充分的了解Qƈ之作ؓ持箋改善的依据,q样企业才有可能{划出改q与最佛_的策略;改进是个持箋性的zdQ不断反复,朝向最佛_q进?span lang="EN-US">
有专家指出,q个阶段跟商业智?span lang="EN-US">(BIQ?span lang="EN-US"> Business Intelligence)的技术与主题有异曲同工之处,不过我们应该看出Q它们之间的差异在于BPM可以自动记录和收集与程有关的数据,让企业主清楚哪些流E是在标准差内,哪些是在失控状态。同Ӟpȝ提供的报表都是用者自行定义或查询的,而且无需IT人员的参与?span lang="EN-US">
从整个生命周期中Q?span lang="EN-US">BPM的重点在Q?span lang="EN-US">
?nbsp;业务程的分?span lang="EN-US">(BPA)和设?span lang="EN-US">(BPD)Q?span lang="EN-US">
?nbsp;业务程的改q?span lang="EN-US">(BPI)和优?span lang="EN-US">(BPO)Q?span lang="EN-US">
?nbsp;业务程自动?span lang="EN-US">(BPA)Q?span lang="EN-US">
?nbsp;业务q程集成(BPI)Q?span lang="EN-US">
?nbsp;业务q程重组(BPR)—?/span>革命性变_
?nbsp;业务q程外包(BPO)—?/span>聚焦核心业务?/p>
我们期望最后ؓ客户辑ֈ以下5点:
囑Ş化工?span lang="EN-US">—?/span>设计来分析,模块和定义流E。这些工具专为需要徏立流E流和设计新的业务分析人员设计。这些流然后为将来执行而设定?nbsp;
q行旉执行引擎—?/span>q是一个根本的l计机器执行定义程。随着程的执行Q引擎可能要求自动服务或d必须人力完成。服务可能由E序提供–遗留和新的服?span lang="EN-US">–或通过企业可能是交易伙伴或分包商。运行时间环境维持每个流E当时的状态?nbsp;
机敏工具—?/span>q个功能涉及程调整Q工作单理和优先工作?nbsp;
监控和管理流的工?span lang="EN-US">—?/span>监控可能包括程表现Q完成程度或呼出条gQ流E管理可能包括流E终止,扑救程Q工作^衡和重新{?nbsp;
完成后分析工?span lang="EN-US">—?/span>q些工具用收到的l计数据衡量和调整业务流E?/span>
]]>
]]>
]]>
http://www.workflowpatterns.com/patterns/resource/work_distribution.php
workflowpatternsȝ了工作流的许多模式,机理是petri|那一套。oracle的auqualogic实现机制p着三篇文章讲得差不多?br />
有自己实现工作流引擎的朋友可以借鉴一下,本hҎ也小有研IӞƢ迎交流?br />
]]>
EAI
WFA
速度
机器速度Q非常快Q?br />
人的速度Q对程执行速度要求不高Q?br />
参与者数?br />
?br />
?br />
异常处理
?br />
?退单,reassignQ委托等Q非常复?
业务规则
一般是数据驱动
关系驱动Q一般来Ԍl织机构复杂,规则逻辑也越复杂
UI
?br />
多且复杂
数据转换/映射
?br />
?/td>
希望能够抛砖引玉Q让大家正确认识一下BPM的分cR?br />
]]>