JBoss.orgCommunity Documentation
This section describes how to use the command line tools that are available in the
bin
folder of the Scribble protocol tools distribution.
Information on the Scribble protocol notation (or language) can be found in the Scribble Protocol Guide .
The parse command takes a single parameter, which is the path to the file containing the protocol description to be parsed.
For example, if the user is in the top level folder of the Scribble tools distribution,
without the
bin
folder being added to the system path, then the
following command can be executed to parse one of the sample protocol descriptions:
bin/parse.sh samples/purchasing/Purchasing.spr
If the supplied file path is not valid, then the command will report an error.
This command will read the protocol description, as shown below, and convert it into an internal object model representation.
import Order; import CreditCheck; import CreditOk; import Confirmation; import InsufficientCredit; import OrderRejected; import OutOfStock; protocol Purchasing (role Buyer) { Buyer introduces Seller; Order from Buyer to Seller; choice at Seller { OutOfStock from Seller to Buyer; } or { Seller introduces CreditAgency; CreditCheck from Seller to CreditAgency; choice at CreditAgency { CreditOk from CreditAgency to Seller; Confirmation from Seller to Buyer; } or { InsuficientCredit from CreditAgency to Seller; OrderRejected from Seller to Buyer; } } }
If any errors are detected in the syntax of the parsed protocol description, then these will be reported to the command window.
The validate command takes a single parameter, which is the path to the file containing the protocol description to be validated.
For example, if the user is in the top level folder of the Scribble tools distribution, without the
bin
folder being added to the system path, then the following command can be executed to validate one of the sample protocol descriptions:
bin/validate.sh samples/purchasing/Purchasing.spr
When this command is performed initially, it will complete without any errors. However
if you edit the
samples/purchasing/Purchasing.spr
file, and change
the following line:
Order from Buyer to Seller;
For example, change the Seller role to Seller2 , and then re-run the validate command. This will result in the following error messages:
ERROR: [line 12] Unknown role 'Seller2'
Conformance checking functionality has been temporarily removed from this release, although an improved implementation should be provided in the near future, and therefore the command infrastructure has remained for now.
The conforms command takes two parameters, which are both paths to a file containing a protocol description. The first parameter is the protocol description to be checked for conformance against the second parameter's protocol description. So the second parameter is the reference protocol description.
For example, if the user is in the top level folder of the Scribble tools distribution,
without the
bin
folder being added to the system path, then the
following command can be executed to check one of the sample protocol descriptions
as being conformant with another reference protocol description:
bin/conforms.sh samples/models/conformance_descriptions/OrderProcess.spr samples/models/conformance_descriptions/ReferenceOrderProcess.spr
If you inspect the two process definitions, you will find one difference. The first protocol definition has the following interaction:
MyOrder from Buyer to Seller;
The second, reference protocol description, has the following interaction:
Order from Buyer to Seller;
This results in the following conformance error message:
ERROR: Type mismatch with referenced description, was expecting Order
The project command takes two parameters. The first parameter is the protocol description to be projected and the second parameter is the participant .
For example, if the user is in the top level folder of the Scribble tools distribution,
without the
bin
folder being added to the system path, then the
following command can be executed to project one of the sample protocol descriptions:
bin/project.sh samples/purchasing/Purchasing.spr CreditAgency
This results in the following located Protocol being displayed on the console:
import Order; import CreditCheck; import CreditOk; import Confirmation; import InsufficientCredit; import OrderRejected; import OutOfStock; protocol Purchasing at CreditAgency(role Seller) { CreditCheck from Seller; choice at CreditAgency { CreditOk to Seller; } or { InsuficientCredit to Seller; } }
The simulate command takes two parameters. The first parameter is the located protocol description and the second parameter is the event list to be simulated against the protocol.
For example, if the user is in the top level folder of the Scribble tools distribution,
without the
bin
folder being added to the system path, then the
following command can be executed to simulate the protocol description:
bin/simulate.sh samples/purchasing/Purchasing@Buyer.spr samples/purchasing/Purchasing@Buyer.events
The event file is a comma separated value (csv) format, with the first column representing the event type, and the second representing the value relevant for the event type. The event types are listed below:
send The value represents the message type.
receive The value represents the message type.
The event file used in the sample command above is:
send,Order receive,Confirmation
and the result of running the command is:
INFO: Validated Send Order INFO: Validated Receive Confirmation