Author: jim.ma
Date: 2009-08-27 03:58:57 -0400 (Thu, 27 Aug 2009)
New Revision: 5559
Added:
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskDiscoveryComponent.java
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/ProcessInstanceComponent.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 task discovery component
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessDefComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -118,7 +118,7 @@
}
public Long getAverageProcessInstanceDuration() {
- List<HistoryProcessInstance> instances =
this.jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null, null, false);
+ List<HistoryProcessInstance> instances =
this.jbpmConnection.getHistoryProcessInstances(this.getResourceKey(), null,
ProcessInstance.STATE_ENDED);
Long sumDuration = 0L;
for (HistoryProcessInstance instance : instances) {
sumDuration = sumDuration + instance.getDuration();
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -116,4 +116,8 @@
public void deleteResource() throws Exception {
this.jbpmConnection.deleteProcessInstance(instanceId);
}
+
+ public String getResourceKey() {
+ return instanceId;
+ }
}
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -50,7 +50,7 @@
public void start(ResourceContext<ProcessDefComponent> resourceContext) {
instanceId = resourceContext.getResourceKey();
jbpmConnection = resourceContext.getParentResourceComponent().getJBPMConnection();
- List<HistoryProcessInstance> instanceList =
jbpmConnection.getHistoryProcessInstances(null,instanceId,null, false);
+ List<HistoryProcessInstance> instanceList =
jbpmConnection.getHistoryProcessInstances(null,instanceId,HistoryProcessInstance.STATE_ENDED);
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/ProcessInstanceHistoryDiscoveryComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -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, HistoryProcessInstanceQuery.PROPERTY_STARTTIME, false);
+ List<HistoryProcessInstance> historyProcessInstances =
defComponent.getJBPMConnection().getHistoryProcessInstances(defComponent.getResourceKey(),
null, ProcessInstance.STATE_ENDED);
for (HistoryProcessInstance instance: historyProcessInstances) {
DiscoveredResourceDetails details = new
DiscoveredResourceDetails(context.getResourceType(),
String.valueOf(instance.getProcessInstanceId()), "ProcessInstance-" +
instance.getProcessInstanceId(), null, null, null, null);
historyInstances.add(details);
Added:
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
(rev 0)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -0,0 +1,128 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.rhq.plugins.jbpm4;
+
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.task.Task;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
+/**
+ * @author ema(a)redhat.com
+ *
+ */
+public class TaskComponent implements ResourceComponent<ProcessInstanceComponent> ,
MeasurementFacet {
+ private ResourceContext<ProcessInstanceComponent> resourceContext;
+ private Log log = LogFactory.getLog(this.getClass());
+ private String taskId = null;
+ private Task task = null;
+ public void start(ResourceContext<ProcessInstanceComponent> resourceContext) {
+ taskId = resourceContext.getResourceKey();
+ this.resourceContext = resourceContext;
+ task = TaskDiscoveryComponent.tasksMap.get(taskId);
+
+ }
+
+ public void stop() {
+ }
+
+ public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest>
metrics) {
+ for (MeasurementScheduleRequest request : metrics) {
+ if (request.getName().equals("id")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request, task.getId());
+ report.addData(value);
+ }
+ if (request.getName().equals("name")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request, task.getName());
+ report.addData(value);
+ }
+
+ if (request.getName().equals("createTime")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
String.valueOf(task.getCreateTime()));
+ report.addData(value);
+ }
+
+ if (request.getName().equals("dueDate")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
String.valueOf(task.getDuedate()));
+ report.addData(value);
+ }
+
+ if (request.getName().equals("priority")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
String.valueOf(task.getPriority()));
+ report.addData(value);
+ }
+
+
+
+ if (request.getName().equals("activityName")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
task.getActivityName());
+ report.addData(value);
+ }
+
+ if (request.getName().equals("assignee")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request, task.getAssignee());
+ report.addData(value);
+ }
+ if (request.getName().equals("description")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
task.getDescription());
+ report.addData(value);
+ }
+
+
+ if (request.getName().equals("executionId")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
task.getExecutionId());
+ report.addData(value);
+ }
+
+
+ if (request.getName().equals("formResourceName")) {
+ MeasurementDataTrait value = new MeasurementDataTrait(request,
task.getFormResourceName());
+ report.addData(value);
+ }
+
+
+ }
+
+ }
+
+
+ public AvailabilityType getAvailability() {
+ ProcessInstance processInstance =
getJBPMConnection().getProcessInstance(this.resourceContext.getParentResourceComponent().getResourceKey());
+ if (processInstance != null) {
+ return AvailabilityType.UP;
+ }
+ return AvailabilityType.DOWN;
+ }
+
+ public JBPMEngineConnection getJBPMConnection() {
+ return resourceContext.getParentResourceComponent().getJBPMConnection();
+ }
+}
Added:
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskDiscoveryComponent.java
===================================================================
---
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskDiscoveryComponent.java
(rev 0)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/TaskDiscoveryComponent.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -0,0 +1,56 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.rhq.plugins.jbpm4;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jbpm.api.task.Task;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+import org.rhq.plugins.jbpm4.connector.JBPMEngineConnection;
+/**
+ * @author ema(a)redhat.com
+ *
+ */
+public class TaskDiscoveryComponent implements
ResourceDiscoveryComponent<ProcessInstanceComponent> {
+ public static Map<String, Task> tasksMap = new HashMap<String, Task>();
+ public Set<DiscoveredResourceDetails>
discoverResources(ResourceDiscoveryContext<ProcessInstanceComponent> context) {
+ //clear the map
+ tasksMap.clear();
+ Set<DiscoveredResourceDetails> discoveredTasks = new
java.util.HashSet<DiscoveredResourceDetails>();
+ String processInstanceId = context.getParentResourceContext().getResourceKey();
+ JBPMEngineConnection jbpmConnection =
context.getParentResourceComponent().getJBPMConnection();
+ List<Task> tasks = jbpmConnection.getTasks(null, processInstanceId);
+ for (Task task : tasks) {
+ DiscoveredResourceDetails details = new
DiscoveredResourceDetails(context.getResourceType(), task.getId(), task.getName(),
+ null, task.getName(), null, null);
+ discoveredTasks.add(details);
+ //Cached the tasks in the map to avoid query database for each task component
+ tasksMap.put(task.getId(), task);
+ }
+ return discoveredTasks;
+ }
+}
\ No newline at end of file
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/JBPMEngineConnection.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -30,6 +30,7 @@
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.job.Job;
+import org.jbpm.api.task.Task;
/**
* @author ema(a)redhat.com
*
@@ -50,5 +51,6 @@
Job getJob(String jobId);
Map<String, Long> avgDurationPerActivity(String processDefinitionId);
Job executeJob(String jobDbid);
- List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId,
String processInstanceId, String orderBy, boolean orderAsc);
+ List<HistoryProcessInstance> getHistoryProcessInstances(String definitionId,
String processInstanceId, String state);
+ List<Task> getTasks(String definitionId, String processInstanceId);
}
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-27
07:20:33 UTC (rev 5558)
+++
projects/jopr-integration/trunk/src/main/java/org/rhq/plugins/jbpm4/connector/LocalJBPMEngineConnector.java 2009-08-27
07:58:57 UTC (rev 5559)
@@ -40,9 +40,11 @@
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
+import org.jbpm.api.TaskQuery;
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.cmd.CommandService;
import org.jbpm.pvm.internal.cmd.ExecuteJobCmd;
/**
@@ -182,7 +184,7 @@
return commandService.execute(new ExecuteJobCmd(jobDbid));
}
- public List<HistoryProcessInstance> getHistoryProcessInstances(String
definitionId, String processInstanceId, String orderBy, boolean orderAsc) {
+ public List<HistoryProcessInstance> getHistoryProcessInstances(String
definitionId, String processInstanceId, String state) {
HistoryProcessInstanceQuery historyQuery =
processEngine.getHistoryService().createHistoryProcessInstanceQuery();
if (definitionId != null) {
historyQuery.processDefinitionId(definitionId);
@@ -191,14 +193,22 @@
historyQuery.processInstanceId(processInstanceId);
}
- if (orderBy != null && orderAsc) {
- historyQuery.orderAsc(orderBy);
+ if (state != null) {
+ historyQuery.state(state);
}
- if (orderBy != null && !orderAsc) {
- historyQuery.orderDesc(orderBy);
- }
return historyQuery.list();
}
-
-
+
+ public List<Task> getTasks(String definitionId, String processInstanceId) {
+ TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery();
+ if (definitionId != null) {
+ taskQuery.processDefinitionId(definitionId);
+ }
+
+ if (processInstanceId != null) {
+ taskQuery.processInstanceId(processInstanceId);
+ }
+
+ return taskQuery.list();
+ }
}
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-27
07:20:33 UTC (rev 5558)
+++ projects/jopr-integration/trunk/src/main/resources/META-INF/rhq-plugin.xml 2009-08-27
07:58:57 UTC (rev 5559)
@@ -130,34 +130,8 @@
<metric property="avgDuration" displayName="avgDuration"
dataType="trait"
displayType="summary" defaultOn="true"
description="Activity average duration" />
</service>
-
- <service name="Process Instance History"
discovery="ProcessInstanceHistoryDiscoveryComponent"
- class="ProcessInstanceHistoryComponent" description="Process Instance
History">
-
- <metric property="key" displayName="key"
dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance key" />
-
- <metric property="processDefinitionId"
displayName="processDefinitionId" dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance defnitionId" />
-
- <metric property="processInstanceId"
displayName="processInstanceId" dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance id" />
-
- <metric property="duration" displayName="duration"
dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance duration" />
-
- <metric property="startTime" displayName="startTime"
- dataType="trait" displayType="summary"
defaultOn="true"
- description="Process instance start time" />
-
- <metric property="endTime" displayName="endTime"
dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance end time" />
-
- <metric property="state" displayName="state"
dataType="trait"
- displayType="summary" defaultOn="true" description="Process
instance state" />
- </service>
-
- <service name="Process Instances"
discovery="ProcessInstanceDiscoveryComponent"
+
+ <service name="Running Process Instances"
discovery="ProcessInstanceDiscoveryComponent"
class="ProcessInstanceComponent" createDeletePolicy="both"
creationDataType="configuration" description="Process
Instance">
@@ -185,6 +159,31 @@
default="true">
</c:simple-property>
</resource-configuration>
+
+ <service name="Task" discovery="TaskDiscoveryComponent"
+ class="TaskComponent" description="Task">
+ <metric property="id" displayName="id"
dataType="trait"
+ displayType="summary" defaultOn="true"
description="taskId" />
+ <metric property="name" displayName="name"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
name" />
+ <metric property="createTime" displayName="createTime"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
createTime" />
+ <metric property="dueDate" displayName="dueDate"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
dueDate" />
+ <metric property="priority" displayName="priority"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
priority" />
+ <metric property="activityName" displayName="activityName"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
activityName" />
+ <metric property="assignee" displayName="assignee"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
assignee" />
+ <metric property="description" displayName="description"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
description" />
+ <metric property="executionId" displayName="executionId"
dataType="trait"
+ displayType="summary" defaultOn="true" description="task
executionId" />
+ <metric property="formResourceName"
displayName="formResourceName" dataType="trait"
+ displayType="summary" defaultOn="true" description="form
resourceName" />
+ </service>
+
<service name="Jobs"
discovery="InstanceJobDiscoveryComponent"
class="JobComponent" description="JBPM jobs">
<metric property="id" displayName="id"
dataType="trait"
@@ -205,6 +204,35 @@
description="job exception" />
</service>
</service>
+
+ <service name="Ended Process Instance"
discovery="ProcessInstanceHistoryDiscoveryComponent"
+ class="ProcessInstanceHistoryComponent" description="Process Instance
History">
+
+ <metric property="key" displayName="key"
dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance key" />
+
+ <metric property="processDefinitionId"
displayName="processDefinitionId" dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance defnitionId" />
+
+ <metric property="processInstanceId"
displayName="processInstanceId" dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance id" />
+
+ <metric property="duration" displayName="duration"
dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance duration" />
+
+ <metric property="startTime" displayName="startTime"
+ dataType="trait" displayType="summary"
defaultOn="true"
+ description="Process instance start time" />
+
+ <metric property="endTime" displayName="endTime"
dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance end time" />
+
+ <metric property="state" displayName="state"
dataType="trait"
+ displayType="summary" defaultOn="true" description="Process
instance state" />
+ </service>
+
+
+
</service>
</service>
</plugin>