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 |
已部署流程定义的 |
属性 |
deployments |
当前部署的 |
|
方法 |
getProcessDefinitionById(String id) |
给定id流程定义的+Id+, |
|
方法 |
deleteDeployment(String id) |
使用给定 |
|
方法 |
suspendProcessDefinitionById(String id) |
使用给定 |
|
方法 |
activatedProcessDefinitionById(String id) |
使用给定 |
|
方法 |
suspendProcessDefinitionByKey(String id) |
使用给定 |
|
方法 |
activatedProcessDefinitionByKey(String id) |
使用给定 |
|
方法 |
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
会自动设置为机器的网络名。可以配置connectorPort
、registryPort
与serviceUrlPath
。
如果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
每个参数的效果在下表解释:
行 | 参数 | 解释 |
---|---|---|
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》