%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/* This is the message content of I-X. The
I-X wrapper is:
"... the post_issue/2 predicate below...."
To send back the message to Aberdeen I-X, change the
sender-id to "Edinburgh".
After instantiated the three examples in the field
above, three such above messages will be sent separately, each
becomes the message content in the AKT-BUS format.
(A field "priority" has been deleted, because it is not needed yet,
but may be used in the future.)
*/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Message that passes from I-X/WFS to other
% agents/brokers/I-X/WFS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/******
post_issue/2: (receive/issue/2 has the same format)
post_issue((Sender/Sender_role, Receiver/Receiver_role), Issue).
Issue = issue_occ(Instance, Issue, State, Priority,
Time, Issue_content).
Sender = Sender ID/name
Sender_Role = the role type of sender given a context
Receiver = receiver ID/name
Receiver_role = the role type of receiver given a context
Instance = issue instance ID,
Issue = issue type name,
State = current status of the issue instance, i.e.
high, medium and low. Default is medium.
Time = Begin_time/End_time,
Issue_content = issue content, in this case, our solution space.
example template:
issue_occ(issue0,
solve_technical_constraint,
created,
high,
3/End_time,
[solution(.....) ]
).
******/
/*************************************************************************
solution(+Customer, +Requirements,
+Old_sol, -New_sol, -Difference).
Customer = String, Customer ID/Name
Requirements = List, customer Requirements
Old_sol = List, Old, initial/basic solution for the requirements
New_sol = List, the improved new solution
Difference = List, the differences between the new and old
solutions, in the form of Add_list/Del_list. Add_list is a list of
predicates that have been added to the old solution, Del_list is a
list of predicates that have been deleted from the old_solution. If
one manipulates the old solution according to the difference list,
one can derive the new solution.
+ sign: indicates input value
- sign: indicates required returned value
In this case, values of all of the + signed variables are not
to be changed during the communication.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% solution predicate template.
%
% init_solution indicates a minimum set of solution spec.
% for any requirement, i.e. an io, a disk_controller
% and processor board must be allocated.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
post_issue((Sender/Sender_role, Receiver/Receiver_role),
issue_occ(Issue_Instance,
Issue,
Status,
Priority,
Begin_time/End_time,
[solution(
Customer,
Requirements,
[ instance_of(X, processor), % initial/basic solution
instance_of(Y, disk_controller),
instance_of(Z, io),
allocate(X, Slot1),
allocate(Y, Slot2),
allocate(Z, Slot3),
total_cost(Cost) ],
New_solution, % revised solution
Add_list/Deleted_list
)
]) ).
*************************************************************************/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% running example 1: for message content passing
% to the KRAFT system.
%
% For the aberdeen side, Aberdeen does not need to alter total_cost
% predicate. Initially, three running examples have been created
% below.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% note that the capability description may be a subset
% of a particular type of board.
post_issue((edinburgh/marketing, aberdeen/technology),
issue_occ(issue1,
solve_technical_constraint,
created/List,
high,
1/_End_time,
solution(john,
[total_cost(M),
less_than(M, 1000)
],
[ instance_of(X, processor),
instance_of(Y, disk_controller),
instance_of(Z, io),
allocate(X, _Slot1),
allocate(Y, _Slot2),
allocate(Z, _Slot3),
total_cost(_Cost) ],
_New_solution,
_Difference ) % solution
) % issue_occ
). % post_issue
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% running example 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
post_issue((edinburgh/marketing, aberdeen/technology),
issue_occ(issue2,
solve_technical_constraint,
created,
high,
2/_End_time,
solution(mary,
[total_cost(M),
less_than(M, 1500),
special_req(_Board, capability, [fast_graphics])
],
[ instance_of(X, processor),
instance_of(Y, disk_controller),
instance_of(Z, io),
allocate(X, _Slot1),
allocate(Y, _Slot2),
allocate(Z, _Slot3),
total_cost(_Cost) ],
_New_Solution,
_Difference )
)).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% running example 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
post_issue((edinburgh/marketing, aberdeen/technology),
issue_occ(issue3,
solve_technical_constraint,
created,
high,
1/_End_time,
solution(lisa,
[],
[ instance_of(X, processor),
instance_of(Y, disk_controller),
instance_of(Z, io),
allocate(X, _Slot1),
allocate(Y, _Slot2),
allocate(Z, _Slot3),
total_cost(_Cost) ],
_New_Solution,
_Difference )
)).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% end of file
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%