昨天,Michael Chen和我探讨了有关“BMD”和“MDA”的一些问题,但是他对“如何有序的组装应用”不是很清楚。
其实,这也是大多MDA爱好者的迷惑——因为MDA的思想重在“模型”,但是这是一个很含糊的概念。所以后来冒出了“业务模型”,虽然这看似是个更加抽象的概念,但是却真正符合应用的思想。—— 因为从客户角度来说,其更注重对业务的描述。
但是,业务的粒度和领域是一个问题,一个业务可能是多个步骤组成的,也可能是一个系列的分流程组成的,甚至也可能只是简单几个无序的功能零散的组合;同时,不同的领域,其业务的抽象是不同的——这两个问题是目前影响BMD平台发展的瓶颈。
但是,从管理学角度,这两点却又一个企业的管理核心:不同的领域,决定了企业管理方式的特点;而同时不同的规模、行为、市场,也对企业的组织架构和管理策略的执行划分都有着根本地影响。
其实,这也决定了当然管理(信息化)软件的市场的划分:很难一个产品能够同吃所有的市场。
<o:p> </o:p>
有点扯远了(这就是随笔的坏处,写之前没有一个主题)。
<o:p> </o:p>
言归正传。任何一个管理行为或业务,都是可以抽象为有序的“处理过程”的组合。虽然,我们可以肯定在现实中,业务处理的主体过程是较为有序的,业务过程的“细枝”却多是无序的。
这本身是符合管理的思想:一个企业的主核心业务或中层执行过程是较为严谨,而最外层的组织或业务执行,多以松散为主,这样可以较为迅速的适应市场和业务处理的变化。
<o:p> </o:p>
但是,这对业务处理过程的抽象却是一大难题。所以目前几乎所有的BMD平台都是以“提供二次开发”为主导的,而所有的平台都会提供workflow作为核心模块,用来“将业务过程处理串接起来”。
<o:p> </o:p>
我们需要明白:业务是一个个“处理过程”有序的组成的—— 这就是流水线思想;workflow将这些分散的处理过程,有序的融合在一起,成为一个完整的业务。
当然,workflow本身的Flow的最初含义,是来源自与企业经营管理息息相关的“物流”“资金流”“信息流”等。于是工作流就用一个个有序的任务点来抽象表示这些业务流的处理过程。
我们可以把业务的处理理解为“Process”,当然这个核心就是workflow。在这业务的处理过程中,其要协调资源、维护权限、控制成本、处理信息,这是保证和维护一个业务有效执行的根本。这本身就决定了workflow是一个复杂的“模块”。
<o:p> </o:p>
<v:shapetype o:spt="75" coordsize="21600,21600" stroked="f" id="_x0000_t75" filled="f" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path gradientshapeok="t" o:extrusionok="f" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype>
(图摘自我做的workflow讲座的ppt:http://www.javafox.org 下载)
<o:p> </o:p>