IIMP开发说明文档Word格式.docx
- 文档编号:21707956
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:69
- 大小:382.51KB
IIMP开发说明文档Word格式.docx
《IIMP开发说明文档Word格式.docx》由会员分享,可在线阅读,更多相关《IIMP开发说明文档Word格式.docx(69页珍藏版)》请在冰豆网上搜索。
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)
流程名称
3.
PROC_DESC
VARCHAR2(128)
Y
流程描述
4.
PROC_VIEW_JSP
5.
PROC_ROLE_LIST
VARCHAR2(60)
6.
ISSEPERATE
CHAR
Havedonetasks是否分表(1是,0否),如果分表,则分表表名为havedonetasks+流程号
7.
OVSD_TEMPLATE
VARCHAR2(50
对应OVSD的模板(在OVSD配置的模板名称)
8.
TYPE_TABLE
VARCHAR2(30
工单类型字段所在的表
9.
TYPE_COLUMN
工单类型字段所在的字段(在IIMP展现中,按照工单类型进行分类展现)
3.1.3.2Activity
IACTIVITYID
NUMBER(10),
节点号
IPROCESSID
CACTIVITYNAME
节点名称
DTIMEALLOWED
DATE,
IRULEAPPLIED
CEXPRERULEFUNC
CEXPOSTRULEFUNC
IACTIVITYTYPE
节点类型。
(1开始节点,2普通节点,3执行单类节点,6或分支,7或汇聚,10结束,11多实例分支,12多实例汇聚)
IORMERGEFLAG
10.
INUMVOTESNEEDED
11.
IAUTOEXECUTIVE
12.
CACTIVITYDESC
节点描述
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
多实例/与对应的关联节点(比如与分支对应的与汇聚)
18.
CDISPLAYCLASSNAME
展现类(IIMP不需填写)
19.
FORM_ID
VARCHAR2(10
关联的表单ID
20.
ISBEGINACT
VARCHAR2(1
是否是起始的交互节点。
目前这个意义扩大,把它作为初始排序的条件,第一个需展现节点为1,后续的累加配置。
21.
ORDER_PARAM
22.
TITLE_PARAM
在收缩横条上显示的标题值对应的获取字段
23.
TIME_PARAM
在收缩横条上显示的时间值对应的获取字段
24.
DEAL_PARAM
在收缩横条上显示的处理人值对应的获取字段
实体说明:
01、通过FORM_ID字段使得节点与表单进行了关联
02、
3.1.3.3Ruleting_rule
IPREACTIVITYID
前置节点
ICURRACTIVITYID
当前节点
ICOMPLETIONFLAG
完成标记(分支条件,或时有用)
CNEXTACTIDLIST
后驱节点
CPREDEPENDSET
3.1.3.4To_do_task_list
ITASKID
任务号
ICURRACTID
ISERIALNO
流水号
IENTITYID
上一个节点对应的任务号
IPREACTID
上一个节点号
ISTAFFID
VARCHAR2(20
派发人
IGRANTORID
VARCHAR2(255
ITASKSTATUS
任务状态。
(1等待,2同步,3处理,4暂停)
IACTIVITYTYPE
节点类型
DDATECREATED
DDATEACCEPTED
DDATEALLOW
CTITLE
任务标题
IPRETASKID
上一个交互节点对应的任务号
EXEC_DBRULE
VARCHAR2(200
已经执行的DBRULE(用来过滤DB规则的重复执行)(已移至status表,可不用)
ISTAFFWG
VARCHAR2(40BYTE)
派发工作组
ICURRDEALER
VARCHAR2(20BYTE)
当前处理人(已移至status表,可不用)
IPROCESSID
流程号(重要!
如果此处没值则新引擎处理时会报错)
IDEAL_TYPE
VARCHAR2(2BYTE)
判断是否保存,如果保存,则置为1。
说明:
1.ISTAFFID表示派发的人、ISTAFFWG表示派发的工作组、ICURRDEALER表示这个任务的当前处理人;
派发人和派发工作组都只是一个标识,此任务不一定是他们做,当前处理人是真正做此任务的人。
工单派发时,不会往ICURRDEALER写值,只有“接受”和“释放”时才会往ICURRDEALER写值
3.1.3.5TO_DO_TASK_STATUS
任务号,与TO_DO_TASK_LIST中的任务号对应
ICURRDEALER
当前处理人
CSHEETTYPE
工单类型
UPPERTIME
超时时间(整个工单)(单位:
分钟)
VARCHAR2(400
已执行的DBRULE
CURRUPPERTIME
当前环节超时时间(单位:
单独把此表从TO_DO_TASK_LIST中剥离出来,是为了避免频繁地接受、释放工单操作TO_DO_TASK_LIST表,造成锁表。
每个任务号在此表中对应一条记录,当流程结束时,会把此流水的所有记录删掉。
3.1.3.6Havedonetasks
当前节点号
完成标记
DDATEACCEPTED
DDATECOMPLETED
DATE
执行的DBRULE
工单超时时间
环节超时时间
1.在Process表的isSeperate字段配置了havedonetasks是否存放在分表中(1是,0否);
如果分表,则分表表名为:
havedonetasks+流程号
3.1.3.7To_do_task_engine
当前的任务号
派发人(下一个任务的接收人)
任务状态(1等待,2同步,3处理,4暂停)
IEGSTATUS
完成标记(分支条件)
DDATEDEMAND
STATUS
VARCHAR2(2
状态(用来判断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IIMP 开发 说明 文档