Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This article describes how to implement a JS7 workflow with two shell jobs that communicate over a Message Queue Service (MQ). These jobs include one job for publishing and one job for receiving and executing JS7 - REST Web Service API calls.

...

  • the js7-jms-example.jar used in this example.,
  • the a configuration file named js7-jms-example.config configuration file containing credentials for the connection and information about the workflow.

...

  • Either download the .jar file from the Active MQ web site and add it to the class path
  • or, in the case of a Maven project; , add the following dependency to the project configuration.

Code Block
languagexml
titleMaven dependency for activemq-all
collapsetrue
<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.15.0</version>
</dependency>
  • Adjust the js7-jms-example.config configuration file to your own environment.

perl
Code Block
language
titleJMS configuration file: js7_-jms_config-example.config
linenumberstrue
collapsetrue
# Message ServerQueue Service Settings
jms_url             = tcp://localhost:61616
jms_queue_name      = test
jms_time_to_live    = 5000 

# JS7 JOC Cockpit Settings
joc_api_url         = http://localhost:4444/joc/api/
username            = root
password            = root

# /orders/add API Settings
controller_id       = js7
workflow_path       = /myWorkflowToStart

...

  • the produce argument specifies the use of a SOSProducer to publish a message (JSON body) to a Message Queue Service.
  • the consume argument specifies the use of a SOSConsumer to read a message (JSON body) from a Message Queue Service andto:
    • login to the JS7 REST Web Service API,
    • send the API call /orders/add with the body received from the Message Queue Service and finally to
    • logout.

The Java executable has to be included in the PATH environment variable or the Java call has to be adjusted to include the path to the Java executable.

Note
Make sure that the js7-jms-example.config configuration file from the archive is stored in the same path as the js7-jms-example.jar library used in the workflow.
Code Block
languagejs
titleWorkflow Configuration
linenumberstruejms_test
collapsetrue
{
  "version": "1.1.0",
  "timeZone": "Europe/Berlin",
  "instructions": [
    {
      "TYPE": "Execute.Named",
      "jobName": "producer_job",
      "label": "job_produce"
    },
    {
      "TYPE": "Execute.Named",
      "jobName": "consumer_job",
      "label": "job_consume"
    }
  ],
  "jobs": {
    "producer_job": {
      "agentName": "standaloneAgent",
      "executable": {
        "TYPE": "ShellScriptExecutable",
        "script": "java -jar C:/tmp/js7-jms-example.jar produce",
        "v1Compatible": false
      },
      "skipIfNoAdmissionForOrderDay": false,
      "parallelism": 1,
      "graceTimeout": 15,
      "failOnErrWritten": false,
      "warnOnErrWritten": false,
      "title": "produce"
    },
    "consumer_job": {
      "agentName": "standaloneAgent",
      "executable": {
        "TYPE": "ShellScriptExecutable",
        "script": "java -jar C:/tmp/js7-jms-example.jar consume",
        "v1Compatible": false
      },
      "skipIfNoAdmissionForOrderDay": false,
      "parallelism": 1,
      "graceTimeout": 15,
      "failOnErrWritten": false,
      "warnOnErrWritten": false,
      "title": "consumer"
    }
  }
}

...