Promotion Reaction Processes
Promotion reaction processes act like standard reaction process with additional promotion-specific parameters. You create specific process definitions or chain that are called when you promote an object to another system (Pusher & Promote Further Pusher) or when a promoted object is received (Pusher Acceptor). You can use the process definitions to ensure all criteria are met for promotion, for example, or request approval.
- Promote Further Pusher - promote a recently promoted car file on to another remote system
- Pusher Acceptor - determine if you accept the current car file for import
- Pusher Process Definition - promote an export rule set to another remote system
Pusher and Promote Further Pusher must submit System_Promote and System_Promote_Further, respectively, to do the actual work of promoting the export rule set/car file (again, respectively). Pusher Acceptor process definitions allow the import by default; so for these you have to design the logic and fail the process in cases where you want to overrule the promotion.
The process definitions are not meant to be submitted by you, they are submitted on demand by a remote system that you previously created.
You set the run as user with the RunAsUser registry entry.
Pusher Acceptor
Pusher Acceptor process definitions are linked to Source or Both remote systems. The name of the source remote system must match the originator ID of the remote system or be set to *
- a placeholder that matches all.
Note that if you set the lockdown registry entry, any inbound promotion request must have a corresponding Source or Both remote system for it to be considered.
A built-in push acceptor-like chain definition is available; it can easily be duplicated and thus converted to a push acceptor:
System_Import_Archive_WithApproval
Pusher
Pusher process definitions are linked to Destination remote systems. Pushers are used to initiate the promotion of objects.
The name of the remote system or the value of the SystemId registry entry are used by the remote Redwood Server to look up a Source or Both remote system.
Promote Further Pusher
Promote Further Pusher process definitions are linked to Destination remote systems. They are executed when you promote a System_Import_Archive further to another remote system to do the actual work of submitting System_Promote_Further.
SAP CTS+ (Change and Transport System Plus) Integration
Promotion reaction processes allow for Change Management System (CTS+) integration.
See Integrating the Promotion Module into SAP CTS and Pusher Process Definition for SAP CTS+ Integration for more details.
Example
Push Acceptor
The following is a allow everything Push Acceptor RedwoodScript process definition.
- Navigate to Definitions > chain definitions.
- From the context-menu of System_Import_Archive_WithApproval select Duplicate.
- In the new chain definitioneditor dialog, specify an appropriate name.
- On the Options tab, select Push Acceptor in the Reaction Process field.
- Choose Save & Close.
Reaction Process Type Pusher
The following code illustrates a simple Pusher reaction job:
{
JobDefinition jDefinition = jcsSession.getJobDefinitionByName("System_Promote");
Job process = jDefinition.prepare();
process.getJobParameterByName("exportRuleSetBusinessKey").setInValueString(exportRuleSetBusinessKey);
process.getJobParameterByName("remoteSystemBusinessKey").setInValueString(remoteSystemBusinessKey);
process.getJobParameterByName("sendToRemoteSystem").setInValueString(sendToRemoteSystem);
jcsSession.persist();
}
Reaction Process Type Promote Further Pusher
The following code illustrates a simple Promote Further Pusher reaction job:
{
JobDefinition jDefinition = jcsSession.getJobDefinitionByName("System_Promote_Further");
Job process = jDefinition.prepare();
process.getJobParameterByName("SourceObject").setInValueString(SourceObject);
process.getJobParameterByName("SourceObjectType").setInValueString(SourceObjectType);
process.getJobParameterByName("SourceObjectUniqueId").setInValueNumber(SourceObjectUniqueId);
process.getJobParameterByName("Address").setInValueString(Address);
process.getJobParameterByName("CARFile").setInValueString(CARFile);
process.getJobParameterByName("OriginalJobId").setInValueString(OriginalJobId);
if(Message != null)
{
process.getJobParameterByName("Message").setInValueString(Message);
}
else
{
process.getJobParameterByName("Message").setInValueString("Some default message.");
}
if(Data != null)
{
process.getJobParameterByName("Data").setInValueString(Data);
}
else
{
process.getJobParameterByName("Data").setInValueString("SomeFile");
}
jcsSession.persist();
}