概述

URule Pro4.x+版本在规则文件存储方法采用是直接操作数据库方式实现,不再使用基于Jackrabbit的存储方式,这导致URule Pro3.x及以往版本上开发的规则项目无法直接迁移到URule Pro4.x+中。为了解决这一问题,我们专门提供了一个数据迁移工具,它可以将以往老版本的URule项目直接导入到新版本的对应的数据库表中。

实现将老版本的规则项目迁移到最新的URule Pro4.x+中来总体来说可分为三步:第一步就是搭建好一个基于URule Pro4.x+的项目,并初始化好其依赖的数据库表;第二步是在老版本URule项目中添加urule-pro-migration包;第三步就是执行老项目导入到新版数据库操作。

初始化URule Pro4.x+表

要创建URule Pro4.x的表,最简单的方法就是搭建一个URule Pro4.x的项目,有多种方式可以搭建一个项目,具体可以参考[2.1.项目配置](..\config\2.1project.html) 一节具体做法。

项目搭建完成后还需要初始化URule Pro4.x+的表信息,具体可以参考[2.2.系统初始化](..\config\2.2setup.html) 一节介绍。

运行这个新创建的项目,注册一个账号,登录进去,**并创建一个团队**,需要注意的是一定要创建一个团队,否则后续的项目迁移操作将无法进行。

添加urule-pro-migration包

打开老版本的URule项目,如果项目是基于Maven结构,那么可以直接在pom.xml在添加urule-pro-migration包的依赖信息:
<dependency>
  <groupId>com.bstek.urule</groupId>
  <artifactId>urule-pro-migration</artifactId>
  <version>1.0.0</version>
</dependency>
urule-pro-migration目前的最新版本是**1.0.0,具体可以打开http://search.maven.org 搜索关键字**urule-pro-migration**查看该包的最新版本。

可以看到urule-pro-migration包是依赖于urule-console-pro的3.0.3版本的,所以我们可以只依赖urule-pro-migration包即可。

如果老项目非maven项目,那么可以直接打开http://search.maven.org 搜索关键字**urule-pro-migration**,找到urule-pro-migration包并下载,放到当前项目中即可。

版本兼容说明

如果你的urule-console-pro是4.0.x版本的,则需要使用urule-pro-migration的0.x.x版本。例如当前最新版本为0.0.2,则pom.xml配置为:

 <dependency>
   <groupId>com.bstek.urule</groupId>
  <artifactId>urule-pro-migration</artifactId>
  <version>0.0.2</version>
</dependency>
另外在spring配置中引入uurle-migration.xml文件:
<import resource="classpath:urule-migration.xml"/>
配置好urule-pro-migration包后,我们还需要将之前搭建的URule Pro4.x项目下classpath里创建的是名为**urule-init.properties**的配置文件复制到当前项目的classpath中,文件复制过来后不需要做任何修改可直接使用。

到这里添加urule-pro-migration包的工作就完成了。

执行项目迁移操作

在老项目中添加好urule-pro-migration包后,启动老项目,项目启动成功后,打开浏览器,访问**urule/migration**这个URL,就可以看到项目迁移页面。

选择要迁移的项目,再选择好目标团队,点击下面的导入按钮,即可实现将老项目迁移到URule Pro4.x项目的数据库当中。

迁移时,如果老项目较大,项目中规则文件很多,迁移时可能需要较长时间,请耐心等待。

注意:迁移操作会将老项目中所有的文件以及知识包导入到新项目的数据库中,但迁移操作不会将老项目中文件的版本信息以及已发布的知识包信息导入到新项目的数据库中。

项目迁移完成后,运行之前搭建的URule Pro4.x+项目,用注册的账号登录,进入指定的团队,就可以看到从老版本中迁入的项目。

老项目迁入到新版本中后,会创建所有的相关规则文件及知识包,需要注意的是URule Pro4.x+中知识包需要发布然后才能使用,而从老项目中导入的知识包,默认都是未发布的,不能直接调用,所以还需要走发布流程才能调用。

项目迁移常见错误处理

如果执行项目迁移时报【CODE】字段不能为空,可暂时将规则引擎数据库的【urule_packet】表的【CODE】字段设置为允许为空字段,导入完成后,在URule Pro4中将知识包的【CODE_】编码补填好。

results matching ""

    No results matching ""