概述

jBPM 6 中底层架构基于 Maven,所以我们能够非常easy的进行 Maven jBPM 6 集成演示样例,本文分三个部分:

  • 基本原理介绍
  • Maven jBPM 6 集成
  • jBPM 6 中使用 Maven 特性实时监听server端的更新

基本原理介绍

例如以下图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3lsaW5zb29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

如图所看到的,我们有两台server,jBPM 6 server和clientserver:

  • 首先 jBPM 6 server假设我们通过 Work Bench 将编辑完毕的流程打包公布,它会将其公布到 jBPM 6 server相应的 Maven 仓库。这个仓库相比較client的应用它属于一个远程仓库。它对外提供的URL为:http://IP:8080/<app name>/maven2/。它须要安全认证,不是默认公开的仓库
  • clientserver中执行的App它在内存中保存有一个 KieRepository,这个内存仓库通过本地參考能够与远程 jBPM 6 server的仓库保持实时更新
  • 本地仓库通过Maven与远程仓库同步,我们须要在settings.xml中配置远程仓库的信息

Maven jBPM 6集成

Maven jBPM 6集成实际上就简化为 Maven settings.xml的配置问题。

例如以下配置

<?

xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers>
<server>
<id>guvnor-m2-repo</id>
<username>admin</username>
<password>password1!</password>
<configuration>
<wagonProvider>httpclient</wagonProvider>
<httpConfiguration>
<all>
<usePreemptive>true</usePreemptive>
</all>
</httpConfiguration>
</configuration>
</server>
</servers> <profiles> <profile>
<id>guvnor-m2-repo</id>
<repositories>
<repository>
<id>guvnor-m2-repo</id>
<name>BRMS Repository</name>
<url>http://10.66.218.46:8080/business-central/maven2/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile> </profiles> <activeProfiles>
<activeProfile>guvnor-m2-repo</activeProfile>
</activeProfiles> </settings>

如上为一配置演示样例,我们能够看出

  • 远程 jBPM 6 server执行的Maven Repo为 http://10.66.218.46:8080/business-central/maven2/
  • 远程 jBPM 6 server所须要的安全认证为 admin 和 password1!
  • 我们配置Maven 新版本号公布会自己主动更新。snapshots的最新版本号也会自己主动更新

有如上配置,例如以下代码能够执行获取远程 jBPM 6 server仓库中的流程等:

		KieServices kServices = KieServices.Factory.get();
ReleaseId releaseId = kServices.newReleaseId( "com.redhat.gss", "01081954", "1.1-SNAPSHOT" );
KieContainer kContainer = kServices.newKieContainer( releaseId );
KieBase kbase = kContainer.getKieBase();
KieSession ksession = kbase.newKieSession();

如上代码执行能够须要三种方式指定 settings.xml:

  • 通过JVM properties kie.maven.settings.custom 指定 Maven 配置文件 settings.xml
  • 到当前用户下找 .m2/settings.xml
  • 到 M2_HOME 下找 /conf/settings.xml

jBPM 6 中使用 Maven 特性实时监听server端的更新

借助于 Maven 的特性,KieScanner 能够周期性的扫描远程jBPM 6 server执行的Maven Repo。当有远程公布有变更时。KieScanner 会自己主动更新 KieRepository,使其为最新的公布,例如以下代码

		KieServices kServices = KieServices.Factory.get();
ReleaseId releaseId = kServices.newReleaseId( "org.kie.example", "project1", "1.0.0-SNAPSHOT" );
KieContainer kContainer = kServices.newKieContainer( releaseId );
KieScanner kScanner = kServices.newKieScanner( kContainer );
kScanner.start( 1000 * 10); while(true) {
KieSession ksession = kContainer.newKieSession();
ksession.fireAllRules(); Thread.sleep(10000);
}

假设我们更新远程 project1 中的流程或规则文件。client的程序不要不论什么变化会执行远端的变化。

关于这一部分的深入原理參照 https://github.com/kylinsoong/jBPM-Drools-Example/blob/master/drools-6-examples/kie-mvn/kie-mvn-architecture.md

最新文章

  1. LEfSe分析
  2. 字符串与json对象之间转换
  3. js切换不同的div的颜色
  4. Gridview转发
  5. ArcGIS学习推荐
  6. 比较compareTo与equals及==的区别
  7. JSON WEB TOKENS
  8. RGPJS 教程之八 创造场景
  9. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-012-AOP总结
  10. webapi 上传图片
  11. Mysql数据库乱码与编码问题筛查
  12. /usr/bin/python^M: 解释器错误: 没有那个文件或目录
  13. ionic2 安装与cordova打包
  14. #Java学习之路——第一部分总结
  15. 【jdbc】连接数据库从浅入深
  16. css3的transform,translate和transition之间的区别与作用
  17. 任务(task)
  18. WEBBASE篇: 第二篇, HTML知识2
  19. 修改Ubuntu从文本界面登录
  20. mvc拦截请求IHttpModule

热门文章

  1. Ionic Js三:下拉刷新
  2. 取得项目的 Git 仓库
  3. 洛谷P2597 [ZJOI2012] 灾难 [拓扑排序,LCA]
  4. php缓存类 内置output_buffer(ob)
  5. Codeforces Round #494 (Div 3) (A~E)
  6. BZOJ 1174 [Balkan2007]Toponyms(Trie)
  7. mysql_connect的$new_link参数
  8. OpenGL ES 3.0 图元装配
  9. HDU 5715 XOR 游戏 二分+字典树
  10. Codeforces Round #254 (Div. 1) C. DZY Loves Colors 分块