阅读:9162
回复:23
|
[技术实例]V8升级V9方案(2)- 产品升级方案 - 东莞新能源为例
上章总结:
上一章主要对案例的背景和功能做了一些简单的介绍,相信有过相关经验的同仁看过之后也会在小脑袋中翻滚着风险项; 的确,风险项着实不少,在下就不一一列举了…… 本章概述: 本章讲解内容包括产品升级的方案(当然了,先从模版开始); 基础数据的迁移,本次分享就不在范围内了,毕竟大多数都有直面的SQL了…… 升级方案: 客户要求:在某一个时间节点前的数据做历史归档,其后的数据做新版本升级,当然这个时间节点,我们经历了三轮(2015-01-01、2015-10-01、2016-01-01); 当然,在讲述具体升级方案之前,要先了解了解客户的总体的系统数据统计,统计如下:
附件不好梳理,总体有300多GB吧…… 关于梳理的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存放第二个版本,以此类推,当然每个文件夹可以放多个流程),下面看看我是怎么分离的吧,给你一个图片看看:
下面的升级就好说了: ① 打开升级工具,从单版本文件夹开始,点击升级,然后查看升级工具下的日志:如果没有异常信息,那么恭喜你,这一步完成了,如果有异常信息,就需要去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编辑了帖子]
|
|||||||||||||||||||||||||
|
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(猛戳链接查看)
|
|
|
5楼#
发布于:2016-07-20 10:22
|
|
|
6楼#
发布于:2016-07-20 10:25
偶像啊,给签个名儿呗。
|
|
|
7楼#
发布于:2016-07-20 10:26
V8升级V9方案(1)- 总述 - 东莞新能源为例 http://bbs.h3bpm.com/read.php?tid=310&fid=9(猛戳链接查看)
|
|
|
8楼#
发布于:2016-07-20 17:51
看了下,有78个人阅读,希望这个分享能帮到一部分人~~~
但是,欠的烟不能省哟~~ 78支呀,得让我吧唧吧唧好多天了~~ |
|
|
上一页
下一页