1 /*
2 * The contents of this file are subject to the BT "ZEUS" Open Source
3 * Licence (L77741), Version 1.0 (the "Licence"); you may not use this file
4 * except in compliance with the Licence. You may obtain a copy of the Licence
5 * from $ZEUS_INSTALL/licence.html or alternatively from
6 * http://www.labs.bt.com/projects/agents/zeus/licence.htm
7 *
8 * Except as stated in Clause 7 of the Licence, software distributed under the
9 * Licence is distributed WITHOUT WARRANTY OF ANY KIND, either express or
10 * implied. See the Licence for the specific language governing rights and
11 * limitations under the Licence.
12 *
13 * The Original Code is within the package zeus.*.
14 * The Initial Developer of the Original Code is British Telecommunications
15 * public limited company, whose registered office is at 81 Newgate Street,
16 * London, EC1A 7AJ, England. Portions created by British Telecommunications
17 * public limited company are Copyright 1996-9. All Rights Reserved.
18 *
19 * THIS NOTICE MUST BE INCLUDED ON ANY COPY OF THIS FILE
20 */
21
22
23
24 package zeus.actors.graphs;
25
26 import java.util.*;
27 import zeus.util.*;
28 import zeus.concepts.*;
29 import zeus.actors.*;
30 import zeus.actors.rtn.*;
31 import zeus.actors.rtn.util.*;
32
33 public class se3 extends Node {
34 public se3() {
35 super("se3");
36 }
37
38 // memory useful for backtracking
39
40 protected int exec() {
41 Engine engine = context.Engine();
42 AuditTable audit = engine.getAuditTable();
43
44 // first perform join
45 GraphStruct gs = (GraphStruct)input;
46 Core.DEBUG(2,"se3 Input gs " + gs);
47
48 // Now prepare for post-contract phase
49 Goal g = (Goal)gs.goal.elementAt(0);
50
51 audit.add(g,gs.key,g.getCost(),false,false,context.whoami(),
52 gs.agent,g.getEndTime());
53
54 Core.DEBUG(2,"*** SE3 AuditTable State ***");
55 Core.DEBUG(2,audit);
56
57 // remove reserved resource and forward to auditable
58 DataRec record = (DataRec)gs.any;
59 Fact[] fact = record.getData();
60 Vector data = new Vector();
61 data.addElement(fact[0]);
62 context.ResourceDb().consume(record);
63 DelegationStruct ds = new DelegationStruct(context.whoami(),"result",
64 g.getId(),data);
65 audit.goodsReceived(ds);
66
67 output = input;
68 return OK;
69 }
70 protected void reset() {
71 }
72 }