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();
}