Companion Twirl Templates

Before to use Companion Twirl Template take a look how Twirl Templates work inside Companion for Delivery Project.

Getting Started

Configuration

To use Companion Twirl Templates inside Companion for Delivery projects you must include it in the plugin dependencies. Furthermore, to have autocompletion in your IDE you must include it in your projet dependencies.

<dependencies>
    <!-- optional used for autocomplete-->
    <dependency>
        <groupId>fr.cantor.c4d.templates</groupId>
        <artifactId>twirl-templates</artifactId>
        <version>${c4d-templates-versions}</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>fr.cantor.c4d</groupId>
            <artifactId>c4d-maven-plugin</artifactId>
            <version>${c4d-maven-plugin.version}</version>
            <extensions>true</extensions>
            <dependencies>
                <dependency>
                    <groupId>fr.cantor.c4d.templates</groupId>
                    <artifactId>twirl-templates</artifactId>
                    <!-- Here set companion template version -->
                    <version>${c4d-templates-versions}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

Usage

To use Companion Twirl Template inside .companion.xml you must include follow imports :

@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.templates.xml._
@import fr.cantor.c4d.templates.functions.xml._
@import fr.cantor.c4d.templates.lookup.xml._
@import fr.cantor.c4d.templates.bindings.xml._
@import fr.cantor.c4d.templates.approve.xml._
@import fr.cantor.c4d.templates.plugins.xml._
@import fr.cantor.c4d.templates.setup.xml._

Configuration Templates

LookupTable Templates

Templates to use for LookupTable.

LookupTable

Generate LookupTable xml.

@LookupTable(config, id, name, parentID, ignoreCase, replaceEmptyWithKey, mappings, defaultSubstitution)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringLookupTable idYesNo
nameStringLookupTable nameYesNo
parentIDStringLookupTable Parent ID (Expect a classification)YesNo
ignoreCaseBooleanIgnore case on valuesNofalse
replaceEmptyWithKeyBooleanReplace empty value with keyNofalse
mappingsAnyExpect an array of LookupTableEntryNoArray()
defaultSubstitutionStringDefault value when no matches are found in source valuesNoNo

LookupTableEntry

Define LookupTable entry that enable to transform a value with a LookUpTable.

Can only be used with LookupTable twirl template.

@LookupTableEntry(fromValue, toValue)

ParameterTypeDescriptionRequiredDefault Value
fromValueStringSource value inside the LookupTableYesNo
toValueStringTranslated value of fromValue inside LookupTableYesNo

LookupTableFromFile

Generate LookupTable xml from a csv File with ; separator.

@LookupTableFromFile(config, id, name, parentID, ignoreCase, replaceEmptyWithKey, fileRelativeFromModule, defaultSubstitution)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringLookupTable idYesNo
nameStringLookupTable nameYesNo
parentIDStringLookupTable Parent ID (Expect a classification)YesNo
ignoreCaseBooleanIgnore case on valuesNofalse
replaceEmptyWithKeyBooleanReplace empty value with keyNofalse
fileRelativeFromModuleStringPath of used to generate LookupTable. This path is relative to the module directory where the template is usedYesString
defaultSubstitutionStringDefault value when no matches are found in source valuesNoNo

BusinessRules Templates

BusinessLibrary

Generate business library xml.

@BusinessLibrary(config, id, name, setupGroup, jsContent, dependencies, description)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringBusiness library idYesNo
nameStringBusiness library nameYes""
setupGroupStringBusiness library setupGroupYesNo
jsContentAnyBusiness library JavaScript contentYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
descriptionStringBusiness library descriptionNo""
Example of using the BusinessLibrary template
@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.BusinessLibrary

@(config: CompanionParams)
@BusinessLibrary(config = config,
  id = "Utils",
  name = "Utils",
  setupGroup = "Libraries",
  jsContent = file("BusinessLibraries/Utils.js", true)
)

GlobalBusinessAction

Generate global business action xml.

@GlobalBusinessAction(config, id, name, description, setupGroup, dependencies, appliesIfPlugins, plugins, functionDependencies, validities, allTypesValid, runPrivileged, approve)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringGlobal business action idYesNo
nameStringGlobal business action nameNo""
descriptionStringGlobal business action descriptionNo""
setupGroupStringGlobal business action setupGroupYesNo
dependenciesArray[Xml]Bind business libraries dependencies see DependencyNoArray()
appliesIfPluginsArray[Any]Bind business rule plugins to specify a precondition to be evaluated before the business rule is appliedNoArray()
pluginsArray[Any]Bind business rule plugins that apply when business rule is runNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
validitiesArray[String]Set valid global business action usertypesNoArray()
allTypesValidBooleanDetermines if the business rule will be valid for all usertypes in step. Note validities must not be setNofalse
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue
approveXmlDetermines if the business rule will be tested or executed on approval and if changes will be approvedNoNever()
Example of using the GlobalBusinessAction template

The two templates presented below can be simplified with the JavascriptGlobalBusinessAction template

Example of using the GlobalBusinessAction template with a custom plugin

@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.GlobalBusinessAction
@import fr.cantor.c4d.templates.approve.xml.TriggerAndApprove

@(config: CompanionParams)
@javaScriptBusinessActionWithBindsPlugin = {
	<BusinessPlugin BusinessRulePluginID="JavaScriptBusinessActionWithBinds">
		<Parameters>
			<Parameter ID="Binds" Type="java.lang.String">
			@escapeXml {
				<BindMap>
					<Bind Alias="node" ParameterClass="null" contractID="CurrentObjectBindContract"></Bind>
					<Bind Alias="manager" ParameterClass="null" contractID="ManagerBindContract"></Bind>
					<Bind Alias="logger" ParameterClass="null" contractID="LoggerBindContract"></Bind>
				</BindMap>
			}
			</Parameter>
			<Parameter ID="ErrorMessages" Type="java.lang.String"></Parameter>
			<Parameter ID="JavaScript" Type="java.lang.String">@file("BusinessRules/Actions/ApproveVariant.js", true)</Parameter>
		</Parameters>
	</BusinessPlugin>
}
@GlobalBusinessAction(config = config,
	id = "ApproveVariant",
	name = "ApproveVariant",
	setupGroup = "Actions",
	plugins = Array(javaScriptBusinessActionWithBindsPlugin),
	validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
	approve = TriggerAndApprove()
)

Example of using the GlobalBusinessAction template with a predefined plugin :

@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.GlobalBusinessAction
@import fr.cantor.c4d.templates.approve.xml.TriggerAndApprove
@import fr.cantor.c4d.templates.plugins.xml.JavascriptBusinessActionPlugin
@import fr.cantor.c4d.templates.bindings.xml._

@(config: CompanionParams)
@GlobalBusinessAction(config = config,
	id = "ApproveVariant",
	name = "ApproveVariant",
	setupGroup = "Actions",
	plugins = Array(
		JavascriptBusinessActionPlugin(
			jsContent = file("BusinessRules/Actions/ApproveVariant.js", true),
			bindings = Array(BindCurrentObject(),
						BindManager(),
						BindLogger()))
	),
	validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
    approve = TriggerAndApprove()
)

GlobalBusinessCondition

Generate global business condition xml.

@GlobalBusinessCondition(config, id, name, description, setupGroup, dependencies, appliesIfPlugins, plugins, functionDependencies, validities, allTypesValid, runPrivileged, approve)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringGlobal business condition idYesNo
nameStringGlobal business condition nameNo""
setupGroupStringGlobal business condition setupGroupYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
descriptionStringGlobal business condition descriptionNo""
appliesIfPluginsArray[Any]Bind business rule plugins to specify a precondition to be evaluated before the business rule is appliedNoArray()
pluginsArray[Any]Bind business rule plugins that apply when business rule is runNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
validitiesArray[String]Set valid global business condition usertypesNoNo
allTypesValidBooleanDetermines if the business rule will be valid for all usertypes in step. Note validities must not be setNofalse
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue
approveXmlDetermines if the business rule will be tested or executed before or after approvalNoNever()
Example of using the GlobalBusinessCondition template

The two templates presented below can be simplified with the JavascriptGlobalBusinessCondition template

Example of using the GlobalBusinessCondition template with a custom plugin

@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.GlobalBusinessCondition
@import fr.cantor.c4d.templates.approve.xml.ValidateBefore

@(config: CompanionParams)
@javaScriptBusinessConditionWithBindsPlugin = {
    <BusinessPlugin BusinessRulePluginID="JavaScriptBusinessConditionWithBinds">
        <Parameters>
            <Parameter ID="Binds" Type="java.lang.String">
            @escapeXml {
                <BindMap>
                    <Bind Alias="node" ParameterClass="null" contractID="CurrentObjectBindContract"></Bind>
                    <Bind Alias="manager" ParameterClass="null" contractID="ManagerBindContract"></Bind>
                    <Bind Alias="logger" ParameterClass="null" contractID="LoggerBindContract"></Bind>
                </BindMap>
            }
            </Parameter>
            <Parameter ID="ErrorMessages" Type="java.lang.String"></Parameter>
            <Parameter ID="JavaScript" Type="java.lang.String">@file("BusinessRules/Conditions/CheckVariants.js", true)</Parameter>
        </Parameters>
    </BusinessPlugin>
}
@GlobalBusinessCondition(config = config,
    id = "CheckVariants",
    name = "CheckVariants",
    setupGroup = "Conditions",
    plugins = Array(javaScriptBusinessConditionWithBindsPlugin),
    validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
    approve = ValidateBefore()
)

Example of using the GlobalBusinessCondition template with a predefined plugin :

@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.GlobalBusinessCondition
@import fr.cantor.c4d.templates.approve.xml.ValidateBefore
@import fr.cantor.c4d.templates.plugins.xml.JavascriptBusinessConditionPlugin
@import fr.cantor.c4d.templates.bindings.xml._

@(config: CompanionParams)
@GlobalBusinessCondition(config = config,
    id = "CheckVariants",
    name = "CheckVariants",
    setupGroup = "Conditions",
    plugins = Array(
        JavascriptBusinessConditionPlugin(
            jsContent = file("BusinessRules/Conditions/CheckVariants.js", true),
            bindings = Array(BindCurrentObject(),
                BindManager(),
                BindLogger())
        )
    ),
    validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
    approve = ValidateBefore()
)

LocalBusinessAction

Generate local business action xml.

@LocalBusinessAction(id, name, description, dependencies, appliesIfPlugins, plugins, functionDependencies, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
idStringLocal business action idYesNo
nameStringLocal business action nameNo""
descriptionStringLocal business action description in stepNo""
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
appliesIfPluginsArray[Any]Bind business rule plugins to specify a precondition to be evaluated before the business rule is appliedNoArray()
pluginsArray[Any]Bind business rule plugins that apply when business rule is runNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue

LocalBusinessCondition

Generate local business condition xml.

@LocalBusinessCondition(id, name, description, dependencies, appliesIfPlugins, plugins, functionDependencies, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
idStringLocal business condition idYesNo
nameStringLocal business condition nameNo""
descriptionStringLocal business condition description in stepNo""
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
appliesIfPluginsArray[Any]Bind business rule plugins to specify a precondition to be evaluated before the business rule is appliedNoArray()
pluginsArray[Any]Bind business rule plugins that apply when business rule is runNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue

Approve

Generates the xml used to define that the business rule is executed at a specific approval step

Never

The given business rule isn't executed on approval

@Never()

Trigger

The given business action is executed on approval but changes aren't approved

@Trigger()

TriggerAndApprove

The given business action is executed on approval and changes are approved

@TriggerAndApprove()

ValidateAfter

The given business condition is executed after approval

@ValidateAfter()

ValidateBefore

The given business condition is executed before approval

@ValidateBefore()

ValidateBeforeAndAfter

The given business condition is executed before and after approval

@ValidateBeforeAndAfter()

Dependency

Generate xml of business library dependency

@Dependency(id, alias)

ParameterTypeDescriptionRequiredDefault Value
idStringTarget business library idYesNo
aliasStringTarget business library name in business rule JavaScriptYesNo

Plugins

AssignedGeneratedValue

Plugin to assign a value to an attribute using a value generator

@AssignedGeneratedValue(attribute, valueGenerator)

ParameterTypeDescriptionRequiredDefault Value
attributeStringId of the attributeYesNo
valueGeneratorStringId of the value generatorYesNo

JavascriptBusinessActionPlugin

Plugin to execute Javascript for an action

@JavascriptBusinessActionPlugin(jsContent, bindings, errorMessages)

ParameterTypeDescriptionRequiredDefault Value
jsContentAnyBusiness action JavaScript contentYesNo
bindingsTemplate twirl / XMLBusiness action bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()

JavascriptBusinessConditionPlugin

Plugin to execute Javascript for a condition

@JavascriptBusinessConditionPlugin(jsContent, bindings, errorMessages)

ParameterTypeDescriptionRequiredDefault Value
jsContentAnyBusiness condition JavaScript contentYesNo
bindingsTemplate twirl / XMLBusiness condition bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()

ReferenceOtherBusinessAction

Plugin to reference another business action

@ReferenceOtherBusinessAction(businessRuleId)

ParameterTypeDescriptionRequiredDefault Value
businessRuleIdStringId of the business action to referenceYesNo

ReferenceOtherBusinessCondition

Plugin to reference another business condition

@ReferenceOtherBusinessCondition(businessRuleId)

ParameterTypeDescriptionRequiredDefault Value
businessRuleIdStringId of the business condition to referenceYesNo
valueWhenNABooleanValue of the business condition if assessed at NANofalse

Business Functions Templates

BusinessFunction

  • Base template to generate business function xml.

@BusinessFunction(config, id, name, setupGroup, jsContent, returnType, dependencies, additionalBindings, functionParameterBindings, description, errorMessages, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringBusiness function idYesNo
nameStringBusiness function nameYesNo
setupGroupStringBusiness function setupGroupYesNo
jsContentAnyBusiness function JavaScript contentYesNo
returnTypeStringBusiness function return object typeYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
additionalBindingsTemplate twirl / XMLBusiness function bindings see JavaScript BindingsNoNo
functionParameterBindingsTemplate twirl / XMLBind business function input parameters (See BusinessFunctionToNode), for available bindings see JavaScript BindingsNoNo
descriptionStringBusiness function descriptionNo""
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue
Example of using the BusinessFunction template

Example with a business function similar to BusinessFunctionToNode :

@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.functions.xml.BusinessFunction

@(config: CompanionParams)
@BusinessFunction(config = config,
  id = "BF_GET_PARENT_NODE",
  name = "getParentNode",
  setupGroup = "BusinessFunctions",
  jsContent = file("functions/getParentNode.js", true),
  returnType = "com.stibo.core.domain.Node",
  functionParameterBindings = Array(
    <Bind Alias="node" Description="" ParameterClass="null" contractID="NodeBindContract"></Bind>
  ),
  description = "return parent node of the given node"
)
return node.getParent();

BusinessFunctionToNode

  • Preconfigured template to return a node from input parameter node :
    • returnType : com.stibo.core.domain.Node
    • functionParameterBindings :

@BusinessFunctionToNode(config, id, name, setupGroup, jsContent, dependencies, additionalBindings, description, errorMessages, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringBusiness function idYesNo
nameStringBusiness function nameYesNo
setupGroupStringBusiness function setupGroupYesNo
jsContentAnyBusiness function JavaScript contentYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
additionalBindingsTemplate twirl / XMLBusiness function bindings see JavaScript BindingsNoNo
descriptionStringBusiness function descriptionNo""
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue

js sample (return current node parent) :

return node.getParent();

JavaScript specific templates

JavascriptGlobalBusinessAction

Generate global business action with a javascript plugin.
Javascript plugin is configured by default with the following bindings in this order : BindCurrentObject, BindManager, BindLogger

@JavascriptGlobalBusinessAction(config, id, name, description, setupGroup, dependencies, jsContent, removeDefaultBindings, additionalBindings, errorMessages, functionDependencies, validities, allTypesValid, runPrivileged, approve)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringGlobal business action idYesNo
nameStringGlobal business action nameNo""
descriptionStringGlobal business action descriptionNo""
setupGroupStringGlobal business action setupGroupYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
jsContentAnyGlobal business action JavaScript contentYesNo
removeDefaultBindingsBooleanDetermines whether the business rule should apply the default bindingsNofalse
additionalBindingsTemplate twirl / XMLGlobal business action bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
validitiesArray[String]Set valid global business action usertypesNoArray()
allTypesValidBooleanDetermines if the business rule will be valid for all usertypes in step. Note validities must not be setNofalse
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue
approveXmlDetermines if the business rule will be tested or executed on approval and if changes will be approvedNoNever()
Example of using the JavascriptGlobalBusinessAction template
@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.JavascriptGlobalBusinessAction
@import fr.cantor.c4d.templates.approve.xml.TriggerAndApprove

@(config: CompanionParams)
@JavascriptGlobalBusinessAction(config = config,
	id = "ApproveVariant",
	name = "ApproveVariant",
	setupGroup = "Actions",
	jsContent = file("BusinessRules/Actions/ApproveVariant.js", true),
	validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
	approve = TriggerAndApprove()
)

JavascriptGlobalBusinessCondition

Generate global business condition with a javascript plugin.
Javascript plugin is configured by default with the following bindings in this order : BindCurrentObject, BindManager, BindLogger

@JavascriptGlobalBusinessCondition(config, id, name, description, setupGroup, dependencies, jsContent, removeDefaultBindings, additionalBindings, errorMessages, functionDependencies, validities, allTypesValid, runPrivileged, approve)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
idStringGlobal business condition idYesNo
nameStringGlobal business condition nameNo""
descriptionStringGlobal business condition descriptionNo""
setupGroupStringGlobal business condition setupGroupYesNo
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
jsContentAnyGlobal business condition JavaScript contentYesNo
removeDefaultBindingsBooleanDetermines whether the business rule should apply the default bindingsNofalse
additionalBindingsTemplate twirl / XMLGlobal business condition bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
validitiesArray[String]Set valid global business condition usertypesNoNo
allTypesValidBooleanDetermines if the business rule will be valid for all usertypes in step. Note validities must not be setNofalse
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue
approveXmlDetermines if the business rule will be tested or executed before or after approvalNoNever()
Example of using the JavascriptGlobalBusinessCondition template
@import fr.cantor.c4d.xml.extensions.Extensions._
@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.xml.JavascriptGlobalBusinessCondition
@import fr.cantor.c4d.templates.approve.xml.ValidateBefore

@(config: CompanionParams)
@JavascriptGlobalBusinessCondition(config = config,
  id = "CheckVariants",
  name = "CheckVariants",
  setupGroup = "Conditions",
  jsContent = file("BusinessRules/Conditions/CheckVariants.js", true),
  validities = Array("P_PRODUCT_VARIANT","P_PRODUCT_VARIANT_FAMILY"),
  approve = ValidateBefore()
)

JavascriptLocalBusinessAction

Generate local business action with a javascript plugin.
Javascript plugin is configured by default with the following bindings in this order : BindCurrentObject, BindManager, BindLogger, BindCurrentWorkflow

@JavascriptLocalBusinessAction(id, name, description, dependencies, jsContent, removeDefaultBindings, additionalBindings, errorMessages, functionDependencies, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
idStringLocal business action idYesNo
nameStringLocal business action nameNo""
descriptionStringLocal business action description in stepNo""
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
jsContentAnyLocal business action JavaScript contentYesNo
removeDefaultBindingsBooleanDetermines whether the business rule should apply the default bindingsNofalse
additionalBindingsTemplate twirl / XMLLocal business action bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue

JavascriptLocalBusinessCondition

Generate local business condition with a javascript plugin.
Javascript plugin is configured by default with the following bindings in this order : BindCurrentObject, BindManager, BindLogger, BindCurrentWorkflow

@JavascriptLocalBusinessCondition(id, name, description, dependencies, jsContent, removeDefaultBindings, additionalBindings, errorMessages, functionDependencies, runPrivileged)

ParameterTypeDescriptionRequiredDefault Value
idStringLocal business condition idYesNo
nameStringLocal business condition nameNo""
descriptionStringLocal business condition description in stepNo""
dependenciesArray[Xml]Bind business libraries dependencies in JavaScript see DependencyNoArray()
jsContentAnyLocal business condition JavaScript contentYesNo
removeDefaultBindingsBooleanDetermines whether the business rule should apply the default bindingsNofalse
additionalBindingsTemplate twirl / XMLLocal business condition bindings see JavaScript BindingsNoNo
errorMessagesArray[Xml]Bind error messages in Javascript see ErrorMessageNoArray()
functionDependenciesArray[String]Set business function dependenciesNoArray()
runPrivilegedBooleanDetermines if the business rule will be executed or tested with global read / write privilegesNotrue

ErrorMessage

Generate xml of error message

@ErrorMessage(key, message)

ParameterTypeDescriptionRequiredDefault Value
keyStringError message keyYesNo
messageStringError message valueYesNo

Bindings

BindAttributeValidatedParameter

Bind attribut validated parameter in Javascript file, allows to give a parameterized value for an attribute before executing the business rule.

@BindAttributeValidatedParameter(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringAlias of the given value in business rule JavaScriptYesNo
attributeIdStringID of the attribute used as inputYesNo
externalIdStringExternal id of the parameterYesNo

BindBusinessAction

Bind business action with an alias in JavaScript file.

@BindBusinessAction(alias, businessRuleId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringBusiness rule alias in javaScriptYesNo
businessRuleIdStringId of the business rule to be bindedYesNo

BindBusinessCondition

Bind business condition with an alias in JavaScript file.

@BindBusinessCondition(alias, businessRuleId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringBusiness rule alias in javaScriptYesNo
businessRuleIdStringId of the business rule to be bindedYesNo

BindBusinessFunction

Bind business function with an alias in JavaScript file.

@BindBusinessFunction(alias, businessRuleId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringBusiness rule alias in javaScriptYesNo
businessRuleIdStringId of the business rule to be bindedYesNo

BindCurrentEventType

Bind current event type evaluated/executed by the business rule with an alias in JavaScript file.

@BindCurrentEventType(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent event type alias in business rule JavaScriptNo"eventType"

BindCurrentObject

Bind current object evaluated/executed by the business rule with an alias in JavaScript file.

@BindCurrentObject(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent object alias in business rule JavaScriptNo"node"

BindCurrentTransition

Bind current object transition evaluated/executed by the business rule with an alias in JavaScript file.

@BindCurrentTransition(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent object transition alias in BusinessRule JavaScriptNo"transition"

BindCurrentWorkflow

Bind current object workflow evaluated/executed by the business rule with an alias in JavaScript file.

@BindCurrentWorkflow(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent object workflow alias in BusinessRule JavaScriptNo"workflow"

BindDerivedEvent

Bind selected derived event type in JavaScript file.

@BindDerivedEvent(alias, derivedEvent)

ParameterTypeDescriptionRequiredDefault Value
aliasStringSelected derived event type alias in business rule JavaScriptYesNo
derivedEventStringSelected derived event type to bindYesNo

BindEventBatch

Bind current event batch in JavaScript file.

@BindEventBatch(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent event batch alias in business rule JavaScriptYesNo

BindEventProcessor

Bind an event processor in JavaScript file

@BindEventProcessor(alias, eventProcessorID)

ParameterTypeDescriptionRequiredDefault Value
aliasStringSelected event processor alias in business rule JavaScriptYesNo
eventProcessorIDStringSelected event processor id to bindYesNo

BindEventProcessorEventBatch

Bind current event processor event batch in JavaScript file.

@BindEventProcessorEventBatch(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent event batch alias in business rule JavaScriptYesNo

BindEventQueue

Bind an event queue in JavaScript file

@BindEventQueue(alias, eventQueueId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringSelected event queue alias in business rule JavaScriptYesNo
eventQueueIdStringSelected event queue id to bindYesNo

BindGatewayIntegrationEndpoint

Bind a gateway integration endpoint with an alias in JavaScript file.

@BindGatewayIntegrationEndpoint(alias, gatewayIntegrationEndpointId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringGateway integration endpoint alias in javaScriptYesNo
gatewayIntegrationEndpointIdStringId of the gateway integration endpoint to be bindedYesNo

BindImportChangeInfo

Bind the current import change info in JavaScript file.

@BindImportChangeInfo(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringAlias of the import change infoNo"changeInfo"

BindLogger

Bind a logger in JavaScript file

@BindLogger(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringLogger alias in business rule JavaScriptNo"logger"

BindLookupTableHome

Bind LookupTableHome in Javascript file

@BindLookupTableHome(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringLookupTableHome alias in business rule JavaScriptNo"lookup"

BindMailHome

Bind MailHome in Javascript file

@BindMailHome(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringMailHome alias in business rule JavaScriptNo"mailHome"

BindManager

Bind step manager in JavaScript file

@BindManager(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringManager alias in business rule JavaScriptNo"manager"

BindOutboundIntegrationEndpoint

Bind outbound integration endpoint in JavaScript file

@BindOutboundIntegrationEndpoint(alias, outboundIntegrationEndpointId)

ParameterTypeDescriptionRequiredDefault Value
aliasStringSelected outbound integration endpoint alias in business rule JavaScriptYesNo
outboundIntegrationEndpointIdStringSelected outbound integration endpoint idYesNo

BindQueryHome

Bind QueryHome in Javascript file

@BindQueryHome(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringQueryHome alias in business rule JavaScriptNo"queryHome"

BindUser

Bind current user in JavaScript file.

@BindUser(alias, userID)

ParameterTypeDescriptionRequiredDefault Value
aliasStringCurrent user alias in business rule JavaScriptYesNo
userIDStringUser ID to bind in business rule JavaScriptYesNo

BindWebUiContext

Bind WebUiContext in Javascript file

@BindWebUiContext(alias)

ParameterTypeDescriptionRequiredDefault Value
aliasStringWebUiContext alias in business rule JavaScriptNo"webUiContext"

Setup Templates

These templates are used to configure the environment to work correctly with Companion for Delivery.

c4dDocumentationSetup

Template for initializing all setup configurations to enable exporting Step configuration to Companion for Delivery Documentation. The following entities have been established:

  • Establish the configuration of the GatewayEndpoint user-type root within the Gateway Integration Endpoints setup groups.
  • Set up the stibo.businessrule.function in the BusinessRuleGroup and GlobalBusinessRules setup groups.
  • Optionally, you can create the Gateway Integration Endpoints and BRG_Companion setup groups (refer to the option details).
  • Generate the business rule BF_AUTH_C4D_DOCUMENTATION and the gateway integration endpoint GIEP_COMPANION_DOCUMENTATION for authenticating with Companion for Delivery Documentation.
  • Generate the outbound integration endpoint OIEP_COMPANION_DOCUMENTATION for exporting Step configuration aimed at documentation purposes.

@c4dDocumentationSetup(config, username, environment, clientId, version, projectName, advancedStepXmlTemplate, authBusinessFunctionSetupGroup, oiepSetupGroup, authGatewaySetupGroup)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
usernameStringUsername to authenticate to Companion for Delivery DocumentationYesNo
environmentStringCompanion for Delivery Documentation parameter: Name of the environment to be overwritten for example: dev, test, prodYesNo
clientIdStringCompanion for Delivery Documentation parameter: Client name provided by CantorYesNo
versionStringCompanion for Delivery Documentation parameter: Environment versionYesNo
projectNameStringCompanion for Delivery Documentation parameter: Environment nameYesNo
advancedStepXmlTemplateStringAdvanced step xml template to define export configuration see Example of export configuration for documentationYesNo
authBusinessFunctionSetupGroupStringSetupGroup to create BF_AUTH_C4D_DOCUMENTATION business functionNo"BRG_Companion"
oiepSetupGroupStringSetupGroup to create OIEP_COMPANION_DOCUMENTATION outbound integration endpointNo"Outbound Integration Endpoints"
authGatewaySetupGroupStringSetupGroup to create GIEP_COMPANION_DOCUMENTATION gateway integration endpointNo"Gateway Integration Endpoints"

To set the password to authenticate you have to modify the binding password inside BF_AUTH_C4D_DOCUMENTATION

@import fr.cantor.c4d.xml.extensions.CompanionParams
@import fr.cantor.c4d.templates.setup.xml.c4dDocumentationSetup

@(config: CompanionParams)
@c4dDocumentationSetup(
    config = config,
    username = "user",
    environment = "dev",
    clientId = "customer",
    version = "1.0.0",
    projectName = "example",
    advancedStepXmlTemplate = {
            <STEP-ProductInformation>
            <!-- Context -->
                <DimensionList ExportSize="All"/>
                <ContextList ExportSize="All"/>

            <!-- Datamodel -->

                <UserTypes ExportSize="All"/>
                <AttributeGroupList ExportSize="All"/>
                <AttributeList ExportSize="All"/>
                <UnitList ExportSize="All"/>
                <ListOfValuesGroupList ExportSize="All"/>
                <ListsOfValues ExportSize="All"/>
                <CrossReferenceTypes ExportSize="All"/>
                <Keys/>

            <!-- Integration -->

                <STEPWorkflows ExportSize="All"/>
                <BusinessLibraries ExportSize="All"/>
                <BusinessRules ExportSize="All"/>

            <!-- Datas -->
            <!-- Products with attributesLinks-->

            <!-- Remove this tag if you dont want to document node from Primary Product Hierarchy -->
            <Products ExportSize="Selected" FlattenHierarchy="true">
            <!-- Specify the product you need to export for documentation -->
                <FilterUserType ID="TYPE_PRODUIT_1"/>
                <FilterUserType ID="TYPE_PRODUIT_2"/>
                <Product>
                    <Name/>
                <AttributeLink>
                    <MetaData/>
                </AttributeLink>
                    <Product/>
                </Product>
            </Products>


            <!-- Classifications with attributesLinks-->

                <Classifications ExportSize="Minimum" FlattenHierarchy="true">
                    <Classification IncludeParent='true'>
                        <AttributeLink>
                            <MetaData/>
                        </AttributeLink>
                    </Classification>
                </Classifications>


            </STEP-ProductInformation>

    })

c4dSetup

Template for initializing all setup configurations to use Companion for Delivery on Step (see Companion for Delivery Datamodel)

@c4dSetup(config)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo

c4dTestsSetup

Template for initializing all setup configurations to use Companion for Delivery Tests on Step (see Companion for Delivery Datamodel)

@c4dTestsSetup(config)

ParameterTypeDescriptionRequiredDefault Value
configCompanionParamsCompanion parameters see Template definitionYesNo
Last Updated: