Example Architecture Specification
As example we have an application consisting of two tools. Tool1 can either send a 'message' to Tool2 and then waits for an acknowledgement from Tool2, or it can send a 'quit' after which the application will shutdown.
data module Data
begin
exports
begin
functions
message : -> DATA
ack : -> DATA
quit : -> DATA
c1 : -> ID
c2 : -> ID
end
imports
ArchitectureTypes
end Data
process module ApplicationSystem
begin
exports
begin
processes
ApplicationSystem
end
imports
Data,
ArchitecturePrimitives
atoms
send-message
stop
processes
Component1
Component2
definitions
Component1 =
send-message .
snd(c1 >> c2, message) .
rec(c2 >> c1, ack) .
Component1
+ stop .
snd-quit
Component2 =
rec(c1 >> c2, message) .
snd(c2 >> c1, ack) .
Component2
ApplicationSystem =
Component1 || Component2
end ApplicationSystem
The
snd-quit
in the process definition for Component1 communicates with the architecture
environment followed by a disrupt to end all processes.
process module Application
begin
imports
Architecture {
System bound by [
System -> ApplicationSystem
] to ApplicationSystem
renamed by [
Architecture -> Application
]
}
end Application