`
dary_zhou
  • 浏览: 40297 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

直接修改EOS流程引擎数据,实现单工作项变多工作项

    博客分类:
  • EOS
阅读更多

    在客户需求变化时,可能会碰到流程引擎中单工作项的数据拆分成多工作项,下面提供一种实现方式来达到多工作项的拆分.对于新流程是不需要拆分,只是对于流程实例中已运行到相应环节才需要处理。以下提到方法,不是通过EOS流程引擎修改,而是通过直接更新数据库实现。

    单工作项的拆分成多工作为如下几步:

                1.列出需要拆分工作项的流程实例,并更新流程图,发布时,不要生成新的版本。

               2.工作项的循环拆分,并将以前的工作项表中记录的删除或者将工作项记录状态修改为12

              3.删除工作项对应的参与者,并按多工作项要求增加参与者记录。

   如下提供了一种拆分的实例:是通过ORACLE的存储过程实现。

create or replace procedure UPDATE_WORKITEM_INFO is

begin
  declare
 
    k number default - 5000000;---工作项ID
    i number default - 1000000;---参与者ID
    --每一次使用都需要调整这个值  这个值用来做参与者表主键
  begin
    --迭代所有需要修改的工作项
    FOR each in (select *
                   from wfworkitem wf
                  where (wf.currentstate = 4)
                    and wf.activitydefid = "Provider"  
                    and wf.processdefid = 15) LOOP
      --删除与者表中参与者信息
      update wfwiparticipant wfw
         set wfw.wiparticid = 0 - wfw.wiparticid,
             wfw.workitemid = 0 - wfw.workitemid
       where wfw.workitemid = each.workitemid;
   
      --根据工作项的流程实例找到相应的参与者
      for tt in (select distinct busman
                   from t_mm_material tmm
                  where tmm.materialid in
                        (select t.materialid
                           from t_mm_orderinfodetail t
                          where t.orderid in
                                (select tm.orderid
                                   from t_mm_orderinfo tm
                                  where tm.processinstid = each.processinstid))) loop
     
        i := i + 1;
        k := k + 1;
     
        --更新参与者表信息
        insert into wfwiparticipant
          (wiparticid,
           workitemid,
           participanttype,
           participant,
           participant2,
           workitemstate,
           partiintype,
           extend1)
        values
          (i,
           k,
           "person",
           tt.busman,
           tt.busman,
           "10",---工作项状态
           "EXE",
           "P{" || tt.busman || "}");----相应的参与才类型,根据实现业务的不同,会有区别
        --更新工作项信息
        insert into wfworkitem
          (workitemid,
           workitemname,
           workitemtype,
           workitemdesc,
           currentstate,
           participant,
           priority,
           istimeout,
           limitnum,
           limitnumdesc,
           createtime,
           starttime,
           endtime,
           finaltime,
           actionurl,
           processinstid,
           activityinstid,
           stateslist,
           timeoutnum,
           timeoutnumdesc,
           extend1,
           extend2,
           processinstname,
           activityinstname,
           processdefid,
           processdefname,
           processchname,
           activitydefid,
           assistant,
           bizstate,
           allowagent
          
           )
       
          (select k as workitemid,
                  workitemname,
                  workitemtype,
                  workitemdesc,
                  "10" as currentstate,---多工作项的状态为10
                  tt.busman as participant,
                  priority,
                  istimeout,
                  limitnum,
                  limitnumdesc,
                  createtime,
                  starttime,
                  endtime,
                  finaltime,
                  actionurl,
                  each.processinstid as processinstid,
                  each.activityinstid as activityinstid,
                  stateslist,
                  timeoutnum,
                  timeoutnumdesc,
                  extend1,
                  "NPNYYNYNN" as extend2,-----多工作项与单工作项区别
                  processinstname,
                  activityinstname,
                  processdefid,
                  processdefname,
                  processchname,
                  activitydefid,
                  assistant,
                  bizstate,
                  allowagent
          
             from wfworkitem wftp
            where wftp.workitemid = each.workitemid);
     
      end loop;
   
      --更新工作项表信息
      update wfworkitem wfwor
         set wfwor.workitemid     = 0 - each.workitemid,
             wfwor.processinstid  = 0 - each.processinstid ,
             wfwor.currentstate= 12
       where wfwor.workitemid = each.workitemid ;
   
    END LOOP;
 
    commit;
  end;
end;

分享到:
评论

相关推荐

    EOS工作流引擎工作原理.pdf

    事件服务类有两个实现类:单线程的实现类(SingleThreadEventService)和多线程的实现类(MulThreadEventService)。 事件处理机制:事件处理机制是 EOS工作流引擎的关键部分。事件处理类共有五个,分别是...

    工作流引擎原理EOS工作流引擎工作原理

    EOS工作流引擎设计的核心目标是实现业务流程的自动化,它通过定义和执行工作流实例来协调各个任务参与者的行为。当一个新的工作流实例被触发时,EOS引擎会根据预定义的工作流模型进行解析,这个模型通常包含了流程的...

    工作流引擎的设计与实现

    - **数据访问服务**:负责与数据库的交互,实现工作流数据的存储和检索。 - **工作流定义**:用户可以使用图形化界面定义工作流模型,EOS工作流引擎支持多种流程模式,如顺序、并行、归并、多重选择、多重归并、多...

    EOS流程设计

    - **规则引擎**:利用EOS内置的规则引擎,实现复杂的业务逻辑。 - **异常处理**:设计合理的异常处理机制,确保流程在出现意外情况时能够正常运行。 - **数据验证**:通过数据验证确保输入数据的正确性和有效性。 #...

    EOS配置多数据源

    在EOS系统中,可以通过两种方式实现数据库连接:单连接EOS Server和通过应用服务器的数据源(DATASOURCE)方式。 单连接EOS Server的方式是通过在`eosconfig.xml`配置文件中设置`DBConnect/single`的值为`true`,...

    上海普元EOS6工作流教程

    文档内容分为多个章节,首先介绍了工作流的基本概念,包括EOS工作流的概述及其实现原理和机制。接着,读者将逐步学习如何通过EOS工作流进行实际操作,如创建组织机构、准备数据、构建项目、创建构件包、设计流程等。...

    EOS工作流Demo

    EOS工作流通过提供图形化的流程设计工具,使得非程序员也能创建和修改复杂的业务流程。在"EOS工作流Demo"中,我们可以看到实际应用的示例代码,这对于初学者来说是一个很好的学习资源。 **EOS工作流的核心组件** 1...

    普元EOS工作流教程-案例部分

    接着,设计了一个简单的流程模型,直接映射现实业务,同时考虑到EOS WF的XML结构和可扩展性,用于描述请假单的业务实体。请假单包含了请假人、请假类型、原因、开始和结束时间以及审批状态等关键信息。 在入门阶段...

    EOS工作流(EOS Workflow)

    - **流程设计工具**:EOS提供了强大的可视化流程设计工具,使得用户能够轻松地创建和修改复杂的工作流模型。 - **流程引擎**:EOS工作流引擎支持多种执行策略,可以根据不同的业务需求进行配置,确保流程高效、准确...

    EOS6 工作流教程

    通过这个详尽的EOS6工作流教程,无论是初学者还是经验丰富的用户,都将能够熟练掌握EOS6系统的使用,实现企业工作流程的智能化和高效化。无论是日常任务管理,还是复杂的企业级流程控制,EOS6都能提供强大的支持。

    基于普元EOS的流程详细设计

    6. **集成与扩展**:EOS具备良好的集成能力,能够轻松与其他企业级应用或系统进行对接,如ERP、CRM、OA等,实现了数据和流程的无缝连接。此外,EOS还提供了插件机制,允许开发者根据自身需求开发定制化的插件,...

    普元6.5EOS流程开发教程

    普元Primeton6.5EOS流程开发教程

    普元EOS 工作流介绍

    6. **集成能力**:EOS工作流支持与其他系统(如ERP、CRM等)集成,实现数据共享和流程联动,提高整体业务流程的自动化程度。 ### 三、EOS工作流的优势 1. **灵活性**:EOS工作流支持动态调整流程,适应业务变化。 ...

    EOS6.0 经典流程例子

    EOS(Enterprise Operation System)是一个强大的业务流程管理系统,主要用于企业级工作流自动化和业务流程优化。在 EOS 6.0 版本中,它提供了一系列改进和增强的功能,以提升用户体验和流程效率。这个经典流程例子...

Global site tag (gtag.js) - Google Analytics