Creating Chains in RedwoodScript
To programmatically create a Chain in RedwoodScript, use code like the following. This code sets a precondition the user created previously on the Chain Process.
Copy
{
String pPartition = "RW_DEMO";
String jdName = "MyJobChainWithPrecondition";
String stepName = "Stepartition 1";
String pfunction = "=Custom.alwaysFalse()";
//get or create a partition (here we create one if it does not already exist)
Partition partition = jcsSession.getPartitionByName(pPartition);
if (partition == null)
{
partition = jcsSession.createPartition();
partition.setName(pPartition);
}
JobDefinition jDefinition = jcsSession.getJobDefinitionByName(partition, jdName);
if (jDefinition == null)
{
//Create JobDefinition of type JOB_CHAIN (chain definition)
jDefinition = jcsSession.createJobDefinition();
jDefinition.setName(jdName);
jDefinition.setJobDefinitionType(jcsSession.getJobDefinitionTypeByName(JobDefinitionType.JOB_CHAIN));
jDefinition.setPartition(partition);
//Create jobchain object with one step and one job chain call
JobChain jchain = jcsSession.createJobChain();
jchain.setJobDefinition(jDefinition);
//step
JobChainStepartition jcstep = jchain.createJobChainStep();
jcstep.setSequenceNumber(Long.valueOf(0));
jcstep.setName(stepName);
//job chain call
JobChainCall jccall = jcstep.createJobChainCall();
JobDefinition ssleep = jcsSession.getJobDefinitionByName("System_Sleep");
jccall.setJobDefinition(ssleep);
jccall.setSequenceNumber(Long.valueOf(0));
jccall.createJobChainCallPrecondition().setExpression(pfunction);
}
else
{
jcsOut.println("JobDefinition " + jdName + " exists!");
jcsOut.println("You can change the JobDefinition name on the line:\n String jdName = \"MyJobChainWithPrecondition\";");
}
jcsSession.persist();
}