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==/dissolve/70/gravity/SouthEast" />

如图所看到的,我们有两台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

时间: 2024-08-25 02:12:17

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

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 仓库,这个仓库相比较客户端的应用

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

[hadoop系列]Pig的安装和简单演示样例

inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish ).(来源:http://blog.csdn.net/inkfish) Pig是Yahoo!捐献给Apache的一个项目,眼下还在Apache孵化器(incubator)阶段,眼下版本号是v0.5.0.Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-like语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运

jbpm入门样例

1.      jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jboss.com/products/jbpm 2.      jBPM和myeclipse的冲突 当eclipse安装了myeclipse和jBPM时候,可能有冲突,详细表如今jBPM的流程设计器不能在eclipse中使用. 3.      Hibernate连接mysql数据库的一般參数 以下的配置參数,依据

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 - 服务注册接口,可根据服务名获取一个服务,或获取所

Spring Boot入门样例-001-Java和Maven安装配置

Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring Boot入门样例-001-Java和Maven安装配置 Spring Boot入门样例-003-idea 安装配置和插件 Spring Boot入门样例-005-如何运行 1. 下载 下载地址:https://www.oracle.com/technetwork/java/javase/downloa

互联网金融系列-支付清算体系样例-下

笔者上一篇<互联网金融系列-支付清算体系介绍-上>已经比較全面的介绍了以银联为样例的支付清算体系,为了更好的理解里面的运作.本章以两个样例为重点,全面剖析整个清算的过程. 1,记账原则 这块跟会计相关.不清楚的同学能够先看一下笔者之前的文章<第三方支付架构设计之-账户体系>.在会计学上,须要分清楚一个概念:会计主体.简言之,就是会计信息体现或者代表谁的经济利益,代表给谁做的账.做帐的人不一定是会计主体,比方替别人做帐. 在參与清算的各个主体来说.他们首先须要在央行开立清算账户或者在