“钻木取火”中理解业务

“钻木取火”中理解业务
最近几天想做些有用的东西,这些东西不仅是对公司、对项目有用,更重要的是对自己有用。前面写了一些关于项目持久化的东西,我想现在对上篇文章中的技术问题作一个具体的解释和说明。这篇文章主要是关于业务分析的文章。
第一、业务是什么?
如何去剖析业务?去解释业务?我想我们采用中学学习生物的方法去解析,中学学习生物,我们第一章学的就是草履虫,逐步学到灵长。我想业务也一样,在剖析业务的根本之时,我们发现现在的ERP等等复杂的业务在某一个业务小颗粒上同原始社会的钻木取火没有什么区别!因此我想从钻木取火首先去解释业务是什么!
钻木取火就是:人钻木取火。
在这里我们首先分析它的语法:主+谓+宾
分析:人DDD主体
钻DDD动作
木DDD对象
取火DDD目的

对,从上面的分析可以看出一个具体的业务颗粒所必须具备的几个元素。也可以将这些业务颗粒看作主+谓+宾,当然也包括定语和状语。

第二、如何组合业务颗粒?
一整套的业务由很多的业务颗粒组成,对业务我个人认为可以有两个主线可以贯穿,一个是主体作为主线,另一个是对象作为主线。
如:钻木取火!以主体为主线:原始人A找到了木,原始人B钻木,原始人C用火烤肉。这套业务的线可能就是原始人ADD原始人BDD原始人C
以对象为主线:原始人A找到了没有烧过的木,原始人B开始钻木取火,原始人C用火烤肉。这套业务线可能就是没有烧过的木DD正在钻的木DD烧成灰烬的木
以那种主线作为系统架构的主线就要看具体系统的需要,前些日子看用友作的NC,他们里面的ERP工作流竟然以具体人员作为线管理,不可思议的弱智。
具体的组合业务颗粒就是利用数据结构将业务的整合。
我这里举的例子只是一个线性的例子,如果是树形的业务或者是图的业务。只是在组合业务颗粒的时候复杂一些。

第三、什么是业务卡片?
业务卡片是我凭空想象得来得一个名词,就是想说明一套业务。一套业务不是一个庞大的复杂的东西,而是一个蛮有规律的东东。既然有规律,我们就可以去遵循。当然有些规律每个人的理解都不尽相同。以下是我的理解。
业务的规律在于每个业务颗粒是相对一样的。如下图所示:

图1:项目卡片图示

上图可谓之一个业务卡片。相应的工作流程在本卡片的业务流中设置,如果更换引擎,于具体的业务卡片没有任何关系。
而图下面的引脚是该卡片的接口,同卡片的解析系统、同具体系统的权限系统的接口。权限系统角色同工作流关联,形成了一套完整的业务。
以钻木取火为例:
业务卡片为实体只有一个,那就是木头。
木头的属性有3个,一个是未烧的木头,一个是正在燃烧的木头,第三个是成为灰烬的木头。对于未烧的木头,操作只有一个:扛回来。
对于正在燃烧的木头,操作只有一个:钻。
对于成为灰烬的木头,没有操作。

可以根据实体定义工作流,没有烧过的木DD正在钻的木DD烧成灰烬的木。
根据接口可以给出每一个步骤对应的人员,分别是原始人A-原始人B-原始人C。

一套完整的项目卡片建立起来了。

第四、项目卡片实现的技术
图1已经给出项目卡片的总体结构。现在需要将项目卡片用代码进行实现。首先应该实现的是卡片的总体,而卡片包括了实体和工作流,很显然是一个组合的模式应用。而接口的实现显然应该是一个模板方法。
我们首先看卡片总体的实现。

图2:总体实现类图

首先定义了一个接口,然后定义了一个业务的抽象类,用于实现“策略”模式,start()和end()方法实现了策略模式,使业务的灵活性更强。

OperationCard实现了“组合”模式。一个项目卡片包括了实体和接口和工作流。


第五、解析业务卡片
当业务卡片插入系统中,如何去解析该业务卡片。首先在业务Mapping的XML文件中将该业务卡片的说明加入。
最简单的解析方法就是根据卡片提供的接口进行编程,当然也可以更具解析工具对卡片进行解析。
根据接口进行编程:主要运用在系统的展现层较复杂的情况下。根据系统提供的接口对JSP和Servlet进行处理。
解析工具:一般运用在展现层相对简单的情况下,比如说:报表系统。

希望大家指教批评!!!

你这实际上就是J2EE系统设计中business logic设计,Business logic中分为Domain model设计,就是你的木,还有一个是流程。
你说的人属于用例中角色。