[jbpm-commits] JBoss JBPM SVN: r5598 - in projects/jopr-integration/trunk/src/main: java/org/rhq/plugins/jbpm4/connector and 1 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Aug 31 05:34:28 EDT 2009
Author: jim.ma
Date: 2009-08-31 05:34:27 -0400 (Mon, 31 Aug 2009)
New Revision: 5598
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/ProcessDeploymentComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.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 the operation to query the HistoryProcessInstances
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 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,6 +29,11 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
+import org.jbpm.pvm.internal.query.Page;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.measurement.AvailabilityType;
import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
@@ -39,29 +44,38 @@
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
import org.rhq.plugins.jbpm4.util.StringUtil;
+
/**
* @author <a href mailto="ema at redhat.com">Jim Ma</a>
- *
+ *
*/
-public class ProcessDefComponent implements ResourceComponent<ProcessEngineComponent> , MeasurementFacet, CreateChildResourceFacet {
+public class ProcessDefComponent implements
+ ResourceComponent<ProcessEngineComponent>, MeasurementFacet,
+ CreateChildResourceFacet, OperationFacet {
private ResourceContext<ProcessEngineComponent> resourceContext;
private Log log = LogFactory.getLog(this.getClass());
ProcessDefinition processDef = null;
- private JBPMEngineConnection jbpmConnection = null;
+ private JBPMEngineConnection jbpmConnection = null;
+
public void start(ResourceContext<ProcessEngineComponent> resourceContext) {
this.resourceContext = resourceContext;
- jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- processDef = jbpmConnection.getProcessDefById(resourceContext.getResourceKey());
+ jbpmConnection = resourceContext.getParentResourceComponent()
+ .getJBPMConnection();
+ processDef = jbpmConnection.getProcessDefById(resourceContext
+ .getResourceKey());
}
public void stop() {
}
- public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> metrics) {
+ public void getValues(MeasurementReport report,
+ Set<MeasurementScheduleRequest> metrics) {
for (MeasurementScheduleRequest request : metrics) {
- if (request.getName().equals("version")) {
+ if (request.getName().equals("version")) {
MeasurementDataTrait value = new MeasurementDataTrait(request,
StringUtil.replaceNull((processDef.getVersion())));
report.addData(value);
@@ -72,39 +86,44 @@
StringUtil.replaceNull(processDef.getId()));
report.addData(value);
}
-
+
if (request.getName().equals("description")) {
- MeasurementDataTrait value = new MeasurementDataTrait(request, StringUtil.replaceNull(processDef.getDescription()));
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
+ StringUtil.replaceNull(processDef.getDescription()));
report.addData(value);
}
-
+
if (request.getName().equals("avgPerProcessInstanceDuration")) {
- String duration = StringUtil.replaceNull(getAverageProcessInstanceDuration());
- MeasurementDataTrait value = new MeasurementDataTrait(request, duration);
+ String duration = StringUtil
+ .replaceNull(getAverageProcessInstanceDuration());
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
+ duration);
report.addData(value);
- }
+ }
}
}
-
-
+
public AvailabilityType getAvailability() {
- ProcessDefinition processDef = jbpmConnection.getProcessDefById(resourceContext.getResourceKey());
+ ProcessDefinition processDef = jbpmConnection
+ .getProcessDefById(resourceContext.getResourceKey());
if (processDef != null) {
return AvailabilityType.UP;
}
- return AvailabilityType.DOWN;
+ return AvailabilityType.DOWN;
}
public JBPMEngineConnection getJBPMConnection() {
return resourceContext.getParentResourceComponent().getJBPMConnection();
- }
-
- //---------------CreateChildResourceFacet implementation -----------------//
+ }
+
+ // ---------------CreateChildResourceFacet implementation
+ // -----------------//
public CreateResourceReport createResource(CreateResourceReport report) {
String resourceTypeName = report.getResourceType().getName();
report.setResourceKey(resourceTypeName);
report.setResourceName(resourceTypeName);
- ProcessInstance instance = jbpmConnection.startProcessInstance(resourceContext.getResourceKey());
+ ProcessInstance instance = jbpmConnection
+ .startProcessInstance(resourceContext.getResourceKey());
if (instance == null) {
report.setStatus(CreateResourceStatus.FAILURE);
report.setErrorMessage("Failed to start process instance");
@@ -113,21 +132,72 @@
}
return report;
}
-
+
public String getResourceKey() {
return this.resourceContext.getResourceKey();
- }
+ }
+
+ public Long getAverageProcessInstanceDuration() {
+ List<HistoryProcessInstance> instances = this.jbpmConnection
+ .getHistoryProcessInstances(this.getResourceKey(), 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;
+ }
+
+ public OperationResult invokeOperation(String name, Configuration parameters) throws InterruptedException, Exception {
+ OperationResult result = null;
+ if (name.equals("historyProcessInstanceSelector")) {
+ result = queryHistoryProcessInstances(parameters);
+ }
+ return result;
+ }
- public Long getAverageProcessInstanceDuration() {
- List<HistoryProcessInstance> instances = this.jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null, ProcessInstance.STATE_ENDED);
- Long sumDuration = 0L;
- for (HistoryProcessInstance instance : instances) {
- sumDuration = sumDuration + instance.getDuration();
+ public OperationResult queryHistoryProcessInstances(Configuration parameters) {
+ OperationResult result = new OperationResult();
+ PropertySimple simple = parameters.getSimple("duration");
+ Long duration = simple.getLongValue() == null ? 0 : simple.getLongValue();
+ PropertySimple state = parameters.getSimple("state");
+ String insState = state != null ? state.getStringValue() : HistoryProcessInstance.STATE_ENDED;
+
+ 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);
+ }
+
+ List<HistoryProcessInstance> instances = jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null, insState, page);
+ PropertyList resultInstances = new PropertyList("resultInstances");
+ result.getComplexResults().put(resultInstances);
+
+ for (HistoryProcessInstance instance : instances) {
+ if (instance.getDuration() > duration) {
+ PropertyMap map = new PropertyMap("instance");
+ PropertySimple id = new PropertySimple("id", instance.getProcessInstanceId());
+ PropertySimple insDuration = new PropertySimple("duration", instance.getDuration());
+ PropertySimple endTime = new PropertySimple("endTime", instance.getEndTime());
+ PropertySimple startTime = new PropertySimple("startTime", instance.getStartTime());
+ PropertySimple definitionId = new PropertySimple("definitionId", instance.getProcessDefinitionId());
+ PropertySimple stateProp = new PropertySimple("state", instance.getState());
+ map.put(id);
+ map.put(startTime);
+ map.put(endTime);
+ map.put(insDuration);
+ map.put(definitionId);
+ map.put(stateProp);
+ resultInstances.add(map);
+ }
}
- if (sumDuration > 0) {
- return sumDuration/instances.size();
- }
- return null;
+ return result;
}
-
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDeploymentComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,6 +29,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jbpm.api.Deployment;
+import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.PackageType;
import org.rhq.core.domain.content.transfer.ContentResponseResult;
@@ -46,13 +47,15 @@
import org.rhq.core.pluginapi.inventory.ResourceComponent;
import org.rhq.core.pluginapi.inventory.ResourceContext;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
import org.rhq.plugins.jbpm4.util.StringUtil;
/**
* @author <a href mailto="ema at redhat.com">Jim Ma</a>
*
*/
-public class ProcessDeploymentComponent implements ResourceComponent<ProcessEngineComponent> , MeasurementFacet, ContentFacet, DeleteResourceFacet {
+public class ProcessDeploymentComponent implements ResourceComponent<ProcessEngineComponent> ,OperationFacet, MeasurementFacet, ContentFacet, DeleteResourceFacet {
private ResourceContext<ProcessEngineComponent> resourceContext;
private Log log = LogFactory.getLog(this.getClass());
private Deployment deployment = null;
@@ -145,6 +148,20 @@
this.jbpmConnection.deleteDeployment(resourceContext.getResourceKey());
}
+ public OperationResult invokeOperation(String name, Configuration parameters)
+ throws InterruptedException, Exception {
+ OperationResult result = new OperationResult();
+ if (name.toUpperCase().equals("SUSPEND")) {
+ this.jbpmConnection.suspendDeployment(this.resourceContext.getResourceKey());
+ }
+
+ if (name.toUpperCase().equals("RESUME")) {
+ this.jbpmConnection.resumeDeployment(this.resourceContext.getResourceKey());
+ }
+ result.setSimpleResult("Success");
+ return result;
+ }
+
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -48,7 +48,7 @@
public void start(ResourceContext<ProcessDefComponent> resourceContext) {
instanceId = resourceContext.getResourceKey();
jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- List<HistoryProcessInstance> instanceList = jbpmConnection.getHistoryProcessInstances(null,instanceId,HistoryProcessInstance.STATE_ENDED);
+ List<HistoryProcessInstance> instanceList = jbpmConnection.getHistoryProcessInstances(null,instanceId,HistoryProcessInstance.STATE_ENDED, null);
instance = instanceList.get(0);
}
Modified: projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java
===================================================================
--- projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java 2009-08-31 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -41,7 +41,7 @@
Set<DiscoveredResourceDetails> historyInstances = new java.util.HashSet<DiscoveredResourceDetails>();
ProcessDefComponent defComponent = context.getParentResourceComponent();
- List<HistoryProcessInstance> historyProcessInstances = defComponent.getJBPMConnection().getHistoryProcessInstances(defComponent.getResourceKey(), null, ProcessInstance.STATE_ENDED);
+ List<HistoryProcessInstance> historyProcessInstances = defComponent.getJBPMConnection().getHistoryProcessInstances(defComponent.getResourceKey(), null, ProcessInstance.STATE_ENDED, null);
for (HistoryProcessInstance instance: historyProcessInstances) {
DiscoveredResourceDetails details = new DiscoveredResourceDetails(context.getResourceType(), String.valueOf(instance.getProcessInstanceId()), "ProcessInstance-" + instance.getProcessInstanceId(), null, null, null, null);
historyInstances.add(details);
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 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -29,8 +29,10 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
+import org.jbpm.api.history.HistoryProcessInstanceQuery;
import org.jbpm.api.job.Job;
import org.jbpm.api.task.Task;
+import org.jbpm.pvm.internal.query.Page;
/**
* @author <a href mailto="ema at redhat.com">Jim Ma</a>
*
@@ -51,6 +53,8 @@
Job getJob(String jobId);
Map<String, Long> avgDurationPerActivity(String processDefinitionId);
Job executeJob(String jobDbid);
- List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state);
+ List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state, Page page);
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 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-08-31 09:34:27 UTC (rev 5598)
@@ -47,6 +47,7 @@
import org.jbpm.api.task.Task;
import org.jbpm.pvm.internal.cmd.CommandService;
import org.jbpm.pvm.internal.cmd.ExecuteJobCmd;
+import org.jbpm.pvm.internal.query.Page;
/**
* @author <a href mailto="ema at redhat.com">Jim Ma</a>
*
@@ -92,7 +93,15 @@
processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
}
+ public void suspendDeployment(String deploymentId) {
+ processEngine.getRepositoryService().suspendDeployment(deploymentId);
+ }
+ public void resumeDeployment(String deploymentId) {
+ processEngine.getRepositoryService().resumeDeployment(deploymentId);
+ }
+
+
public Deployment getDeployment(String deploymentId) {
return processEngine.getRepositoryService().createDeploymentQuery().deploymentDbid(Long.valueOf(deploymentId)).uniqueResult();
@@ -184,7 +193,7 @@
return commandService.execute(new ExecuteJobCmd(jobDbid));
}
- public List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state) {
+ public List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId, String processInstanceId, String state, Page page) {
HistoryProcessInstanceQuery historyQuery = processEngine.getHistoryService().createHistoryProcessInstanceQuery();
if (definitionId != null) {
historyQuery.processDefinitionId(definitionId);
@@ -196,8 +205,16 @@
if (state != null) {
historyQuery.state(state);
}
+
+ if (page != null) {
+ historyQuery.page(page.firstResult, page.maxResults);
+ }
return historyQuery.list();
}
+
+ public List<HistoryProcessInstance> queryHistoryProcessIncences(HistoryProcessInstanceQuery query) {
+ return query.list();
+ }
public List<Task> getTasks(String definitionId, String processInstanceId) {
TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
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 09:00:32 UTC (rev 5597)
+++ projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-08-31 09:34:27 UTC (rev 5598)
@@ -94,6 +94,8 @@
<service name="Process Deployments" discovery="ProcessDeploymentDiscoveryComponent"
class="ProcessDeploymentComponent" createDeletePolicy="both"
creationDataType="content" description="JBPM Process Deployment">
+ <operation name="suspend" displayName="suspend" description="Suspend this deployment" />
+ <operation name="resume" displayName="resume" description="Resume this deployment" />
<metric property="id" displayName="id" dataType="trait"
displayType="summary" defaultOn="true" description="deployment id" />
<metric property="name" displayName="name" dataType="trait"
@@ -109,6 +111,66 @@
</service>
<service name="Process Definitions" discovery="ProcessDefDiscoveryComponent"
class="ProcessDefComponent" description="JBPM Process Definitions">
+ <operation name="historyProcessInstanceSelector" displayName="historyProcessInstanceSelector"
+ description="Lists the ended process instance which duration is large than the value">
+ <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"
+ description="the process instance state">
+ <c:property-options>
+ <c:option value="ended" name="Ended" default="true"/>
+ <c:option value="active" name="Active"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="firstResult" displayName="firstResult" type="integer" required="false" description="the index of first result"/>
+ <c:simple-property name="maxResults" displayName="maxResults" type="integer" required="false" description="the max results"/>
+ </parameters>
+
+ <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">
+ <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:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
+ <operation name="processInstanceSelector" displayName="processInstanceSelector"
+ description="lists the process instances">
+ <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"
+ description="the process instance state">
+ <c:property-options>
+ <c:option value="ended" name="Ended" default="true"/>
+ <c:option value="active" name="Active"/>
+ </c:property-options>
+ </c:simple-property>
+ <c:simple-property name="firstResult" displayName="firstResult" type="integer" required="false" description="the index of first result"/>
+ <c:simple-property name="maxResults" displayName="maxResults" type="integer" required="false" description="the max results"/>
+ </parameters>
+
+ <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">
+ <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:map-property>
+ </c:list-property>
+ </results>
+ </operation>
+
<metric property="version" displayName="version" dataType="trait"
displayType="summary" defaultOn="true" description="Process definition version" />
<metric property="id" displayName="id" dataType="trait"
More information about the jbpm-commits
mailing list