IIMP开发说明文档.docx

上传人:b****5 文档编号:8571735 上传时间:2023-01-31 格式:DOCX 页数:69 大小:382.51KB
下载 相关 举报
IIMP开发说明文档.docx_第1页
第1页 / 共69页
IIMP开发说明文档.docx_第2页
第2页 / 共69页
IIMP开发说明文档.docx_第3页
第3页 / 共69页
IIMP开发说明文档.docx_第4页
第4页 / 共69页
IIMP开发说明文档.docx_第5页
第5页 / 共69页
点击查看更多>>
下载资源
资源描述

IIMP开发说明文档.docx

《IIMP开发说明文档.docx》由会员分享,可在线阅读,更多相关《IIMP开发说明文档.docx(69页珍藏版)》请在冰豆网上搜索。

IIMP开发说明文档.docx

IIMP开发说明文档

 

IIMP开发说明文档

(V0.1)

 

北京神州数码思特奇信息技术股份有限公司

二〇〇九年十一月

文档信息

文档名称

IIMP开发说明文档

电子文档

IIMP开发说明文档/MicrosoftWORD2003

文件状态

□草稿□正式发布■正在修改

编写人

Qiuzq

日期

2008年06月17日

校对人

日期

年月日

审核人

日期

年月日

批准人

日期

年月日

变更记录

变更序号

变更原因

变更页码

变更前版本号

变更后版本号

更改人

批准人

生效日期

备注

1

文档建立

0.1

丘仲权

2008-06-17

1引言

1.1编写目的

本文档作为IIMP的开发说明文档,适用于IIMP的开发、使用和维护人员,供参考使用。

1.2参考资料

1.3相关术语

名词

解释

IIMP

IIMP(IntegratedInformationManagermentPlatform),综合信息管理平台。

2系统设计(old)

2.1概要设计方案

系统总体的设计思路如上图所示。

把页面上所有类型的元素进行抽象,形成组件,存放在页面组件库中;从这个组件库中取出组件形成不同的元素,这些元素组合成不同的表单,表单中的每个元素与数据库中的存储相关联,对应到具体的表的字段;工作流程通过工作流引擎运行起来,流程中包含许多交互节点和非交互节点,这些交互节点可以关联上表单(理论上一个表单可以被多个流程节点关联),作为这些交互节点供用户使用的操作页面。

在数据存储的另一侧,通过接口与OVSD进行交互数据。

接口包含两部分,关联配置模块负责配置两者之间的表结构的字段对应关系;流程在节点间流转,当交互节点提交时,会根据关联配置中配置的字段,把这些字段和对应的值提取出来放到接口表中;在接口的数据交换模块会有独立的进程,定时扫描接口表,根据关联配置中预定义的字段对应关系把数据更新到OVSD数据库中。

2.2数据库设计方案

Activity表是节点表,存放着流程中的节点信息。

每个交互节点的数据对应存放在一张表中,这些表的创建在下面会提到。

表单信息表存放着表单的基本信息,Activity表与表单信息表进行关联,也即节点与表单关联。

表单组件对应表存放着表单中的元素的详细信息,包括元素的名称、描述、继承的组件、相关的操作、摆放的位置等,表单组件表与组件信息表关联,获取组件信息。

组件信息表存放着页面组件的基本信息,组件数据获取信息表存放着这个组件的一些相关操作。

数据表管理中对交互节点的表及字段进行管理,这里的信息都是根据表单中的元素动态增加或者修改的,相对应的数据库中的表也是根据这个表中的内容来动态建立或扩展的;元素数据存储对应表存放着表单元素与数据库中表字段的对应关系。

OVSD字段表关联总表存放着OVSD中所有流程、表单字段、数据库表和字段、关联表和字段的对应关系。

数据交换配置表保存着WEB化数据库中的表字段与OVSD数据库的表字段的对应关系。

数据交换数据表、数据交换详细数据表共同存放着所有的接口交换数据。

2.3与OVSD同步设计方案

OVSD里面四大流程的所有字段及存储关联关系都将整理存放在“OVSD字段表关联总表”中。

每个表单会对应一张数据表,通过“数据表管理”“元素数据存储对应表”两个表可以获得表单元素与后台表字段的对应关系。

然后提供一个界面,把两边的字段列出来,由操作人员进行匹配操作,把两边的字段对应上,并把对应的结果存储在“数据交换配置表”中。

在流程执行的每一个环节,系统会根据“数据交换配置表”中的配置信息,把在里面有配置的字段的内容提取出来,存放在“数据交换数据表”、“数据交换详细数据表”中。

会有一个常驻进程定时扫描这两个表,根据“数据交换配置表”和“OVSD字段表关联总表”把对应的信息更新到OVSD中的具体表字段中。

更新的时候分两个步骤,如果是第一次更新,则首先调用OVSD预提供的API接口,生成对应的工单,然后再按照对应关系生成update语句进行更新;如果不是第一次更新,则直接按照对应关系生成update语句进行更新。

3工作流引擎改造

3.1现有工作流引擎功能

现在的引擎包括同步和异步两种方式。

在流程发起的时候,使用同步的方式创建新流程,在程序中加入如下代码启动一个新流程:

if(iWorklistId==null||iWfSerialNo==null)

{

processMgr.setOperator(EMPLOYEE_ID);

if(FLOW_ID!

=null)

try

{

processMgr.startProcess(Integer.parseInt(FLOW_ID),engine_title,EMPLOYEE_ID);

}

catch(Exceptione)

{

e.getMessage();

}

WF_SERIAL_NO=processMgr.getSerialNo();

WORKLIST_ID=processMgr.getFirstTaskId();

}else

{

WF_SERIAL_NO=Integer.parseInt(iWfSerialNo);

WORKLIST_ID=Integer.parseInt(iWorklistId);

}

在流程推进的时候,采用异步执行的方式,在流程执行的每一步把与流程推进的相关数据写入到to_do_task_engine表中,在另一侧会专门启动一个进程,从to_do_task_engine表中获取数据,推动工作流引擎,执行流程的推进。

下面详细介绍工作流引擎的配置方法以及异步推动的原理

3.1.1流程节点配置方法

步骤:

1.根据需求用visio画流程图

2.在流程图上标识节点的数字信息,一般正常的节点从01开始标识(流程号+标识号,如300101,3001是指流程号,01是指节点标识号);或分支/汇聚从35(可以更大点)开始标识;与分支/汇聚从60开始标识

3.配置process表(流程)

4.配置activity表(节点)

5.配置routing_rule表(流转关系)

3.1.1.1画流程图

注意:

一般需要在与分支之前加上一个获取处理人的节点,用来获取所有与分支的处理人,如下图所示:

3.1.1.2配置activity表

3.1.1.2.1需配置的字段

IACTIVITYID节点号(流程中配的)

IPROCESSID流程号(对应process表)

CACTIVITYNAME节点名称

IACTIVITYTYPE节点类型

CCLASSNAME执行的类

CVIEWJSP查看jsp

CMDFJSP修改jsp

IMULACTIVITY对应多分派节点

CDISPLAYCLASSNAME展现类

3.1.1.2.2节点类型说明

IACTIVITYTYPE:

INITIAL=1;

INTERACTION=2;

AUTOMATION=3;

AND_BRANCH=4;

AND_MERGE=5;

OR_BRANCH=6;

OR_MERGE=7;

VOTE_MERGE=8;

DUMMY=9;

COMPLETION=10;

MUL_INSTANCE=11;

MUL_INSTANCE_MERGE=12;

WAIT=13;

OUTWAIT=14;

1开始节点

2普通节点

3执行单类节点

6或分支

7或汇聚

10结束

11多实例分支(目前使用的与分支)

12多实例汇聚(目前使用的与汇聚)

3.1.1.2.3其它字段配置说明

单类节点只需配置CCLASSNAME字段,配置它所将执行的类;

普通节点需要配置CVIEWJSP、CMDFJSP、CDISPLAYCLASSNAME,CVIEWJSP统一配置为“/workflow/busisupport/viewBusiSupport.jsp”;CMDFJSP配置为对应的.do;CDISPLAYCLASSNAME配置为对应的展现类。

与分支节点需要在IMULACTIVITY配置其对应的与汇聚字段

与汇聚节点需要在IMULACTIVITY配置其对应的与分支字段

参考:

select*fromactivitywhereiprocessid='3001'

3.1.1.3配置routing_rule表

1.首节点的前置节点为0,正常的流转标记是1,如下图:

300101是首节点。

结束节点的后置节点为0,如下图:

300114是结束节点。

2.或分支通过流转标记不同流向不同的分支,如下图:

3.所有的节点都必须至少在ICURRACTIVITYID字段中出现一次,IPREACTIVITYID字段为其前置节点,INEXTACTIVITY字段为其后置节点。

结束节点只需要出现在INEXTACTIVITY字段中。

参考:

select*fromrouting_rulewhereicurractivityidlike'3001%'

3.1.2异步推动原理

1.每个流程节点的表单提交的时候,把流程推进相关的信息写入到to_do_task_engine表中,至此表单提交完成。

2.EngineThread类是一个Thread类,EngineThread启动后作为常驻进程,启动时同时启动5个线程,每个线程sleep5秒执行一次。

3.EngineThread首先读取to_do_task_engine中的待处理列表,每次读一条记录,读完之后马上把这条记录在to_do_task_engine中的status更新为0,标志此条记录目前正在处理中。

4.EngineThread根据读取的ITASKSTATUS字段的值判断,如果是保存操作,则调用内部引擎的保存方法,更新状态位字段;如果是提交操作,则调用内部引擎的提交方法,推进工作流。

5.内部引擎执行完成后,返回到EngineThread类,delete在to_do_task_engine表中的此条记录,然后sleep5秒。

3.1.3关键表

包含如下关键表:

Process静态的流程表

Activity静态的节点表

Ruleting_rule节点关联关系表

To_do_task_list待办任务表

To_do_task_status待办任务状态表,保存一些经常更新的信息避免锁表

Havedonetasks已办任务表,此表可知流程的历史执行过程

To_do_task_engine异步模式接口数据表

TBLMULCONFIG分派多人时保存多人信息

DCOMMSENDDETAIL分派多人时,页面需插入的表

3.1.3.1Process

序号

属性名

类型

缺省

空值

说明

1.

PROC_ID

NUMBER(10)

N

流程号

2.

PROC_NAME

VARCHAR2(20)

N

流程名称

3.

PROC_DESC

VARCHAR2(128)

Y

流程描述

4.

PROC_VIEW_JSP

VARCHAR2(128)

Y

5.

PROC_ROLE_LIST

VARCHAR2(60)

Y

6.

ISSEPERATE

CHAR

0

Havedonetasks是否分表(1是,0否),如果分表,则分表表名为havedonetasks+流程号

7.

OVSD_TEMPLATE

VARCHAR2(50

对应OVSD的模板(在OVSD配置的模板名称)

8.

TYPE_TABLE

VARCHAR2(30

工单类型字段所在的表

9.

TYPE_COLUMN

VARCHAR2(30

工单类型字段所在的字段(在IIMP展现中,按照工单类型进行分类展现)

3.1.3.2Activity

序号

属性名

类型

缺省

空值

说明

1.

IACTIVITYID

NUMBER(10),

节点号

2.

IPROCESSID

NUMBER(10),

流程号

3.

CACTIVITYNAME

VARCHAR2(30

节点名称

4.

DTIMEALLOWED

DATE,

5.

IRULEAPPLIED

NUMBER(10),

6.

CEXPRERULEFUNC

VARCHAR2(50

7.

CEXPOSTRULEFUNC

VARCHAR2(50

8.

IACTIVITYTYPE

NUMBER(10),

节点类型。

(1开始节点,2普通节点,3执行单类节点,6或分支,7或汇聚,10结束,11多实例分支,12多实例汇聚)

9.

IORMERGEFLAG

NUMBER(10),

10.

INUMVOTESNEEDED

NUMBER(10),

11.

IAUTOEXECUTIVE

NUMBER(10),

12.

CACTIVITYDESC

VARCHAR2(50

节点描述

13.

CCLASSNAME

VARCHAR2(100

自动执行的单类节点(对应节点类型为3)

填写:

com.sitech.ismp.workflow.logic.CommGetSendDetailLogic

14.

CVIEWJSP

VARCHAR2(128

查看jsp(IIMP不需填写)

15.

CMDFJSP

VARCHAR2(60

修改jsp(IIMP不需填写)

16.

DISPATCH_STATUS

VARCHAR2(4

17.

IMULACTIVITY

NUMBER(10),

多实例/与对应的关联节点(比如与分支对应的与汇聚)

18.

CDISPLAYCLASSNAME

VARCHAR2(100

展现类(IIMP不需填写)

19.

FORM_ID

VARCHAR2(10

关联的表单ID

20.

ISBEGINACT

VARCHAR2(1

是否是起始的交互节点。

目前这个意义扩大,把它作为初始排序的条件,第一个需展现节点为1,后续的累加配置。

21.

ORDER_PARAM

VARCHAR2(30

22.

TITLE_PARAM

VARCHAR2(30

在收缩横条上显示的标题值对应的获取字段

23.

TIME_PARAM

VARCHAR2(30

在收缩横条上显示的时间值对应的获取字段

24.

DEAL_PARAM

VARCHAR2(30

在收缩横条上显示的处理人值对应的获取字段

实体说明:

01、通过FORM_ID字段使得节点与表单进行了关联

02、

3.1.3.3Ruleting_rule

序号

属性名

类型

缺省

空值

说明

1.

IPREACTIVITYID

NUMBER(10),

前置节点

2.

ICURRACTIVITYID

NUMBER(10),

当前节点

3.

ICOMPLETIONFLAG

NUMBER(10),

完成标记(分支条件,或时有用)

4.

CNEXTACTIDLIST

VARCHAR2(50

后驱节点

5.

CPREDEPENDSET

VARCHAR2(50

3.1.3.4To_do_task_list

序号

属性名

类型

缺省

空值

说明

1.

ITASKID

NUMBER(10),

任务号

2.

ICURRACTID

NUMBER(10),

节点号

3.

ISERIALNO

NUMBER(10),

流水号

4.

IENTITYID

NUMBER(10),

上一个节点对应的任务号

5.

IPREACTID

NUMBER(10),

上一个节点号

6.

ISTAFFID

VARCHAR2(20

派发人

7.

IGRANTORID

VARCHAR2(255

8.

ITASKSTATUS

NUMBER(10),

任务状态。

(1等待,2同步,3处理,4暂停)

9.

IACTIVITYTYPE

NUMBER(10),

节点类型

10.

DDATECREATED

DATE,

11.

DDATEACCEPTED

DATE,

12.

DDATEALLOW

DATE,

13.

CTITLE

VARCHAR2(100

任务标题

14.

IPRETASKID

NUMBER(10),

上一个交互节点对应的任务号

15.

EXEC_DBRULE

VARCHAR2(200

已经执行的DBRULE(用来过滤DB规则的重复执行)(已移至status表,可不用)

16.

ISTAFFWG

VARCHAR2(40BYTE)

派发工作组

17.

ICURRDEALER

VARCHAR2(20BYTE)

当前处理人(已移至status表,可不用)

18.

IPROCESSID

NUMBER(10)

流程号(重要!

如果此处没值则新引擎处理时会报错)

19.

IDEAL_TYPE

VARCHAR2(2BYTE)

判断是否保存,如果保存,则置为1。

说明:

1.ISTAFFID表示派发的人、ISTAFFWG表示派发的工作组、ICURRDEALER表示这个任务的当前处理人;派发人和派发工作组都只是一个标识,此任务不一定是他们做,当前处理人是真正做此任务的人。

工单派发时,不会往ICURRDEALER写值,只有“接受”和“释放”时才会往ICURRDEALER写值

3.1.3.5TO_DO_TASK_STATUS

序号

属性名

类型

缺省

空值

说明

1.

ITASKID

NUMBER(10),

任务号,与TO_DO_TASK_LIST中的任务号对应

2.

ICURRDEALER

VARCHAR2(20

当前处理人

3.

CSHEETTYPE

VARCHAR2(50

工单类型

4.

ISERIALNO

NUMBER(10),

流水号

5.

UPPERTIME

VARCHAR2(10

超时时间(整个工单)(单位:

分钟)

6.

EXEC_DBRULE

VARCHAR2(400

已执行的DBRULE

7.

CURRUPPERTIME

VARCHAR2(10

当前环节超时时间(单位:

分钟)

说明:

单独把此表从TO_DO_TASK_LIST中剥离出来,是为了避免频繁地接受、释放工单操作TO_DO_TASK_LIST表,造成锁表。

每个任务号在此表中对应一条记录,当流程结束时,会把此流水的所有记录删掉。

3.1.3.6Havedonetasks

序号

属性名

类型

缺省

空值

说明

1.

ITASKID

NUMBER(10),

任务号

2.

ICURRACTID

NUMBER(10),

当前节点号

3.

ISERIALNO

NUMBER(10),

流水号

4.

IENTITYID

NUMBER(10),

上一个节点对应的任务号

5.

IPREACTID

NUMBER(10),

上一个节点号

6.

ISTAFFID

VARCHAR2(20

派发人

7.

IGRANTORID

VARCHAR2(255

8.

ICOMPLETIONFLAG

NUMBER(10),

完成标记

9.

IACTIVITYTYPE

NUMBER(10),

节点类型

10.

DDATECREATED

DATE,

11.

DDATEACCEPTED

DATE,

12.

DDATECOMPLETED

DATE,

13.

CTITLE

VARCHAR2(100

任务标题

14.

DDATEALLOW

DATE

15.

IPRETASKID

NUMBER(10),

上一个交互节点对应的任务号

16.

EXEC_DBRULE

VARCHAR2(200

执行的DBRULE

17.

ISTAFFWG

VARCHAR2(40BYTE)

派发工作组

18.

ICURRDEALER

VARCHAR2(20BYTE)

当前处理人

19.

CSHEETTYPE

VARCHAR2(20

工单类型

20.

UPPERTIME

VARCHAR2(10

工单超时时间

21.

CURRUPPERTIME

VARCHAR2(10

环节超时时间

说明:

1.在Process表的isSeperate字段配置了havedonetasks是否存放在分表中(1是,0否);如果分表,则分表表名为:

havedonetasks+流程号

3.1.3.7To_do_task_engine

序号

属性名

类型

缺省

空值

说明

1.

ITASKID

NUMBER(10)

当前的任务号

2.

ISTAFFID

VARCHAR2(20

派发人(下一个任务的接收人)

3.

ITASKSTATUS

NUMBER(10),

任务状态(1等待,2同步,3处理,4暂停)

4.

IEGSTATUS

NUMBER(10),

完成标记(分支条件)

5.

DDATEDEMAND

DATE,

6.

DDATEACCEPTED

DATE,

7.

CTITLE

VARCHAR2(100

任务标题

8.

STATUS

VARCHAR2(2

状态(用来判断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1