首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

工作流情形分析(一)

2012-10-30 
工作流情景分析(一)情景: 法院一般对一个案子有以下一个流程o:p/o:p?????? 立案à分案à审判à结案其中立

工作流情景分析(一)

情景: 法院一般对一个案子有以下一个流程<o:p></o:p>

?????? 立案à分案à审判à结案

其中

立案阶段 ---- 立案人员

分案阶段 ---- 分案人员

审判阶段 ---- 法官

结案阶段 ---- 法官

<o:p>?</o:p>

上述的立案人员,分案人员,法官各自都是一个Group

<o:p>?</o:p>

一个案件加入有8个属性

a b c d e f g h

每个阶段不同组的人员处理案件的属性为

立案阶段 ---- 立案人员 -- a b

分案阶段 ---- 分案人员 – c d

审判阶段 ---- 法官???? --e f

结案阶段 ---- 法官???? --g h

<o:p>?</o:p>

<o:p>?</o:p>

<o:p>?</o:p>

一.?????????? 需要工作流的本质<o:p></o:p>

根据上述的情景,试想一下没有工作流的情况,我们一般的实现方式

为了将问题简单化

定义一个model为Case --- 案件

其中Case里面有一个属性,专门纪录案件状态,为state

在立案状态,state =’L’

? 分案状态,state =’F’

? 审判状态,state =’S’

? 结案状态,state =’J’

<o:p>?</o:p>

还有一个与案件相关的Repository,CaseRepository

以及处理案件的用例ProcessCaseService

我们只分析处理案件用例里面的3个子用例

1.??? 取得相关案件??? List getCases(String userName)

2.??? 改变案件状态??? void changeCaseState(String userName)

3.??? 由立案人员建立一个案件 void createCase(String userName)

4.??? 处理案件??????? void dealCase(BussinessDomain business)

<o:p>?</o:p>

<o:p>?</o:p>

还有一个处理用户和用户组的用例ProcessOrganizationService

里面的相关的用例有

1.取得相关的用户组 String getGroupName(String userName)<o:p></o:p>

<o:p>?</o:p>

立案人员有3个用例与之相关

1.? 只获得与立案阶段相关的案件

2.? 将案件状态改变为分案状态

3.? 建立一个处于立案阶段的案件

4.? 处理立案阶段案件的相关数据

<o:p>?</o:p>

分案人员同样与立案人员有相似的用例

<o:p>?</o:p>

整一个案件的处理过程,也就是整一个处理案件的主线<o:p></o:p>

立案à分案à审判à结案

<o:p>?</o:p>

而这一个过程,涉及到的相关的业务逻辑有

1.只获得属于自己处理阶段的相关案件

2.改变案件状态

3.案件状态对应的groupName

<o:p>?</o:p>

当业务逻辑发生变化的时候,比如有的地方法院实现分案,后立案

分案à 立案à审判à结案

<o:p>?</o:p>

那么,针对这个法院,我们就要对我们原来存在的系统进行代码的修整

<o:p>?</o:p>

原来是立案人员建立一个案件

现在由分案人员建立一个案件

需要修正的代码是void createCase(String userName)

<o:p>?</o:p>

这个时候,又有的地方法院分案阶段处理的案件属性是a和b,而不是原来的c和d

需要修正的代码是void dealCase(BussinessDomain business)

当dealCase业务逻辑复杂的时候,所需要修改的代码是海量的

<o:p>?</o:p>

这时候,又有的法院的案件处理是分案人员负责立案,立案人员负责分案

需要修正代码的地方是

void changeCaseState(String userName)

void createCase(String userName)

void dealCase(BussinessDomain business)

<o:p>?</o:p>

这里只是法院的业务流程,每个行业都有每个行业自己的业务流程,为了将对业务流程的处理这一部分,抽取出来,并且尽可能的少修改代码,就有了工作流引擎的产生

?

二.?????????? wfmc定义的域模型<o:p></o:p>

<o:p>?</o:p>

业务流程是什么?业务逻辑的那些部分是属于业务流程?哪些业务逻辑是要划分给工作流引擎的呢?

1.? 什么是需要根据实际情况系统要发生改变

根据情景

(1) 一般法院的案件处理流程为

立案à分案à审判à结案

而有的法院为

?? 分案à 立案à审判à结案

这4个阶段的先后顺序会发生变化<o:p></o:p>

(2)?????? 有的地方法院分案阶段处理的案件属性是a和b,而不是原来的c和d

不同阶段需要处理的案件相关数据发生变化<o:p></o:p>

(3)?????? 有的地方法院是分案人员负责立案,立案人员负责分案

角色所要负责处理的相应阶段的事情发生了变化<o:p></o:p>

<o:p>?</o:p>

这个情景只是法院的情况,不同的领域,业务流程也不一样。为了将所有领域的业务流程的抽取出来,标准化组织对此做出了明确的定义,并定义了元数据模型,也就是我们开发过程中的业务流程相关的model类

如下图

工作流情形分析(一)

不同的流程有时会调用相同的相关数据,以及组织结构等这部分公共数据可能是相同的

标准化组织又在基本的model之上定义了包结构

如下图

工作流情形分析(一)

?

目的就是为了防止重复定义,增强复用性,被包内任何工作流定义引用

1.? 工作流引擎怎么与其他业务逻辑交互以及与抽取的业务流程互交,以及工作流引擎自身如何管理,不同的工作流引擎之间又如何互交

标准化组织又为工作流引擎明确定义了一下接口

工作流情形分析(一)

nterface1 解决了与其他业务逻辑交互以及与抽取的业务流程互交问题

interface2 就是工作流引擎相关的客户端

interface3 就是流程处理中,所需要调用的外部程序,如何和他们互交

interface4 就是如何与其他工作流引擎互交

interface5 就是工作流引擎的管理和监控接口,改变工作流的一些初始化配置<o:p></o:p>

?

?

1 楼 dingyuan 2006-12-22   有时间再补上
三.标准工作流shark中与wfmc定义的域模型对应相关的类

四.标准工作流shark的运行原理和运行流程
2 楼 dingyuan 2006-12-23   哈,谢谢大家的支持啊..第3,4点正在补充,主要代码跟踪和结构分析需要一点时间 3 楼 jxyg 2007-08-02   好东西,支持下

热点排行