Software Engineering with PSF

Example ToolBus Script

process PT1 is
let
    T1: tool1adapter
in
    execute(tool1adapter, T1?) .
    (
        rec-event(T1, message) .
        snd-msg(t1, t2, message) .
        rec-msg(t2, t1, ack) .
        snd-ack-event(T1, message)
    +   rec-event(T1, quit) .
        shutdown("")
    ) * delta
endlet

process PT2 is
let
    T2: tool2
in
    execute(tool2, T2?) .
    (
        rec-msg(t1, t2, message) .
        snd-eval(T2, eval(message)) .
        rec-value(T2, value(ack)) .
        snd-msg(t2, t1, ack)
    ) * delta
endlet
The processes PT1 and PT2 closely resemble the processes PTool1 and PTool2 in the example as ToolBus application specification.

The execute actions in the ToolBus script correspond to starting the adapter for Tool1 and starting Tool2 in parallel with the processes PT1 and PT2 respectively.

tool tool1adapter is {
    command = "wish-adapter -script tool1adapter.tcl" }
tool tool2 is { command = "wish-adapter -script tool2.tcl" }
We specify how to execute the tools in the execute actions.

toolbus(PT1, PT2)
We specify the execution of the ToolBus. The ToolBus executes the processes PT1 and PT2 in parallel.