1
2
3
4
5
6
7 package net.kwfgrid.gwes.workflowanalyzer;
8
9 import net.kwfgrid.gwes.Activity;
10 import net.kwfgrid.gwes.Constants;
11 import net.kwfgrid.gworkflowdl.structure.GenericProperties;
12
13 import java.util.Map;
14 import java.util.Hashtable;
15
16
17
18
19
20
21 public class TransitionActivityStatistics {
22
23 private Map<OperationResourcePair,DistributionSet> distributionMap;
24
25 public TransitionActivityStatistics() {
26 distributionMap = new Hashtable<OperationResourcePair,DistributionSet>();
27 }
28
29 public Map<OperationResourcePair, DistributionSet> getDistributionMap() {
30 return distributionMap;
31 }
32
33
34
35
36
37 public void put(Activity activity) {
38 if (activity==null) return;
39 OperationResourcePair orp = new OperationResourcePair(activity.getOperationName(), activity.getResourceName());
40 DistributionSet set = distributionMap.get(orp);
41 if (set==null) {
42 set = new DistributionSet();
43 distributionMap.put(orp,set);
44 }
45 set.put(activity);
46 }
47
48
49
50
51
52 public DistributionSet get(OperationResourcePair orp) {
53 return distributionMap.get(orp);
54 }
55
56
57
58
59
60
61
62 public DistributionSet getAggregatedSet() {
63 DistributionSet aggregatedSet = new DistributionSet();
64 for (DistributionSet set : distributionMap.values()) {
65 aggregatedSet.add(set);
66 }
67 return aggregatedSet;
68 }
69
70 public void updateTransitionProperties(GenericProperties props) {
71 DistributionSet aggregatedSet = getAggregatedSet();
72 props.put(Constants.PROP_TRANSITION_NUMBER_ACTIVITIES, "" + aggregatedSet.durationTotal.getNumber());
73 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MEAN, "" + aggregatedSet.durationTotal.getMean());
74 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_STDDEVIATION, "" + aggregatedSet.durationTotal.getStdDeviation());
75 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_EXPSMOOTH, "" + aggregatedSet.durationTotal.getExpSmooth());
76 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MIN, "" + aggregatedSet.durationTotal.getMin());
77 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MAX, "" + aggregatedSet.durationTotal.getMax());
78 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MEAN, "" + aggregatedSet.durationActive.getMean());
79 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_STDDEVIATION, "" + aggregatedSet.durationActive.getStdDeviation());
80 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_EXPSMOOTH, "" + aggregatedSet.durationActive.getExpSmooth());
81 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MIN, "" + aggregatedSet.durationActive.getMin());
82 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MAX, "" + aggregatedSet.durationActive.getMax());
83 for (OperationResourcePair orp : distributionMap.keySet()) {
84 updateTransitionProperties(orp,distributionMap.get(orp),props);
85 }
86 }
87
88 private void updateTransitionProperties(OperationResourcePair orp, DistributionSet set, GenericProperties props) {
89 props.put(Constants.PROP_TRANSITION_NUMBER_ACTIVITIES+orp, "" + set.durationTotal.getNumber());
90 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MEAN+orp, "" + set.durationTotal.getMean());
91 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_STDDEVIATION+orp, "" + set.durationTotal.getStdDeviation());
92 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_EXPSMOOTH+orp, "" + set.durationTotal.getExpSmooth());
93 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MIN+orp, "" + set.durationTotal.getMin());
94 props.put(Constants.PROP_TRANSITION_DURATION_TOTAL_MS_MAX+orp, "" + set.durationTotal.getMax());
95 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MEAN+orp, "" + set.durationActive.getMean());
96 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_STDDEVIATION+orp, "" + set.durationActive.getStdDeviation());
97 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_EXPSMOOTH+orp, "" + set.durationActive.getExpSmooth());
98 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MIN+orp, "" + set.durationActive.getMin());
99 props.put(Constants.PROP_TRANSITION_DURATION_ACTIVE_MS_MAX+orp, "" + set.durationActive.getMax());
100 }
101
102 }