...
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:
...
In addition a 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]