%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % File: process.db 6/24/2002 % This file is used by the business model simulator. :- multifile class/2. /******** % Provider_role/Receiver_role is only applicable to communication process process/10 process(Instance, Process/ID, Status, Priority, Begin_time/End_time, Time_cost, (Provider/Provider_type, Receiver/Receiver_type), Event, Precond, Action, Postcond). Process/ID = Process_name/Process_id, both are unique given by the BPM. Process_id is a shorthand reference. Status = created, triggered, executing, finished, suspended, reinstated, cancelled. Priority = high, medium, low Event = [true], or a list of triggers. Precond = [true], or a list of precond. Action = [true], or a list of actions. Postcond = [true], or a list of preconditions. Note: in the current implementation, each process may or may not have a trigger. --------------------- process_status_list([created, triggered, finished, suspended, reinstated, cancelled]). process_status(created, triggered). process_status(created, suspended). process_status(created, cancelled). process_status(triggered, finished). process_status(triggered, suspended). process_status(triggered, cancelled). process_status(suspended, reinstated). process_status(reinstated, triggered). ----------------------------------------------------------------------- event/7 event(Instance, Event_type, Status, Priority, Begin_time/End_time, (Provider/Provider_type, Receiver/Receiver_type), Event_content). Status = received/[], - when the event arrives processed/ProcessID_list, - An event has been dealt with, after a process is finished, its ID is added to the list finished/ProcessID_list, - when reached the end-junction suspended/ProcessID_list, cancelled/ProcessID_list. A ProcessID is a variable, it is the ID of the process type. Event_content = list, the details about the event. This content is flexible and may content any information necessary. received -> processed received -> suspended received -> cancelled processed -> finished processed -> suspended processed -> cancelled suspended -> reinstated reinstated -> processed ----------------------------------------------------------------------- issue/6 issue(Instance, Issue, Status, Priority, Begin_time/End_time, Issue_content). Issue_content = list, the details about the issue. This content is flexible and may content any information necessary. *************/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Process 1. process(Instance, 'Obtain User Requirements'/1, created, Priority, Begin_time/End_time, 1, (Provider/Provider_type, edinburgh/pc_specification), [event(Instance, customer_request_for_pc_specification, received/_, Priority, Begin_time/End_time, (Provider/Provider_type, Receiver/pc_specification), Event_content) ], [true], [create(entity(Provider_type, Provider, cond_action([ )), ], [exist(entity(Ent, customer, Att)) ] ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Process 2. process(Instance, 'Construct Basic Specification'/2, created, Priority, Begin_time/End_time, 1, (Provider/Provider_type, Receiver/pc_specification), [event(Instance, customer_request_for_pc_specification, processed/_, Priority, %% p1 finished processing Begin_time/End_time, (Provider/Provider_type, Receiver/Receiver_type), Event_content), [true], [post_issue trigger(Instance, customer_request_for_pc_specification, processed/2, Priority, Begin_time/End_time, (Provider/Provider_type, Receiver/Receiver_type), Event_content) ) ], [exists(solution(Provider, _, _, _, _)) ] ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % process 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%