JBoss.orgCommunity Documentation

Chapter 7. Overlord S-RAMP Command Line

7.1. Connecting to S-RAMP server
7.2. Browsing the S-RAMP repository
7.3. Updating artifact MetaData
7.3.1. Properties
7.3.2. Custom Properties
7.3.3. Classifications
7.4. Querying the S-RAMP Repository using XPath2 Syntax
7.4.1. Stored Queries
7.5. Extending the S-RAMP CLI
7.6. Running Commands in Batch
7.7. Batch File Property Interpolation
7.8. Log-to-File

Using the S-RAMP cmdline tool s-ramp.sh

In the bin directory of the distribution you can find the s-ramp.sh. Run this command to fire up the shell

           _____       ______  ___ ___  ________
          /  ___|      | ___ \/ _ \|  \/  | ___ \
          \ `--. ______| |_/ / /_\ \ .  . | |_/ /
           `--. \______|    /|  _  | |\/| |  __/
          /\__/ /      | |\ \| | | | |  | | |
          \____/       \_| \_\_| |_|_|  |_|_|

  JBoss S-RAMP Kurt Stam and Eric Wittmann, Licensed under the
  Apache License, V2.0, Copyright 2012

The shell supports auto-completion and keeps a command history for duration of the session.

To connect the shell to the server type connect and hit the tab key. It should auto-complete to say s-ramp:connect http://localhost:8080/s-ramp-server and when hitting the return key you will be prompted for user credentials. If everything is successful, the cursor should go from red to green. Of course you will need to update the server and port information if your S-RAMP repository runs elsewhere.

To browse the artifacts in the repository run the following query:

s-ramp> s-ramp:query /s-ramp
Querying the S-RAMP repository:
Atom Feed (9 entries)
  Idx                    Type Name
  ---                    ---- ----
    1           ImageDocument user-properties.png
    2                Document overlord.demo.CheckDeployment-taskform.flt
    3         BrmsPkgDocument SRAMPPackage.pkg
    4           ImageDocument overlord.demo.SimpleReleaseProcess-image.png
    5           ImageDocument run-build-install.png
    6                Document overlord.demo.SimpleReleaseProcess-taskform.flt
    7           ImageDocument audio-input-microphone-3.png
    8            BpmnDocument overlord.demo.SimpleReleaseProcess.bpmn
    9            TextDocument HttpClientWorkDefinitions.wid

To obtain the metaData of overlord.demo.SimpleReleaseProcess.bpmn, which is number 8 in the list, issue

s-ramp> s-ramp:getMetaData feed:8
Meta Data for: 31b3acbc-cda8-4856-9e34-d3e645283035
  -- Core S-RAMP Info --
  Type: BpmnDocument
  Model: ext
  UUID: 31b3acbc-cda8-4856-9e34-d3e645283035
  Name: overlord.demo.SimpleReleaseProcess.bpmn
  Derived: false
  Created By: <anonymous>
  Created On: 2013-03-08T14:00:37.036-05:00
  Modified By: <anonymous>
  Modified On: 2013-03-18T14:58:46.328-04:00

S-RAMP supports an XPath2 Syntax for querying. For example to obtain all WSDL models in the repository use

s-ramp> s-ramp:query /s-ramp/wsdl/WsdlDocument
Querying the S-RAMP repository:
Atom Feed (1 entries)
  Idx                    Type Name
  ---                    ---- ----
    1            WsdlDocument OrderService.wsdl

When this WSDL file was uploaded derived information was extracted from it and stored a WSDL model. TO see the various data structures it derived simply hit the tab on s-ramp:query /s-ramp/wsdl

s-ramp> s-ramp:query /s-ramp/wsdl/
Binding                  BindingOperation         BindingOperationFault    BindingOperationInput    BindingOperationOutput
Fault                    Message                  Operation                OperationInput           OperationOutput
Part                     Port                     PortType                 WsdlDocument             WsdlExtension

Note that derived data is read only, and cannot be updated by the user.

To obtain all Operations in this WSDL use

s-ramp:query /s-ramp/wsdl/Operation
Querying the S-RAMP repository:
Atom Feed (1 entries)
  Idx                    Type Name
  ---                    ---- ----
    1               Operation submitOrder

You can narrow this query down even more by adding that the name needs to start with submit

s-ramp:query "/s-ramp/wsdl/Operation[xp2:matches(@name, 'submit.*')]"
Querying the S-RAMP repository:
    /s-ramp/wsdl/Operation[xp2:matches(@name, 'submit.*')]
Atom Feed (1 entries)
  Idx                    Type Name
  ---                    ---- ----
    1               Operation submitOrder

don’t forget to use the surrounding quotes, and a . after submit as required by XPath2.

To obtain all the artifacts that were derived from an artifact you can use

/s-ramp[relatedDocument[@uuid = '<uuid>'

In this case we use the uuid of a wsdl and get all the artifacts derived from the wsdl

s-ramp:query "/s-ramp[relatedDocument[@uuid = '15a94308-a088-4a03-ad83-e60239af74e4']]"
Querying the S-RAMP repository:
	/s-ramp[relatedDocument[@uuid = '15a94308-a088-4a03-ad83-e60239af74e4']]
Atom Feed (16 entries)
  Idx                    Type Name
  ---                    ---- ----
    1          OperationInput submitOrder
    2             WsdlService OrderService
    3             SoapAddress soap:address
    4   BindingOperationInput wsdl:input
    5             SoapBinding soap:binding
    6                    Part parameters
    7                 Binding OrderServiceBinding
    8  BindingOperationOutput wsdl:output
    9                 Message submitOrderResponse
   10         OperationOutput submitOrderResponse
   11        BindingOperation submitOrder
   12                 Message submitOrder
   13               Operation submitOrder
   14                    Port OrderServicePort
   15                    Part parameters
   16                PortType OrderService

To get a list of all artifacts that were extracted from another archive use

s-ramp:query "/s-ramp[expandedFromDocument[@uuid = '<uuid>']"

let’s say we uploaded a jar file containing switchyard artifacts, with uddi 67c6f2d3-0f10-4f0d-ada6-d85f92f02a33:

s-ramp:query "/s-ramp[expandedFromDocument[@uuid = '67c6f2d3-0f10-4f0d-ada6-d85f92f02a33']]"
Querying the S-RAMP repository:
	/s-ramp[expandedFromDocument[@uuid = '67c6f2d3-0f10-4f0d-ada6-d85f92f02a33']]
Atom Feed (3 entries)
  Idx                    Type Name
  ---                    ---- ----
    1             XmlDocument switchyard.xml
    2             XmlDocument beans.xml
    3             XmlDocument faces-config.xml

For more information about querying the repository see the S-RAMP Query Language section of this guide.

The S-RAMP CLI has a number of built-in commands that are ready to be used. However, it is also possible to extend the CLI with new custom commands. This section describes how to do it.

New CLI commands are contributed by creating a class that implements the ShellCommandProvider interface. The provider will indicate a namespace for its commands along with a Map of commands (command name → command). The provider and command implementations should be packaged up into a JAR along with a file named:


The JAR must be made available to the S-RAMP CLI, either by putting it on the classpath, or else by putting it in the following directory:


For a working example of a custom S-RAMP CLI command, there is a demo in the S-RAMP distribution called s-ramp-demos-shell-command.

An interesting thing you can do with the S-RAMP CLI is to use it as a batch processor. To do this, simply create a text file with all of the commands you wish to run in a batch (one per line) and then ask the S-RAMP CLI to execute the batch. For example, a batch of commands may look like this:

# Connect to S-RAMP
connect http://localhost:8080/s-ramp-server admin admin123!

# Upload an ontology
ontology:upload /path/to/data/my-ontology.owl

# Add some artifact content
upload /path/to/artifact-content.ext
property set property-foo Bar

To execute the batch, simply do:

sramp.sh -f /path/to/cli-commands.txt

Note that it is possible to use Ant style property replacements within your S-RAMP CLI batch file. The CLI will look for property values as System Properties, or by passing in the path to a Java Properties file to the CLI via a "-propertiesFile" option.

We support simply property replacement as well as property replacement with defaults. For example:

# Connect to S-RAMP
connect ${sramp.endpoint:http://localhost:8080/s-ramp-server} ${sramp.username:admin} ${sramp.password:admin123!}
upload ${resource.path}

The above batch file allows whoever is using it (via the S-RAMP CLI) to set the following properties either via System Properties or via a passed-in properties file:

Rather than creating batch files by hand, the S-RAMP CLI includes a "log-to-file" option. All commands executed during the CLI session will be logged to a file, directly usable as a batch file in the future.

sramp.sh -l /path/to/cli-commands.txt