Research Article

An Improved Abstract State Machine Based Choreography Specification and Execution Algorithm for Semantic Web Services

Listing 2

runChoreography predicate.
(1) runChoreography(?goal, ?WS)  :-
(2)proveGoalPost(?goal),  !,
(3)watchln([Success! -?goal-and-?WS-are-choreographed!]).
(4)runChoreography(?goal, ?WS):-
(5)eraseModule(DeltaWM),
(6)runWsRules(?WS),
(7)runGoalRules(?goal),
(8) (  (contradictory(WM,DeltaWM), !,
(9)watchln(Choreography failed due to CONTRADICTION.) ) or
(10)(  +  deltaMakesAChange(WM,DeltaWM), !,
(11)watchln(Choreography failed due to NO CHANGE.) ) or
(12) (  mergeDeltaIntoWM,
(13) runChoreography(?goal,?WS) )).