JBoss 系列一 O O:Maven jBPM 6 集成示例

概述

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的最新版本也会自动更新

有如上配置,如下代码可以运行获取远程 jBPM 6 服务器仓库中的流程等:

		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

JBoss 系列一 O O:Maven jBPM 6 集成示例,布布扣,bubuko.com

时间: 2024-10-14 21:18:57

JBoss 系列一 O O:Maven jBPM 6 集成示例的相关文章

JBoss 系列一 O O:Maven jBPM 6 集成演示样例

概述 jBPM 6 中底层架构基于 Maven,所以我们能够非常easy的进行 Maven jBPM 6 集成演示样例,本文分三个部分: 基本原理介绍 Maven jBPM 6 集成 jBPM 6 中使用 Maven 特性实时监听server端的更新 基本原理介绍 例如以下图 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva3lsaW5zb29uZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss

JBoss 系列九十九:Rest WebService jBPM 6 集成示例

概述 jBPM 6 提供 Rest API 供第三方应用整合使用 jBPM 6,本文演示如果通过 Rest API: 启动流程 获取流程实例信息 启动 User Task 完成 User Task jBPM 6 中使用 RestEasy 实现 Rest WebService ,所以我们通过 Rest 客户端 API 与 jBPM 6 所提供的 Rest API 交互. 本文所使用的流程如下 如上流程只有一个 User Task 节点,User Task 执行开始和执行结束都输出相关提示.流程 I

JBoss 系列九十七:JBoss MSC - 浅析 ServiceName

概述 JBoss MSC 是WildFly 8 和 JBoss 7的底层容器.它管理 JBoss 中的所有 Service,JBoss 中的每一个Service都有一个名字,JBoss MSC通过 ServiceName 对象来抽象Service的名字,ServiceName 代吗链接:ServiceName.java,类图如下: 树状结构 WildFly 中的一切都是一个Service,每个 Service 都有一个名字,Service 之间有树形关系,所以 ServiceName 也是树状结

JBoss 系列九十八:JBoss MSC - 浅析 ServiceContainer

ServiceContainer 接口类图 ServiceContainer 接口类图如下所示: 如图: ServiceContainer - ServiceContainer 即是 JBoss MSC 的抽象,它抽象的是一个模块化的容器,它设计用来管理一系列服务 ServiceTarget - 提供了添加服务,添加依赖等方法,另外这些添加只有在ServiceBuilder 的 install() 方法后才生效 ServiceRegistry - 服务注册接口,可根据服务名获取一个服务,或获取所

JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MSC 替换了之前的 JMX Kernel 和 MicroContainer,它主要特定能够总结例如以下三点: 高并发容器(A highly concurrent state machine) 无多相位,设计简单(No multiple phases, much simpler) 不依赖 JMX 和 J

Maven实战(四)——基于Maven的持续集成实践

Martin的<持续集成> 相信非常多读者和我一样.最早接触到持续集成的概念是来自Martin的著名文章<持续集成>.该文最早公布于2000年9月,之后在2006年进行了一次修订.它清晰地解释了持续集成的概念.并总结了10条实践,它们分别为: 仅仅维护一个源代码仓库 自己主动化构建 让构建自行測试 每人每天向主干提交代码 每次提交都应在持续集成机器上构建主干 保持高速的构建 在模拟生产环境中測试 让每一个人都能轻易获得最新的可运行文件 每一个人都能看到进度 自己主动化部署 原始文章

springMVC系列之(三) spring+springMVC集成(annotation方式)

个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助.不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想.实践出真知. 1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用

asp.net core系列 69 Amazon S3 资源文件上传示例

原文:asp.net core系列 69 Amazon S3 资源文件上传示例 一.  上传示例 Amazon Simple Storage Service 是互联网存储解决方案.该服务旨在降低开发人员进行网络规模级计算的难度. Amazon S3 提供了一个简单 Web 服务接口,可用于随时在 Web 上的任何位置存储和检索任何数量的数据.此服务让所有开发人员都能访问同一个具备高扩展性.可靠性.安全性和快速价廉的数据存储基础设施, Amazon 用它来运行其全球的网站网络.此服务旨在为开发人员

JBOSS系列--集群--基础配置(1)--客户端

一.什么是集群? 集群是一组计算机节点的集合,作为一个整体向用户提供一组网络资源.理想的集群对用户是透明的,用户由单一入口访问集群的资源,不会意识到集群的存在.集群可以随意添加节点也可以随意减少节点,这样不会影响用户的访问. 二.JBOSS的Domain模式与Standalone模式 Standalone Mode是机器单进程方式,配置部署简单,适用于一般单服务器项目:Domain Mode是多机器多进程方式,配置稍微复杂,适用于大型分布式项目. Domain模式解决了统一管理多台Jboss的问