Versions Compared

Key

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

...

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