[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