阅读:7720 回复:23
lf6112
13

帖子

75

跟帖

416

积分

黄金榴莲
黄金榴莲
  • 社区居民

[技术实例]V8升级V9方案(2)- 产品升级方案 - 东莞新能源为例

楼主#
更多 发布于:2016-07-19 18:23
上章总结:

      上一章主要对案例的背景和功能做了一些简单的介绍,相信有过相关经验的同仁看过之后也会在小脑袋中翻滚着风险项;
      的确,风险项着实不少,在下就不一一列举了……
本章概述:
本章讲解内容包括产品升级的方案(当然了,先从模版开始);
基础数据的迁移,本次分享就不在范围内了,毕竟大多数都有直面的SQL了……



升级方案:
客户要求:在某一个时间节点前的数据做历史归档,其后的数据做新版本升级,当然这个时间节点,我们经历了三轮(2015-01-01、2015-10-01、2016-01-01);
当然,在讲述具体升级方案之前,要先了解了解客户的总体的系统数据统计,统计如下:

   统计类别    总量    第一次梳理    第二次梳理    第三次梳理
   流程模版数量    282    146    121    106
   流程版本    574    374    262    168
   流程实例数    200W    126W    42W    30W
   流程任务数    970W    600W    320W    146W
附件不好梳理,总体有300多GB吧……
看到了上面的数据统计,不知道有没有那么一点点的娇躯一震……
其实为什么会有三次梳理呢,原因其实比较简单:
1、第一次梳理发现不管是流程模版还是流程数据都太多,升级起来难度较大,风险较大
2、第二次梳理发现依旧很大,加上客户老板(他们的领导的一种别称,啧啧……,最开始还给我唬的一愣一愣的 ^_^|||)个人意向认为大多数单据可以不需要,然后进行了第三次梳理
三次梳理开起来简单,其中经历不堪与人道也,费时、费力,不过总算有了一个好的结果……至少升级压力小了很多,哈哈~~
关于梳理的SQL语句,我就不贴出来了哟,都是大神级人物,相信这点小事难不倒大家吧 。。
-------------------------------------------------割一下,讲解正式升级模版的方案----------------------------------------
模版梳理完成后发现了一个问题:很多流程模版和版本的对应关系是1对多,这个也是我们在日后升级的时候需要注意的。
下面介绍下我个人整理出来的一个升级方案:
使用工具:《升级工具》(有源码的哟~感谢产品中心同仁的提供!
升级步骤:
1、安装并配置V9(必备)(注意:V8的数据库和V9的数据库建议存放于同一个数据库)
2、打开V9后台管理,在“流程模型”菜单下添加流程目录(流程目录的创建根据客户V8的来)
3、参考文件《H3 BPM v9.2升级操作指南.doc》,建立好对照关系 ModWorkFlowTree H3 数据库中,创建的规则参考文档哦~
4、整理好流程模版目录(V8)用于升级,因考虑有多个流程版本,如果一起批量升级,在中途遇到有一个版本发现导入异常,那么你惨了,后面的版本导不进咯~~针对这个问题,没有好的方法,只有一个一个的升了,在“东莞新能源”项目中,我是这么做的:先 单版本的流程放一个文件夹(workflow_Single),剩下的多版本的流程放一个文件夹(Workflow_More),然后将多版本的流程分离出多个文件夹存放单个版本(例如:workflow_More_1存放最低版本,Workflow_More_2存放第二个版本,以此类推,当然每个文件夹可以放多个流程),下面看看我是怎么分离的吧,给你一个图片看看:

图片:QQ截图20160719175331.png


下面的升级就好说了:
① 打开升级工具,从单版本文件夹开始,点击升级,然后查看升级工具下的日志:如果没有异常信息,那么恭喜你,这一步完成了,如果有异常信息,就需要去H3后台做修改了,修改完成之后发布成功!OK,单版本流程模版升级成功
② 依次按照 第 ① 步的方法将多版本的模版升级成功(原则:从低版本开始,当然第②步的执行前,需要修改好原始的版本号,方法见下面的SQL语句)
升级的方式看起来听简单的,但是其中的耗时和问题点就得见仁见智了~!或许看到这里,你会觉得模版终于升级玩了,可以去抽支烟,轻松轻松一下了~~那么,很不幸的告诉你,还没有 ^_^,写了这么多,我还没抽烟轻松下呢~~~
③ 之前有讲到本次升级的流程是数据梳理出来的流程,版本可不是从第1版开始的,而且还不一定是连续的,因为我们通过升级工具升级或者H3后台导入,版本都是从1开始,然后顺序递增,可能会和我们的原始版本对不上号,原始版本对不上号,那么就不能和我们的流程数据对上了,也不能在升级工具的第二步“生成映射”成功生成了~!那么这个问题怎么解决呢?自己写SQL改吧~实在不行,你连续多发布几个版本也行~~~
那么这里我就贴一下SQL语句吧,大家也可以给予批判性的    接受 ~~
先创建一个临时的节点映射表 V8 的 T_ActivityMap 表
----------------临时的节点映射表----------------------
USE H3Cloud
GO
       
IF EXISTS(SELECT 1 FROM sys.sysobjects WHERE name='T_OldAndNewWorkflow')
DROP TABLE T_OldAndNewWorkflow
       
GO
       
CREATE TABLE T_OldAndNewWorkflow
(
    OldWorkflowPackage VARCHAR(200) NOT NULL ,
    OldWorkflowName VARCHAR(200) NOT NULL ,
    WorkflowCode VARCHAR(200) NOT NULL
)
       
GO
       
DELETE FROM T_OldAndNewWorkflow
       
INSERT INTO dbo.T_OldAndNewWorkflow
        ( OldWorkflowPackage ,
          OldWorkflowName ,
          WorkflowCode
        )
SELECT DISTINCT WorkflowPackage,WorkflowName,WorkflowPackage+'_'+WorkflowName FROM H3..OT_InstanceContext
ORDER BY WorkflowPackage,WorkflowName
       
GO
       
USE H3
GO
       
IF EXISTS(SELECT 1 FROM sys.sysobjects WHERE name='T_ActivityMap')
DROP TABLE T_ActivityMap
       
GO
       
CREATE TABLE T_ActivityMap
(
    [ObjectID] [nvarchar](36) NOT NULL primary key,
    [WorkflowPackage] [nvarchar](50) NULL,
    [WorkflowName] [nvarchar](50) NULL,
    [WorkflowVersion] [int] NULL,
    [ActivityName] [nvarchar](32) NULL,
    [SchemaCode] [nvarchar](50) NULL,
    [WorkflowCode] [nvarchar](50) NULL,
    [TargetActivityCode] [nvarchar](50) NULL,
    [TargetActivityName] [nvarchar](50) NULL,
    [State] [int] NULL
)
       
GO 
       
DELETE  FROM [H3].dbo.T_ActivityMap
       
INSERT  INTO [H3].[dbo].[T_ActivityMap]
        (
        [ObjectID] ,
        [WorkflowPackage] ,
        [WorkflowName] ,
        [WorkflowVersion] ,
        [ActivityName],
        [SchemaCode] ,
        [WorkflowCode],
        [TargetActivityCode],
        [TargetActivityName],
        [State]
        )
SELECT  a.ObjectID,
        b.WorkflowPackageName ,
        b.WorkflowName ,
        b.WorkflowVersion ,
        a.Name ,
        b.WorkflowPackageName +'_'+b.WorkflowName ,
        b.WorkflowPackageName +'_'+b.WorkflowName ,
        RIGHT(a.FullClassName,LEN(a.FullClassName)-CHARINDEX('.',a.FullClassName)) AS ActivityCode,
        a.Name,
        0
FROM    dbo.OT_ActivityTemplate a
        INNER JOIN OT_WorkflowTemplate b ON a.ParentObjectID = b.ObjectID
        INNER JOIN ( SELECT DISTINCT
                            WorkflowPackage ,
                            WorkflowName ,
                            WorkflowVersion
                     FROM   H3..OT_InstanceContext
                   ) c ON b.WorkflowPackageName = c.WorkflowPackage
                          AND b.WorkflowName = c.WorkflowName
                          AND b.WorkflowVersion = c.WorkflowVersion
ORDER BY b.WorkflowPackageName ,
        b.WorkflowName ,
        b.WorkflowVersion
-----------所有单板本和多版本的最低版本
SELECT  WorkflowCode ,
        MIN(WorkflowVersion) AS WorkflowVersion
        INTO #temp1
FROM    H3..T_ActivityMap
GROUP BY WorkflowCode
       
-----------检查刚才手动修改的版本的流程是否在里面---检查发现在,可以放心修改版本 -- 记得要重启引擎服务
       
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =a.WorkflowVersion
FROM #temp1 a WHERE H3Cloud..OT_WorkflowTemplatePublished.WorkflowCode=a.WorkflowCode
       
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=a.WorkflowVersion + 1,DefaultVersion=a.WorkflowVersion
FROM #temp1 a WHERE H3Cloud..OT_WorkflowClause.WorkflowCode=a.WorkflowCode
       
DROP TABLE #temp1
多版本的版本号怎么弄呢,这个…………你得先梳理出来哪些是多版本的,看看需要升级出来的版本号是否是连续的,
因为在单版本和多版本的最低版本的版本号修改完后,执行第②步的时候,会自动叠加。所以如果你的多版本是连续的,那么恭喜你,流程模版的升级搞定了,当然,如果你的多版本的版本号不是连续的,那么还得进行下一步操作:
a.梳理出哪些流程的多版本不是连续的;
b.手动写SQL改咯…………,看看我这边整的吧~~~
-------仅供查看,且不可直接使用---------
-----------2、检查清单中,不连续的版本,手动修改版本
----------------检查得知:SAP流程_PO交货计划变更申请单(1,3)-(1,2)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='SAP流程_PO交货计划变更申请单'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =3 WHERE WorkflowCode='SAP流程_PO交货计划变更申请单' AND WorkflowVersion=2
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=4,DefaultVersion=3 WHERE WorkflowCode='SAP流程_PO交货计划变更申请单'
    
--------------------------SAP流程_采购订单管理流程(22,25,26,27,28)-(22,23,24,25,26)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='SAP流程_采购订单管理流程'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =28 WHERE WorkflowCode='SAP流程_采购订单管理流程' AND WorkflowVersion=26
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =27 WHERE WorkflowCode='SAP流程_采购订单管理流程' AND WorkflowVersion=25
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =26 WHERE WorkflowCode='SAP流程_采购订单管理流程' AND WorkflowVersion=24
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =25 WHERE WorkflowCode='SAP流程_采购订单管理流程' AND WorkflowVersion=23
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=29,DefaultVersion=28 WHERE WorkflowCode='SAP流程_采购订单管理流程'
    
--------------------------办公流程_ATL公章申请流程(6,8,9)-(6,7,8)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='办公流程_ATL公章申请流程'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =9 WHERE WorkflowCode='办公流程_ATL公章申请流程' AND WorkflowVersion=8
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =8 WHERE WorkflowCode='办公流程_ATL公章申请流程' AND WorkflowVersion=7
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=10,DefaultVersion=9 WHERE WorkflowCode='办公流程_ATL公章申请流程'
     
--------------------------办公流程_电话权限申请(3,19)-(3,4)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='办公流程_电话权限申请'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =19 WHERE WorkflowCode='办公流程_电话权限申请' AND WorkflowVersion=4
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=20,DefaultVersion=19 WHERE WorkflowCode='办公流程_电话权限申请'
    
--------------------------办公流程_工程服务申请单(11,15)-(11,12)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='办公流程_工程服务申请单'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =15 WHERE WorkflowCode='办公流程_工程服务申请单' AND WorkflowVersion=12
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=16,DefaultVersion=15 WHERE WorkflowCode='办公流程_工程服务申请单'
    
--------------------------办公流程_商务签证申请单(1,3)-(1,2)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='办公流程_商务签证申请单'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =3 WHERE WorkflowCode='办公流程_商务签证申请单' AND WorkflowVersion=2
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=4,DefaultVersion=3 WHERE WorkflowCode='办公流程_商务签证申请单'
    
--------------------------财务管理_项目预算申请(11,13)-(11,12)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='财务管理_项目预算申请'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =13 WHERE WorkflowCode='财务管理_项目预算申请' AND WorkflowVersion=12
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=14,DefaultVersion=13 WHERE WorkflowCode='财务管理_项目预算申请'
    
--------------------------生产流程_ATL物料主数据维护(2,8,9)-(2,3,4)
SELECT * FROM H3Cloud..OT_WorkflowTemplatePublished WHERE WorkflowCode='生产流程_ATL物料主数据维护'
    
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =9 WHERE WorkflowCode='生产流程_ATL物料主数据维护' AND WorkflowVersion=4
UPDATE H3Cloud..OT_WorkflowTemplatePublished SET WorkflowVersion =8 WHERE WorkflowCode='生产流程_ATL物料主数据维护' AND WorkflowVersion=3
    
UPDATE H3Cloud..OT_WorkflowClause SET CurrentNewVersion=10,DefaultVersion=9 WHERE WorkflowCode='生产流程_ATL物料主数据维护'
    
--------------------------重启引擎服务
    
-----------到此,多版本的流程模板的版本不匹配问题也解决了……

第二章总算写完了,没差点累死,看过的人,记得欠我一根烟啊………………

----------------------------------------------切割一下---------------------------------------------
下一章:介绍历史历程归档方案

[lf6112于2016-07-20 08:49编辑了帖子]
·……众里寻她千百度,蓦然回首,那人却在灯火阑珊处·o·‘……’
H3BPM
655

帖子

2504

跟帖

46406

积分

管理员
管理员
  • 社区居民
1楼#
发布于:2016-07-20 10:26
帖内置顶  –  H3BPM  –  2016-07-20 10:27
V8升级V9方案(1)- 总述 - 东莞新能源为例 http://bbs.h3bpm.com/read.php?tid=310&fid=9(猛戳链接查看)
10月签到活动奖励发放啦:http://bbs.h3bpm.com/read.php?tid=5377&fid=5
echo
134

帖子

856

跟帖

2552

积分

钻石榴莲
钻石榴莲
  • 社区居民
2楼#
发布于:2016-07-20 09:03
楼主文笔太好了,期待下一章
Charles
10

帖子

34

跟帖

1603

积分

黄金榴莲
黄金榴莲
  • 社区居民
3楼#
发布于:2016-07-20 09:12
楼主,歇会,来根烟!
wangwei
11

帖子

46

跟帖

868

积分

高级榴莲
高级榴莲
4楼#
发布于:2016-07-20 10:02
这个太牛,辛苦辛苦!
这年代,哥玩的还是老掉牙的情怀!
上善若水
17

帖子

1282

跟帖

12345

积分

管理员
管理员
  • 社区居民
5楼#
发布于:2016-07-20 10:22
Charles:楼主,歇会,来根烟!回到原帖
H3 BPM 让天下没有难用的流程。全国统一服务热线 :400-889-8625
上善若水
17

帖子

1282

跟帖

12345

积分

管理员
管理员
  • 社区居民
6楼#
发布于:2016-07-20 10:25
    偶像啊,给签个名儿呗。
H3 BPM 让天下没有难用的流程。全国统一服务热线 :400-889-8625
H3BPM
655

帖子

2504

跟帖

46406

积分

管理员
管理员
  • 社区居民
7楼#
发布于:2016-07-20 10:26
V8升级V9方案(1)- 总述 - 东莞新能源为例 http://bbs.h3bpm.com/read.php?tid=310&fid=9(猛戳链接查看)
10月签到活动奖励发放啦:http://bbs.h3bpm.com/read.php?tid=5377&fid=5
lf6112
13

帖子

75

跟帖

416

积分

黄金榴莲
黄金榴莲
  • 社区居民
8楼#
发布于:2016-07-20 17:51
看了下,有78个人阅读,希望这个分享能帮到一部分人~~~
   但是,欠的烟不能省哟~~    78支呀,得让我吧唧吧唧好多天了~~
·……众里寻她千百度,蓦然回首,那人却在灯火阑珊处·o·‘……’
001
001
0

帖子

6

跟帖

2048

积分

初级榴莲
初级榴莲
9楼#
发布于:2016-07-21 14:39
6666666666666666666
6666666666666666
上一页
1 2 3  »|
游客

返回顶部