[jbpm-commits] JBoss JBPM SVN: r5611 - in projects/jopr-integration/trunk: src/main/java/org/rhq/plugins/jbpm4 and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Tue Sep 1 05:02:39 EDT 2009
Author: jim.ma
Date: 2009-09-01 05:02:39 -0400 (Tue, 01 Sep 2009)
New Revision: 5611
Modified:
projects/jopr-integration/trunk/pom.xml
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessEngineComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceDiscoveryComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java
projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml
Log:
Added average instance duration for JBPM enginge component: Added the processInstancesSelector operation
Modified: projects/jopr-integration/trunk/pom.xml
===================================================================
--- projects/jopr-integration/trunk/pom.xml 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/pom.xml 2009-09-01 09:02:39 UTC (rev 5611)
@@ -63,6 +63,12 @@
<artifactId>jbpm-jpdl</artifactId>
<version>4.0-SNAPSHOT</version>
<scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.integration</groupId>
+ <artifactId>jboss-integration</artifactId>
+ <version>5.0.3.GA</version>
+ <type>pom</type>
</dependency>
</dependencies>
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -93,13 +93,22 @@
report.addData(value);
}
- if (request.getName().equals("avgPerProcessInstanceDuration")) {
+ if (request.getName().equals("avgDuration")) {
String duration = StringUtil
.replaceNull(getAverageProcessInstanceDuration());
MeasurementDataTrait value = new MeasurementDataTrait(request,
duration);
report.addData(value);
}
+ if (request.getName().equals("processInstanceNum")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request, String.valueOf(getProcessInstanceNumber()));
+ report.addData(value);
+ }
+ if (request.getName().equals("endedProcessInstanceNum")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request, String.valueOf(getEndedProcessInstanceNumber()));
+ report.addData(value);
+ }
+
}
}
@@ -150,12 +159,28 @@
}
return null;
}
+
+ public int getProcessInstanceNumber() {
+ List<ProcessInstance> instances = this.jbpmConnection
+ .getProcessInstances(this.getResourceKey(), null, null, null);
+ return instances.size();
+ }
+
+ public int getEndedProcessInstanceNumber() {
+ List<HistoryProcessInstance> instances = this.jbpmConnection
+ .getHistoryProcessInstances(null, this.getResourceKey(), HistoryProcessInstance.STATE_ENDED, null);
+ return instances.size();
+ }
+
public OperationResult invokeOperation(String name, Configuration parameters) throws InterruptedException, Exception {
OperationResult result = null;
if (name.equals("historyProcessInstanceSelector")) {
result = queryHistoryProcessInstances(parameters);
}
+ if (name.equals("processInstanceSelector")) {
+ result = queryProcessInstances(parameters);
+ }
return result;
}
@@ -200,4 +225,53 @@
return result;
}
+ public OperationResult queryProcessInstances(Configuration parameters) {
+ OperationResult result = new OperationResult();
+ String instanceId = null;
+ String instanceState = null;
+ PropertySimple processInstanceIdProp = parameters.getSimple("processInstanceId");
+ if (processInstanceIdProp.getStringValue() != null) {
+ instanceId = processInstanceIdProp.getStringValue();
+ }
+
+
+ PropertySimple firstResult = parameters.getSimple("firstResult");
+ Page page = null;
+ if (firstResult.getIntegerValue() != null) {
+ PropertySimple maxResults = parameters.getSimple("maxResults");
+ int first = firstResult.getIntegerValue();
+ int max = maxResults.getIntegerValue() != null ? maxResults.getIntegerValue() : 50;
+ page = new Page(first, max);
+ }
+
+
+ PropertySimple state = parameters.getSimple("state");
+ if (state.getStringValue() != null) {
+ instanceState = state.getStringValue();
+ }
+
+ List<ProcessInstance> instances = jbpmConnection.getProcessInstances(this.getResourceKey(), instanceId, instanceState, page);
+ PropertyList resultInstances = new PropertyList("resultInstances");
+ result.getComplexResults().put(resultInstances);
+
+ for (ProcessInstance instance : instances) {
+
+ PropertyMap map = new PropertyMap("instance");
+ PropertySimple id = new PropertySimple("id", instance.getId());
+ PropertySimple name = new PropertySimple("name", StringUtil.replaceNull(instance.getName()));
+ PropertySimple definitionID = new PropertySimple("processDefinitionId", instance.getProcessDefinitionId());
+ PropertySimple stateProp = new PropertySimple("state", instance.getState());
+ PropertySimple priority = new PropertySimple("priority", StringUtil.replaceNull(instance.getPriority()));
+ map.put(id);
+ map.put(name);
+ map.put(definitionID);
+ map.put(stateProp);
+ map.put(priority);
+ resultInstances.add(map);
+
+ }
+ return result;
+ }
+
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessEngineComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessEngineComponent.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessEngineComponent.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -4,9 +4,12 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
+import java.util.List;
import java.util.Set;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.history.HistoryProcessInstance;
import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
@@ -39,6 +42,7 @@
private ResourceContext resourceContext = null;
private JBPMEngineConnection jbpmConnection = null;
private JBPMEngineConnector processEngineConnector = null;
+ private long instancesPerMin = 0l;
public void start(ResourceContext context) {
super.start(context);
resourceContext = context;
@@ -74,10 +78,37 @@
if (request.getName().equals("processInstancNumber")) {
MeasurementDataTrait value = new MeasurementDataTrait(request,
- StringUtil.replaceNull(this.jbpmConnection.getAllProcessInstance().size()));
+ StringUtil.replaceNull(this.jbpmConnection.getProcessInstances(null, null, null, null).size()));
report.addData(value);
}
+
+ if (request.getName().equals("endedProcessInstancNumber")) {
+
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
+ StringUtil.replaceNull(this.jbpmConnection.getHistoryProcessInstances(null, null, HistoryProcessInstance.STATE_ENDED, null).size()));
+ report.addData(value);
+ }
+
+
+ if (request.getName().equals("avgProcessInstanceDuration")) {
+ long duration = this.getAverageProcessInstanceDuration();
+ instancesPerMin = 60 * 3600 / duration;
+ MeasurementDataTrait value = new MeasurementDataTrait(request, StringUtil.replaceNull(duration));
+ report.addData(value);
+ }
+
+ if (request.getName().equals("processInstancesPerMin")) {
+ String number = "--";
+ if (instancesPerMin != 0L) {
+ Long longNum = new Long(instancesPerMin);
+ number = String.valueOf(longNum.intValue());
+ }
+ MeasurementDataTrait value = new MeasurementDataTrait(request, number);
+ report.addData(value);
+ }
+
+
if (request.getName().equals("jobsNumber")) {
MeasurementDataTrait value = new MeasurementDataTrait(request,
@@ -171,4 +202,18 @@
}
+ private Long getAverageProcessInstanceDuration() {
+ List<HistoryProcessInstance> instances = this.jbpmConnection
+ .getHistoryProcessInstances(null, null,
+ ProcessInstance.STATE_ENDED, null);
+ Long sumDuration = 0L;
+ for (HistoryProcessInstance instance : instances) {
+ sumDuration = sumDuration + instance.getDuration();
+ }
+ if (sumDuration > 0) {
+ return sumDuration / instances.size();
+ }
+ return null;
+ }
+
}
\ No newline at end of file
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceComponent.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceComponent.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -21,6 +21,7 @@
*/
package org.rhq.plugins.jbpm4;
+import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -49,8 +50,10 @@
public void start(ResourceContext<ProcessDefComponent> resourceContext) {
instanceId = resourceContext.getResourceKey();
jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- instance = jbpmConnection.getProcessInstance(instanceId);
-
+ List<ProcessInstance> instances = jbpmConnection.getProcessInstances(null, instanceId, null, null);
+ if (instances.size() > 0) {
+ instance = instances.get(0);
+ }
}
public void stop() {
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceDiscoveryComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceDiscoveryComponent.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceDiscoveryComponent.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -39,8 +39,8 @@
ResourceDiscoveryContext<ProcessDefComponent> context) {
Set<DiscoveredResourceDetails> jbpmDefs = new java.util.HashSet<DiscoveredResourceDetails>();
- ProcessDefComponent defComponent = context.getParentResourceComponent();
- List<ProcessInstance> instances = defComponent.getJBPMConnection().getProcessInstances(context.getParentResourceContext().getResourceKey());
+ ProcessDefComponent defComponent = context.getParentResourceComponent();
+ List<ProcessInstance> instances = defComponent.getJBPMConnection().getProcessInstances(context.getParentResourceContext().getResourceKey(), null, null, null);
for (ProcessInstance instance: instances) {
DiscoveredResourceDetails details = new DiscoveredResourceDetails(context.getResourceType(), String.valueOf(instance.getProcessInstance().getId()), instance.getId(), null, instance.getId(), null, null);
jbpmDefs.add(details);
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -21,6 +21,7 @@
*/
package org.rhq.plugins.jbpm4;
+import java.util.List;
import java.util.Set;
import org.apache.commons.logging.Log;
@@ -111,8 +112,8 @@
public AvailabilityType getAvailability() {
- ProcessInstance processInstance = getJBPMConnection().getProcessInstance(this.resourceContext.getParentResourceComponent().getResourceKey());
- if (processInstance != null) {
+ List<ProcessInstance> processInstances = getJBPMConnection().getProcessInstances(null, this.resourceContext.getParentResourceComponent().getResourceKey(), null, null);
+ if (processInstances.size() > 0) {
return AvailabilityType.UP;
}
return AvailabilityType.DOWN;
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -38,23 +38,36 @@
*
*/
public interface JBPMEngineConnection {
+ //the deployment api
+ void deleteDeployment(String deploymentId);
+ List<Deployment> getDeployments();
+ Deployment getDeployment(String deploymentId);
+ void suspendDeployment(String deploymentId);
+ void resumeDeployment(String deploymentId);
+ String deployProcess(File processFile) throws Exception;
+
+ //definition api
List<ProcessDefinition> getProcessDefs();
ProcessDefinition getProcessDefById(String id);
- String deployProcess(File processFile) throws Exception;
- void deleteDeployment(String deploymentId);
- List<ProcessInstance> getAllProcessInstance();
- List<ProcessInstance> getProcessInstances(String defId);
- ProcessInstance getProcessInstance(String instanceId);
+
+
+ //process instance api
+ List<ProcessInstance> getProcessInstances(String defId, String processInstanceId, String state, Page page);
void deleteProcessInstance(String instanceId);
ProcessInstance startProcessInstance(String defId);
- List<Deployment> getDeployments();
- Deployment getDeployment(String deploymentId);
+
+ //Job api
public List<Job> queryJob(boolean timerOnly , boolean messageOnly, boolean exception, String processInstanceId);
Job getJob(String jobId);
+ Job executeJob(String jobDbid);
+
+ //Activity api
Map<String, Long> avgDurationPerActivity(String processDefinitionId);
- Job executeJob(String jobDbid);
+
+ //History process instance api
List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state, Page page);
+
+ //Task api
List<Task> getTasks(String definitionId, String processInstanceId);
- void suspendDeployment(String deploymentId);
- void resumeDeployment(String deploymentId);
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-09-01 09:02:39 UTC (rev 5611)
@@ -40,6 +40,7 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.ProcessInstanceQuery;
import org.jbpm.api.TaskQuery;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.history.HistoryProcessInstanceQuery;
@@ -170,8 +171,28 @@
return deployment.deploy();
}
- public List<ProcessInstance> getProcessInstances(String defId) {
- return processEngine.getExecutionService().createProcessInstanceQuery().processDefinitionId(defId).list();
+ public List<ProcessInstance> getProcessInstances(String defId, String processInstanceId, String state, Page page) {
+ ProcessInstanceQuery query = processEngine.getExecutionService().createProcessInstanceQuery();
+ if (defId != null) {
+ query.processDefinitionId(defId);
+ }
+ if (processInstanceId != null) {
+ query.processInstanceId(processInstanceId);
+ }
+ if (state != null && state.equals(ProcessInstance.STATE_SUSPENDED)) {
+ query.suspended();
+ }
+
+ if (state != null && (!state.equals(ProcessInstance.STATE_SUSPENDED))) {
+ query.notSuspended();
+ }
+
+ if (page != null) {
+ query.page(page.firstResult, page.maxResults);
+ }
+
+ return query.list();
+
}
public ProcessInstance getProcessInstance(String instanceId) {
return processEngine.getExecutionService().createProcessInstanceQuery().processInstanceId(instanceId).uniqueResult();
Modified: projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml
===================================================================
--- projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-08-31 16:48:14 UTC (rev 5610)
+++ projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-09-01 09:02:39 UTC (rev 5611)
@@ -28,9 +28,22 @@
<metric property="deployedProcessNumber" dataType="measurement"
displayType="summary" defaultOn="true" description="Deployed process number" />
+
<metric property="processInstancNumber" dataType="measurement"
displayType="summary" defaultOn="true"
description="Process instances number includes started and suspended" />
+
+ <metric property="endedProcessInstancNumber" dataType="measurement"
+ displayType="summary" defaultOn="true"
+ description="The number of ended process instances" />
+
+ <metric property="avgProcessInstanceDuration" dataType="measurement"
+ displayType="summary" defaultOn="true"
+ description="The average duration of process instance" />
+
+ <metric property="processInstancesPerMin" dataType="measurement"
+ displayType="summary" defaultOn="true"
+ description="The number of process instances that JBPM engin processed" />
<metric property="jobsNumber" dataType="measurement"
displayType="summary" defaultOn="true" description="the number of normal jobs" />
@@ -139,17 +152,16 @@
</c:map-property>
</c:list-property>
</results>
- </operation>
-
- <operation name="processInstanceSelector" displayName="processInstanceSelector"
- description="lists the process instances">
+ </operation>
+ <operation name="processInstanceSelector" displayName="processInstanceSelector"
+ description="Lists the process instance for the given condition">
<parameters>
- <c:simple-property name="duration" displayName="durationLargeThan" type="long" required="false" description="the duration value large than this"/>
- <c:simple-property name="state" displayName="state" type="string" required="false" default="ended"
+ <c:simple-property name="processInstanceId" displayName="processInstanceId" type="string" required="false" description="process instance id"/>
+ <c:simple-property name="state" displayName="state" type="string" required="false" default="notsuspended"
description="the process instance state">
<c:property-options>
- <c:option value="ended" name="Ended" default="true"/>
- <c:option value="active" name="Active"/>
+ <c:option value="suspended" name="suspended" default="true"/>
+ <c:option value="notSuspended" name="notSuspended"/>
</c:property-options>
</c:simple-property>
<c:simple-property name="firstResult" displayName="firstResult" type="integer" required="false" description="the index of first result"/>
@@ -158,19 +170,17 @@
<results>
<c:list-property name="resultInstances" readOnly="true" required="false" displayName="Process Instances Result"
- description="In this list you can review the process instance which duration is large than the select value">
+ description="In this list you can review the process instance ">
<c:map-property name="instance" readOnly="true">
<c:simple-property readOnly="true" name="id" displayName="id" description="ID"/>
- <c:simple-property readOnly="true" name="definitionId" required="false" displayName="DefinitionId" description="Process DefinitionId"/>
- <c:simple-property readOnly="true" name="startTime" required="false" displayName="StartTime" description="Time of the process instance starts"/>
- <c:simple-property readOnly="true" name="endTime" required="false" displayName="EndTime" description="Time of the process instance ends"/>
- <c:simple-property readOnly="true" name="duration" required="false" displayName="Duration" description="Process instance duration"/>
- <c:simple-property readOnly="true" name="state" required="false" displayName="State" description="The process Instance State"/>
+ <c:simple-property readOnly="true" name="name" required="false" displayName="Name" description="Process instance name"/>
+ <c:simple-property readOnly="true" name="processDefinitionId" required="false" displayName="ProcessDefinitionId" description="Process definition id of this process"/>
+ <c:simple-property readOnly="true" name="state" required="false" displayName="State" description="Pocess instance state"/>
+ <c:simple-property readOnly="true" name="priority" required="false" displayName="Priority" description="Process instance priority"/>
</c:map-property>
</c:list-property>
</results>
- </operation>
-
+ </operation>
<metric property="version" displayName="version" dataType="trait"
displayType="summary" defaultOn="true" description="Process definition version" />
<metric property="id" displayName="id" dataType="trait"
@@ -178,11 +188,18 @@
<metric property="description" displayName="description"
dataType="trait" displayType="summary" defaultOn="true"
description="Process definition id" />
- <metric property="avgPerProcessInstanceDuration" displayName="avgPerProcessInstanceDuration"
+ <metric property="avgDuration" displayName="avgDuration"
dataType="measurement" displayType="summary" defaultOn="true"
- description="Average process instance duration" />
-
+ description="Average process instance duration" />
+ <metric property="processInstanceNum" displayName="processInstanceNum"
+ dataType="measurement" displayType="summary" defaultOn="true"
+ description="The number of process instance running " />
+
+ <metric property="endedProcessInstanceNum" displayName="endedProcessInstanceNum"
+ dataType="measurement" displayType="summary" defaultOn="true"
+ description="The number of ended process instance" />
+
<service name="Activies" discovery="ActivityDiscoveryComponent"
class="ActivityComponent" description="Process Activity">
@@ -195,7 +212,7 @@
<service name="Running Process Instances" discovery="ProcessInstanceDiscoveryComponent"
class="ProcessInstanceComponent" createDeletePolicy="both"
- creationDataType="configuration" description="Process Instance">
+ creationDataType="configuration" description="Process Instance" supportsManualAdd="true">
<metric property="id" displayName="id" dataType="trait"
displayType="summary" defaultOn="true" description="Process instance id" />
@@ -209,12 +226,13 @@
<metric property="priority" displayName="priority" dataType="trait"
displayType="summary" defaultOn="true" description="Process instance priority" />
- <metric property="definitionId" displayName="definitionId"
+ <metric property="definitionId" displayName="definitionId"
dataType="trait" displayType="summary" defaultOn="true"
description="Process definition id" />
<metric property="status" displayName="status" dataType="trait"
displayType="summary" defaultOn="true" description="Process instance status" />
+
<resource-configuration>
<c:simple-property name="start instance"
displayName="startInstance" type="boolean" required="true"
@@ -279,7 +297,7 @@
<metric property="processInstanceId" displayName="processInstanceId" dataType="trait"
displayType="summary" defaultOn="true" description="Process instance id" />
- <metric property="duration" displayName="duration" dataType="trait"
+ <metric property="duration" displayName="duration" dataType="measurement"
displayType="summary" defaultOn="true" description="Process instance duration" />
<metric property="startTime" displayName="startTime"
@@ -291,10 +309,7 @@
<metric property="state" displayName="state" dataType="trait"
displayType="summary" defaultOn="true" description="Process instance state" />
- </service>
-
-
-
+ </service>
</service>
</service>
</plugin>
More information about the jbpm-commits
mailing list