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

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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值