您的位置:首页 > 其它

Maximo工作流程相关表结构分析与工作流迁移脚本

2010-07-28 08:25 871 查看
Maximo版本号:V7110

下面整理的资料是参考网上不知哪位仁兄的《浅谈maximo工作流数据迁移》,结合V7版的特点整理的。

工作流有关的数据表共有18张,以WF开头,下面是各表的简单说明:

1.wfaction 记录工作流中每个结点的正向与负向操作,actionid为该动作ID编号,ownernodeid为该结点的ID号,membernodeid为流向结点的ID号

2.wfapptoolbar 记录应用程序中添加的发送工作流的按钮,点击“编制工作流至按钮”就可以添加记录到本表中了,
点击“添加工作流程至应用程序”,则可以在应用程序的菜单中添加“发送工作流程”的菜单;

3.wfassignment 记录工作流的所有任务分配 assigned不等于0表示实例的,为0表示设置分派人 assignstatus 任务分配状态 (1)inactive 非活动状态 (2)complete完成状态 (3) active 活动状态 (4)forwarded 转发状态 其中只有(3)状态下,用户才能在分配栏查看到单据

4.wfcallstack 就是存放工作流引擎调用的工作流步骤的堆,有什么意义:
其中wfID:工作流实例标识;NODEID:调用堆栈的当前结点

5.wfcondition 记录判定条件

6.wfinput 记录手动录入信息

7.wfinstance 记录流程实例 active状态为Y表示在工作流中 wfid表示工作流实例标记 recordkey为相关单据号码

8.wfinteraction 交互节点属性定义表

9.wfnode 记录工作流程图的图标信息 nodeid为该流程中的图标流水号

10.wfnotification 记录通知信息,目前无使用

11.wfprocess 工作流程定义基础表,所有定义信息表中都有processname、processrev,用来唯一识别一个流程定义

12.wfrevision 记录工作流同步的基础信息,revision为同步版本号

13.wfstart 记录开始标记

14.wfstop 记录结束标记

15.wfsubprocess 记录父子流程关系

16.wftask 和任务有关的,wfnode.nodetype='TASK'在此表中有记录,作用不详

17.wftransaction 记录工作流实例流转信息,recordkey表示工单、采购订单或申请单号

18.wfwaitlist 等待事件表,是等待节点属性设置的明细表

工作流迁移相关的定义表是:
wfaction、wfapptoolbar、wfassignment、wfcondition、wfinput、wfinteraction、wfnode、
wfnotification、wfprocess、wfrevision、wfstart、wfstop、wfsubprocess、wftask、wfwaitlist

工作流实例相关的表是:
wfcallstack、wfinstance、wftransaction、wfassignment

其中所有任务分配信息都在wfassignment表中,wfid是流程实例ID,
如果值为“0”,表示是节点分配信息定义记录,需要迁移。

--创建DBLNK
--create database link "orcl57" connect to maximo identified by maximo using '10.100.2.57:1521/erppmdb';

--把下面的代码拷贝到PL/SQL工具的Test Window界面中执行
declare
--注意下面的过滤条件wfprocessid确保,查询出来的工作流程是需要迁移的流程
cursor process_cursor is(
select processname, processrev from wfprocess where
enabled = 1 and active = 1 and wfprocessid > 32);
pc_row process_cursor%rowtype;
begin
open process_cursor;
loop
fetch process_cursor into pc_row;
EXIT WHEN process_cursor%NOTFOUND;

insert into wfprocess@orcl57
select * from wfprocess t where t.wfid = 0 and t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfprocess@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfapptoolbar@orcl57
select * from wfapptoolbar where processname=pc_row.processname;

insert into wfassignment@orcl57 select * from wfassignment t where t.wfid = 0 and t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfassignment@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfcondition@orcl57 select * from wfcondition t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfcondition@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfinput@orcl57 select * from wfinput t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfinput@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfaction@orcl57 select * from wfaction t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfaction@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfnode@orcl57 select * from wfnode t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfnode@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfnotification@orcl57 select * from wfnotification t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfnotification@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wftask@orcl57 select * from wftask t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wftask@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfstart@orcl57 select * from wfstart t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfstart@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfstop@orcl57 select * from wfstop t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfstop@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfsubprocess@orcl57 select * from wfsubprocess t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfsubprocess@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfrevision@orcl57 select * from wfrevision t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfrevision@orcl57 set processrev=1, revision=1 where processname=pc_row.processname and processrev=pc_row.processrev;

insert into wfinteraction@orcl57 select * from wfinteraction t where t.processname=pc_row.processname and t.processrev=pc_row.processrev;
update wfinteraction@orcl57 set processrev=1 where processname=pc_row.processname and processrev=pc_row.processrev;

end loop;
close process_cursor;

commit;
--最后要处理select * from wfrevision中的processrev, revision都为1,把重复的记录删除。
--最后在Maximo系统中选择迁移的流程都验证一次,如果出现验证不通过,则需要在软件中打开流程配置检查是否有信息没有导入过来。
--检查wfaction表中相关action操作在目标库的action表中是否存在,需要移植过去。
--检查maxrole表中的角色是否迁移到目标库中,还有person、persongroup等工作流相关授权信息。
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: