1 package net.kwfgrid.gworkflowdl.analysis;
2
3
4
5 /***
6 * Created by IntelliJ IDEA.
7 * User: hans
8 * Date: 11.10.2005
9 * Time: 13:13:47
10 * To change this template use File | Settings | File Templates.
11 */
12 public class AnalysisTransition {
13 public int ID;
14 public int N;
15 public final Marking in;
16 public final Marking out;
17
18 public AnalysisTransition(int id, int n) {
19 N = n;
20 ID = id;
21 in = new Marking(N);
22 out = new Marking(N);
23 }
24
25 public AnalysisTransition(int id, Marking inm, Marking outm) {
26 ID = id;
27 N = inm.N;
28 in = inm;
29 out = outm;
30 }
31
32 public boolean isEnabled(Marking m, Marking capacity) {
33 return (fire(m, capacity) != null);
34 }
35
36 public Marking fire(Marking m, Marking capacity) {
37 if (!Marking.lessOrEqual(in, m)) {
38 return null;
39 }
40 Marking mark = new Marking(N);
41 for (int i = 0; i < N; i++) {
42 if (m.get(i) != KarpMillerTree.INFINITY ) {
43 mark.set(i, m.get(i) - in.get(i) + out.get(i));
44 } else {
45 mark.set(i, KarpMillerTree.INFINITY);
46 };
47 }
48 if (!Marking.lessOrEqual(mark, capacity)) {
49 return null;
50 }
51 return mark;
52 }
53 }