[overlord-commits] Overlord SVN: r998 - 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
Wed Mar 10 10:00:08 EST 2010
Author: heiko.braun at jboss.com
Date: 2010-03-10 10:00:07 -0500 (Wed, 10 Mar 2010)
New Revision: 998
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/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
Log:
implement activty selection
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 14:22:19 UTC (rev 997)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/DefaultBPAFDataSource.java 2010-03-10 15:00:07 UTC (rev 998)
@@ -144,16 +144,27 @@
return result;
}
- public List<Event> getInstanceEvents(final String processInstance, Timespan timespan)
+ public List<Event> getInstanceEvents(final String processInstance, final Timespan timespan)
{
List<Event> result = executeCommand(new SQLCommand<List<Event>>()
{
public List<Event> execute(Session session)
{
- Criteria c = session.createCriteria(Event.class);
- c.add(Restrictions.isNotNull("activityDefinitionID"));
- c.add(Restrictions.eq("processInstanceID", processInstance));
- return c.list();
+ 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");
+
+ 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 14:22:19 UTC (rev 997)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/Runner.java 2010-03-10 15:00:07 UTC (rev 998)
@@ -56,12 +56,17 @@
// definition events
Timespan timespan = Timespan.lastQuarter();
System.out.println(timespan);
- List<Event> defLifecycle = ds.getDefinitionEvents(definitions.get(0), timespan);
- System.out.println("defLifecycle events: " +defLifecycle.size());
- System.out.println("Stat for definition: " + Metrics.getAverage(defLifecycle));
+ List<Event> instanceHistory = ds.getDefinitionEvents(definitions.get(0), timespan);
+ System.out.println(Metrics.getInstanceAverage(instanceHistory));
// instance events
- List<Event> instLifecycle = ds.getInstanceEvents(instances.get(0), timespan);
- System.out.println(instLifecycle);
+ String instance = instances.get(0);
+ List<Event> activityHistory = ds.getInstanceEvents(instance, timespan);
+ System.out.println("Instance events: "+activityHistory.size());
+
+ for(String s : activities)
+ {
+ System.out.println("- "+s+": " + Metrics.getActivityAverage(activityHistory, s));
+ }
}
}
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 14:22:19 UTC (rev 997)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Average.java 2010-03-10 15:00:07 UTC (rev 998)
@@ -27,14 +27,14 @@
*/
public class Average
{
- String processDefinition;
+ String key;
long min = -1;
long max = -1;
long avg = -1;
- public Average(String processDefinition)
+ public Average(String key)
{
- this.processDefinition = processDefinition;
+ this.key = key;
}
public long getMin()
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 14:22:19 UTC (rev 997)
+++ activity-monitor/trunk/model/src/main/java/org/jboss/bpm/monitor/model/metric/Metrics.java 2010-03-10 15:00:07 UTC (rev 998)
@@ -33,7 +33,7 @@
*/
public class Metrics
{
- public static Average getAverage(List<Event> events)
+ public static Average getInstanceAverage(List<Event> events)
{
assert events.size()>0 : "Empty event list";
assert events.size()%2==0 : "Parity error: "+events.size() +" events. Every event should have closing counterpart!";
@@ -74,7 +74,59 @@
}
stat.setAvg(sum/duration.entrySet().size());
-
+
return stat;
}
+
+ public static Average getActivityAverage(List<Event> events, String activityDefinition)
+ {
+ assert events.size()>0 : "Empty event list";
+ assert events.size()%2==0 : "Parity error: "+events.size() +" events. Every event should have closing counterpart!";
+
+ Average stat = new Average(activityDefinition);
+
+ Map<String, Long> duration = new HashMap<String,Long>(events.size()/2);
+ for(Event e : events)
+ {
+ String activity = e.getActivityDefinitionID();
+
+ if(!activity.equals(activityDefinition)) // skip non related events
+ continue;
+
+ Long l0 = duration.get(activity);
+ if(l0!=null)
+ {
+ long l1 = e.getTimestamp();
+ if(l0<l1)
+ duration.put(activity, (l1-l0)); // not necessarily in order
+ else
+ duration.put(activity, (l0-l1));
+ }
+ else
+ {
+ duration.put(activity, e.getTimestamp());
+ }
+ }
+
+ long sum = 0;
+ for(String activity : duration.keySet())
+ {
+ long l3 = duration.get(activity);
+ if(stat.getMin()==-1) // first iteration
+ {
+ stat.setMin(l3);
+ stat.setMax(l3);
+ }
+ else if(l3<stat.getMin())
+ stat.setMin(l3);
+ else if(l3>stat.getMax())
+ stat.setMax(l3);
+
+ sum+=l3;
+ }
+
+ stat.setAvg(sum/duration.entrySet().size());
+
+ return stat;
+ }
}
More information about the overlord-commits
mailing list