...
An external application, which is able and has the authorisation to send such commands to the JSEngine can use http(s) or tcp/ip to establish the communication. That means, that even a script language like javascript can be used to communicate. For Java users we have a wrapper class paket which was created using JAXB and the xsd schema for the commands and answers.
...
Protocols
The commands can be transferred to the JobScheduler via the following protocols:
- httpHTTP
- httpsHTTPS
- tcpTCP
- udpUDP
and telnet.
In addition a cli command line interface (CLI) is available via the "jobscheduler.sh" script.
Example using JOC
You can use JOC to send a command using the URL:
...
where <show_state/> is an example for a command of the JobScheduler external API.
Example using the JobScheduler script
You can use the startscript found in "./bin" to send a command too.
An example for using the command line option
...
Code Block |
---|
jobscheduler.sh command "<show_state/>" | sed -e 's;[^>]*$;;' | xmllint --format - |
Object Model: start an order
Code Block | ||||
---|---|---|---|---|
| ||||
package com.sos.scheduler.model.commands; import java.util.List; import org.apache.log4j.Logger; import org.junit.BeforeClass; import org.junit.Test; import com.sos.JSHelper.Exceptions.JobSchedulerException; import com.sos.scheduler.model.SchedulerObjectFactory; import com.sos.scheduler.model.answers.Answer; import com.sos.scheduler.model.answers.ERROR; import com.sos.scheduler.model.objects.Params; import com.sos.scheduler.model.objects.Spooler; public class JSCmdAddOrderTest { private final static Logger logger = Logger.getLogger(JSCmdAddOrderTest.class); private static SchedulerObjectFactory factory = null; @BeforeClass public static void setUpBeforeClass() throws Exception { factory = new SchedulerObjectFactory("localhost", 4112); factory.initMarshaller(Spooler.class); } @Test public final void testSetValidXmlContent() { JSCmdAddOrder cmdOrder = factory.createAddOrder(); cmdOrder.setJobChain("/job_chain_multiple_inheritance_sample/job_chain_multiple_inheritance_sample"); cmdOrder.setReplace("yes"); cmdOrder.setId("A"); cmdOrder.setTitle("JobNet: null"); cmdOrder.setParams(new Params()); List<Object> objL = cmdOrder.getParams().getParamOrCopyParamsOrInclude(); objL.add(factory.createParam("successor", "B,C,D,")); objL.add(factory.createParam("predecessor", "")); objL.add(factory.createParam("script_to_execute", "echo Here is the bootstrap order")); objL.add(factory.createParam("uuid_jobnet_identifier", "989ac2ce-2538-4276-8003-3350a6224c97")); objL.add(factory.createParam("jobnet", "/job_chain_multiple_inheritance_sample/job_chain_multiple_inheritance_sample")); cmdOrder.setAt("2012-04-17 22:00"); String xml = cmdOrder.toXMLString(); cmdOrder.run(); Answer answer = cmdOrder.getAnswer(); ERROR jsError = answer.getERROR(); if (jsError != null) { logger.debug(xml + "\n" + jsError.getText()); throw new JobSchedulerException("Error in execution of order"); } } } |
...
See also
- [Technical description of JobScheduler/scheduler.pdf], Chapter 5.2 ff
- [The xml for the external API/xml.xml]
- [SOSJobSchedulerModel/SOSJobSchedulerModel/html/index.html][
- SOSJobSchedulerModel, junit testsSOSJobSchedulerModel.junit/html/index.html]