[overlord-commits] Overlord SVN: r1000 - in activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model: metric and 1 other directory.
overlord-commits at lists.jboss.org
overlord-commits at lists.jboss.org
Thu Mar 11 04:31:26 EST 2010
Author: heiko.braun at jboss.com
Date: 2010-03-11 04:31:25 -0500 (Thu, 11 Mar 2010)
New Revision: 1000
Modified:
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/BPAFDataSource.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/DefaultBPAFDataSource.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/Runner.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Average.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Metrics.java
activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java
Log:
Fix activity average calculation
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/BPAFDataSource.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/BPAFDataSource.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/BPAFDataSource.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -82,5 +82,5 @@
* @param processInstance the process instance ID
* @return a list of instance activity events.
*/
- List<Event> getInstanceEvents(String processInstance);
+ List<Event> getInstanceEvents(String... processInstance);
}
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/DefaultBPAFDataSource.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/DefaultBPAFDataSource.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/DefaultBPAFDataSource.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -117,7 +117,7 @@
}
public List<Event> getDefinitionEvents(final String processDefinition, final Timespan timespan)
- {
+ {
List<Event> result = executeCommand(new SQLCommand<List<Event>>()
{
public List<Event> execute(Session session)
@@ -144,26 +144,41 @@
return result;
}
- public List<Event> getInstanceEvents(final String processInstance)
+ public List<Event> getInstanceEvents(final String... processInstances)
{
List<Event> result = executeCommand(new SQLCommand<List<Event>>()
{
public List<Event> execute(Session session)
{
- SQLQuery query = session.createSQLQuery("select e1.*\n" +
- "from BPAF_EVENT e1, BPAF_EVENT e2\n" +
- "where e1.processInstanceID=e2.processInstanceID\n" +
- "and ((e1.currentState=\"Open\" and e2.currentState=\"Closed\") OR (e2.currentState=\"Open\" and e1.currentState=\"Closed\"))\n" +
- "and e1.activityDefinitionID is not null\n" +
- "and e2.activityDefinitionID is not null\n" +
- "and e1.processInstanceID='"+processInstance+"' "+
- //"and e1.timeStamp>="+timespan.getStart()+" "+
- //"and e2.timeStamp<="+timespan.getEnd()+" "+
- "group by e1.activityInstanceID\n" +
- "order by e1.timeStamp, e1.processInstanceID");
+ StringBuffer sb = new StringBuffer("SELECT e1.* ");
+ sb.append("FROM BPAF_EVENT e1, BPAF_EVENT e2 ");
+ sb.append("WHERE e1.processInstanceID=e2.processInstanceID " );
+ sb.append("AND ((e1.currentState=\"Open\" and e2.currentState=\"Closed\") OR (e2.currentState=\"Open\" and e1.currentState=\"Closed\")) " );
+ sb.append("AND e1.activityDefinitionID is not null " );
+ sb.append("AND e2.activityDefinitionID is not null " );
+ sb.append("AND (");
+ for(int i=0; i<processInstances.length; i++)
+ {
+ if(i==0)
+ sb.append("e1.processInstanceID=\""+processInstances[i]+"\" ");
+ else
+ sb.append("OR e1.processInstanceID=\""+processInstances[i]+"\" ");
+ }
+
+ sb.append(") ");
+
+ //sb.append("and e1.timeStamp>="+timespan.getStart()+" ");
+ //sb.append("and e2.timeStamp<="+timespan.getEnd()+" ");
+
+ sb.append("GROUP BY e1.activityInstanceID " );
+ sb.append("ORDER BY e1.timeStamp, e1.processInstanceID");
+
+
+ SQLQuery query = session.createSQLQuery(sb.toString());
+
query.addEntity(Event.class);
-
+
return query.list();
}
});
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/Runner.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/Runner.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/Runner.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -60,8 +60,9 @@
System.out.println(Metrics.getInstanceAverage(instanceHistory));
// instance events
- String instance = instances.get(0);
- List<Event> activityHistory = ds.getInstanceEvents(instance);
+ String instance1 = instances.get(0);
+ String instance2 = instances.get(1);
+ List<Event> activityHistory = ds.getInstanceEvents(instance1, instance2);
System.out.println("Instance events: "+activityHistory.size());
for(String s : activities)
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Average.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Average.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Average.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -22,6 +22,8 @@
package org.jboss.bpm.monitor.model.metric;
/**
+ * Min, Max, Average for a particular key.
+ *
* @author: Heiko Braun <hbraun at redhat.com>
* @date: Mar 10, 2010
*/
@@ -37,6 +39,11 @@
this.key = key;
}
+ public String getKey()
+ {
+ return key;
+ }
+
public long getMin()
{
return min;
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Metrics.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Metrics.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Metrics.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -23,6 +23,7 @@
import org.jboss.bpm.monitor.model.bpaf.Event;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -33,6 +34,12 @@
*/
public class Metrics
{
+ /**
+ * Get the average instance execution time.
+ * @param events a list of events that belong to the same process definition
+ * (<tt>e0.processDefinitionID==e1.processDefinitionID, ..., eN</tt>)
+ * @return average instance execution time
+ */
public static Average getInstanceAverage(List<Event> events)
{
assert events.size()>0 : "Empty event list";
@@ -78,6 +85,13 @@
return stat;
}
+ /**
+ * Get the average execution time for an activity.
+ * @param events a list of event that belong to the same process definition
+ * (<tt>e0.processDefinitionID==e1.processDefinitionID, ..., eN</tt>)
+ * @param activityDefinition the activityDefinitionID
+ * @return an average
+ */
public static Average getActivityAverage(List<Event> events, String activityDefinition)
{
assert events.size()>0 : "Empty event list";
@@ -85,7 +99,8 @@
Average stat = new Average(activityDefinition);
- Map<String, Long> duration = new HashMap<String,Long>(events.size()/2);
+ Map<String, Long> in = new HashMap<String,Long>(events.size()/2);
+ List<Long> out = new ArrayList<Long>();
for(Event e : events)
{
String activity = e.getActivityDefinitionID();
@@ -93,25 +108,24 @@
if(!activity.equals(activityDefinition)) // skip non related events
continue;
- Long l0 = duration.get(activity);
+ Long l0 = in.get(activity);
if(l0!=null)
{
long l1 = e.getTimestamp();
if(l0<l1)
- duration.put(activity, (l1-l0)); // not necessarily in order
+ out.add(l1-l0); // not necessarily in order
else
- duration.put(activity, (l0-l1));
+ out.add(l0-l1);
}
else
{
- duration.put(activity, e.getTimestamp());
+ in.put(activity, e.getTimestamp());
}
}
long sum = 0;
- for(String activity : duration.keySet())
- {
- long l3 = duration.get(activity);
+ for(Long l3: out)
+ {
if(stat.getMin()==-1) // first iteration
{
stat.setMin(l3);
@@ -125,7 +139,7 @@
sum+=l3;
}
- stat.setAvg(sum/duration.entrySet().size());
+ stat.setAvg(sum/out.size());
return stat;
}
Modified: activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java
===================================================================
--- activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java 2010-03-10 15:03:03 UTC (rev 999)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Timespan.java 2010-03-11 09:31:25 UTC (rev 1000)
@@ -5,6 +5,9 @@
import java.util.Date;
/**
+ * Represents a certain time period.
+ * Includes factory methods to create common timespans.
+ *
* @author: Heiko Braun <hbraun at redhat.com>
* @date: Mar 10, 2010
*/
More information about the overlord-commits
mailing list