JBoss 系列一 O O:Maven jBPM 6 集成示例
来源:互联网 发布:万科荣华金域名城地址 编辑:程序博客网 时间:2024/04/27 19:39
概述
jBPM 6 中底层架构基于 Maven,所以我们可以很容易的进行 Maven jBPM 6 集成示例,本文分三个部分:
- 基本原理介绍
- Maven jBPM 6 集成
- jBPM 6 中使用 Maven 特性实时监听服务器端的更新
基本原理介绍
如下图
如图所示,我们有两台服务器,jBPM 6 服务器和客户端服务器:
- 首先 jBPM 6 服务器如果我们通过 Work Bench 将编辑完成的流程打包发布,它会将其发布到 jBPM 6 服务器对应的 Maven 仓库,这个仓库相比较客户端的应用它属于一个远程仓库。它对外提供的URL为:http://IP:8080/<app name>/maven2/,它需要安全认证,不是默认公开的仓库
- 客户端服务器中运行的App它在内存中保存有一个 KieRepository,这个内存仓库通过本地参考可以与远程 jBPM 6 服务器的仓库保持实时更新
- 本地仓库通过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 服务器运行的Maven Repo为 http://10.66.218.46:8080/business-central/maven2/
- 远程 jBPM 6 服务器所需要的安全认证为 admin 和 password1!
- 我们配置Maven 新版本发布会自动更新,snapshots的最新版本也会自动更新
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 特性实时监听服务器端的更新
借助于 Maven 的特性,KieScanner 可以周期性的扫描远程jBPM 6 服务器运行的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 中的流程或规则文件,客户端的程序不要任何变化会运行远端的变化。关于这一部分的深入原理参照 https://github.com/kylinsoong/jBPM-Drools-Example/blob/master/drools-6-examples/kie-mvn/kie-mvn-architecture.md
0 0
- JBoss 系列一 O O:Maven jBPM 6 集成示例
- JBoss 系列九十四:Spring jBPM 6 集成示例
- JBoss 系列九十九:Rest WebService jBPM 6 集成示例
- JBoss 系列七十五: jBPM 6 示例之 rewards
- JBoss 系列七十六: jBPM 6 示例之 rewards-basic
- JBoss 系列七十九: jBPM 6 示例之 evaluation
- JBoss 系列七十一:jBPM 6 发布,快速安装,新功能介绍
- JBoss 系列七十三:jBPM 6 开发 eclipse 插件安装
- JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程
- [JBoss]一个JBPM工作流管理示例
- JBoss 系列八十: jBPM 6 中使用 jbpm-console 创建执行 BPM 流程 - I
- JBoss 系列八十一: jBPM 6 中使用 jbpm-console 创建执行 BPM 流程 - II
- JBPM学习(一):eclipse集成JBPM
- JBPM学习(一):eclipse集成JBPM
- JBoss JBPM 实践系列(一)--- 安装配置(Tomcat 6.0 + MySQL 5.1)
- [O
- o,
- o
- 用Go语言搭建类似阅FM的阅读网站
- 7大排序算法的实现
- java中 第六章 数组和字符串 学习笔记
- linux 下 读取某个文件的某一行或者某几行
- Nexus
- JBoss 系列一 O O:Maven jBPM 6 集成示例
- PyQt4 精彩实例分析* 实例4 使用标准输入框
- 测试ubuntu安装sphinx及配置集成到magento产品搜索
- 3. 标示符
- a network error occurred while attempting to read the file..
- LeetCode_LRU Cache(待完善)
- left join的一种用法
- 字符串匹配算法(KMP、BM和Sunday),及Python实现
- 图像处理笔记(1)《DM432视频图像灰度化》