盘古BPM体验地址    盘古BPM交流群盘古BPM交流群号:963222735

《Flowable基础十一 Flowable jmx》

分享牛 2449℃

19.1. JMX

19.1.1. 介绍 Introduction

可以使用标准Java管理扩展(JMX)技术连接Flowable引擎,以获取信息或改变其行为。可以使用任何标准的JMX客户端。启用与禁用作业执行器、部署新的流程定义文件或删除它们等等操作,都可以通过JMX完成,而不需要写一行代码。

19.1.2. 快速开始 Quick Start

默认情况下没有启用JMX。要使用默认配置启动它,只要使用Maven或其他方法,将flowable-jmx jar文件加入classpath即可。如果使用Maven,可以在pom.xml中添加下列行以添加合适的依赖:

<dependency>
  <groupId>org.flowable</groupId>
  <artifactId>flowable-jmx</artifactId>
  <version>latest.version</version>
</dependency>

在添加依赖并构建流程引擎后,就可以使用JMX连接了。可以使用在标准JDK发行版中提供的jconsole。在本地线程列表中,可以看到包含Flowable的JVM。如果由于任何原因没有在“本地进程”中列出合适的JVM,可以尝试使用这个URL从“远程进程”中连接:

service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi/flowable

可以在日志文件中找到正确的本地URL。连接之后,可以看到标准JVM状态与MBeans。可以选择MBeans页签,并在右侧面板选择"org.flowable.jmx.Mbeans",以浏览Flowable专用的MBean。选择任何MBean,都可以查询信息或修改配置。这个截图展示了jconsole的样子:

(原图缺失)

不只是jconsole,任何JMX客户端都可以访问MBeans。大多数数据中心监控工具都有可以连接至JMX MBeans的连接器。

19.1.3. 属性与操作 Attributes and operations

这里有一个目前可用的属性与操作的列表。这个列表可能根据需要在未来版本中扩展。

MBean 类型 名字 描述

ProcessDefinitionsMBean

属性

processDefinitions

已部署流程定义的Id, Name, Version, IsSuspended参数,是一个字符串的list

属性

deployments

当前部署的Id, Name, TenantId参数

方法

getProcessDefinitionById(String id)

给定id流程定义的+Id+, Name, VersionIsSuspended参数

方法

deleteDeployment(String id)

使用给定Id删除部署

方法

suspendProcessDefinitionById(String id)

使用给定Id暂停流程定义

方法

activatedProcessDefinitionById(String id)

使用给定Id激活流程定义

方法

suspendProcessDefinitionByKey(String id)

使用给定key暂停流程定义

方法

activatedProcessDefinitionByKey(String id)

使用给定key激活流程定义

方法

deployProcessDefinition(String resourceName, String processDefinitionFile)

部署流程定义文件

JobExecutorMBean

属性

isJobExecutorActivated

作业执行器是否启用

方法

setJobExecutorActivate(Boolean active)

按照给定boolean值启用或禁用作业执行器

19.1.4. 配置 Configuration

JMX使用最常使用的配置作为默认配置来简化部署。然而也可以很容易的修改默认配置,可以通过编程方式,或通过配置文件。下列代码展示了如何在配置文件中配置:

<bean id="processEngineConfiguration" class="...SomeProcessEngineConfigurationClass">
  ...  <property name="configurators">
    <list>
	  <bean class="org.flowable.management.jmx.JMXConfigurator">

	    <property name="connectorPort" value="1912" />
        <property name="serviceUrlPath" value="/jmxrmi/flowable" />

		...      </bean>
    </list>
  </property></bean>

下表展示了可配置的参数与其默认值:

名字 默认值 描述

disabled

false

若值为true,即使已添加依赖也不会启动JMX

domain

org.flowable.jmx.Mbeans

MBean的域

createConnector

true

若值为true,则为已启动的MbeanServer创建一个连接器

MBeanDomain

DefaultDomain

MBean服务器的域

registryPort

1099

出现在服务URL中作为注册端口

serviceUrlPath

/jmxrmi/flowable

出现在服务URL中

connectorPort

-1

如果大于0,则出现在服务URL中作为连接端口

19.1.5. JMX服务URL (JMX Service URL)

JMX服务URL为下列格式:

service:jmx:rmi://<hostName>:<connectorPort>/jndi/rmi://<hostName>:<registryPort>/<serviceUrlPath>

hostName会自动设置为机器的网络名。可以配置connectorPortregistryPortserviceUrlPath

如果connectionPort小于0,则服务URL中没有对应的部分,简化为:

service:jmx:rmi:///jndi/rmi://:<hostname>:<registryPort>/<serviceUrlPath>

19.2. Maven原型 Maven archetypes

19.2.1. 创建测试用例 Create Test Case

在开发过程中,有时在应用中实际实现前,创建一个小测试用例来测试想法或功能很有用,因为这样可以用测试来隔离主题。JUnit测试用例也是交流bug报告与功能需求的推荐工具。在一份bug报告或功能需求jira单中附加一个测试用例,可以有效减少修复时间。

为了便于创建测试用例,可以使用maven原型。通过使用这个原型,可以快速创建标准测试用例。原型应该在标准仓库中已经有了。如果没有,可以简单的安装在你的本地maven仓库目录中:在tooling/archtypes目录下键入mvn install

下列命令创建单元测试项目:

mvn archetype:generate \
-DarchetypeGroupId=org.flowable \
-DarchetypeArtifactId=flowable-archetype-unittest \
-DarchetypeVersion=<current version> \
-DgroupId=org.myGroup \
-DartifactId=myArtifact

每个参数的效果在下表解释:

Table 264. 单元测试生成原型参数
参数 解释

1

archetypeGroupId

原型的Group id。需要为org.flowable

2

archetypeArtifactId

原型的Artifact id。需要为flowable-archetype-unittest

3

archetypeVersion

生成的测试项目中使用的Flowable版本

4

groupId

生成的测试项目的Group id

5

artifactId

生成的测试项目的Artifact id

生成的项目的目录结构像是这样:

.
├── pom.xml
└── src
    └── test
        ├── java
        │   └── org
        │       └── myGroup
        │           └── MyUnitTest.java
        └── resources
            ├── flowable.cfg.xml
            ├── log4j.properties
            └── org
                └── myGroup
                    └── my-process.bpmn20.xml

可以修改java单元测试用例与其对应的流程模型,或者添加新的单元测试用例与流程模型。如果使用该项目来表述一个bug或功能,测试用例应该在初始时失败,然后在修复了预期的bug或实现了预期的功能以后成功。请确保在发送之前键入mvn clean清理项目。

转载请注明:分享牛 » 《Flowable基础十一 Flowable jmx》