0% found this document useful (0 votes)
167 views22 pages

CATRule

The document discusses validation of attribute values during editing in a product lifecycle management system. It provides an example script that checks attribute values, identifies issues, and provides warning or error messages to the user. The script checks that a description field does not contain a forbidden character, that a supplier field is correctly valued, and ensures the description is not empty. Any issues found are added to output lists to display corresponding warning or error messages.

Uploaded by

noura mahamat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
167 views22 pages

CATRule

The document discusses validation of attribute values during editing in a product lifecycle management system. It provides an example script that checks attribute values, identifies issues, and provides warning or error messages to the user. The script checks that a description field does not contain a forbidden character, that a supplier field is correctly valued, and ensures the description is not empty. Any issues found are added to output lists to display corresponding warning or error messages.

Uploaded by

noura mahamat
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22

CATRule

Handling Text Files: OpenTextFile


https://help.3ds.com/2019x/english/dsdoc/EKLRefMap/kwa-r-EKL-TextFile.htm?
contextscope=onpremise&id=6ea741bca34a408cb5a138c817816f91

Example 4: Read Function


This function lets you read in a text file.
let file (TextFile)
let buffer (String)
set file = OpenTextFile("e:\tmp\TextFile1.txt","r")
set buffer = file->Read()

let file (TextFile)


set file = OpenTextFile("e:\tmp\TextFile1.txt","w")
...
file->Close()

https://help.3ds.com/2019x/english/dsdoc/EKLRefMap/kwa-m-EKL-Advanced-sb.htm?
contextscope=onpremise&id=20f9c85f6f1e433591ec6b8894083838

The following sample determines the attributes to add in the Spread Sheet editor.
/* -------------------------------------------------------------------------*/
/* Variables declaration */
/* -------------------------------------------------------------------------*/
/* ---- output ---- */
Let AttributesKeys(List)
Let AttributesValues(List)
Let AttributesTitles(List)
Let AttributesEditable(List)

if (true == Parameters.HasAttribute("AttributesKeys") and true ==


Parameters.HasAttribute("AttributesValues") and true ==
Parameters.HasAttribute("AttributesTitles") and true ==
Parameters.HasAttribute("AttributesEditable"))
{
/* Fill list with attributes */
AttributesKeys.Append("MyAttribute")
AttributesValues.Append("My Value")
AttributesTitles.Append("My Attribute Title")
AttributesEditable.Append(true)

/* Set list as output values of the BL */


Parameters.SetAttributeObject("AttributesKeys", AttributesKeys)
Parameters.SetAttributeObject("AttributesValues", AttributesValues)
Parameters.SetAttributeObject("AttributesTitles", AttributesTitles)
Parameters.SetAttributeObject("AttributesEditable", AttributesEditable)
}
Sample
The following sample explains how to assign resources based on entries in
the Description attribute of the input Operation object.

/* Resource Rule */
let hOperationRef(PLMOperation)
let nbOfItems(Integer)
let ii(Integer)

let ListOfResources(List)
let ListOfResourceNames(List)
let nbOfResources(Integer)
Let hResourceOcc(ResourceOccurrence)
Let hResourceInst(VPMInstance)
Let hResourceWhere(ResourceOccurrence)
let ListOfResourceWho(List)

let Description(String)
let SplitDescription(String)
let lengthOfDescription(Integer)
let ListOfDescriptions(List)

let ContinueWhile(Integer)
let oIndex(Integer)

if(ihOperationOcc <> NULL)


{
set hOperationRef = ihOperationOcc.Reference
if(hOperationRef <> NULL)
{
set Description = hOperationRef-
>GetAttributeString("V_description")
if(Description.Length() > 0)
{
/* Worker_V249524_InStation50.1;forklift-
small_InStation50.1; */
set ContinueWhile = 0
for ContinueWhile while ContinueWhile <> -1
{
set oIndex = Description.Search(";", 0, true)
if(oIndex == -1)
{
set ContinueWhile = oIndex
ListOfDescriptions.Append(Description)
}
else
{
set SplitDescription =
Description.Extract(0, oIndex)
set lengthOfDescription =
Description.Length()
set Description =
Description.Extract(oIndex+1, lengthOfDescription-oIndex-1)

ListOfDescriptions.Append(SplitDescription)
}
}
}
}
}
/* Resource Rule */
/* Retrive working resources using PLM_ExternalID */
set nbOfItems = ListOfDescriptions.Size()
if(nbOfItems > 0)
{
/* Get working resource list and then appned PLM_ExternalID from it */
set ListOfResources = Parameters-
>GetAttributeObject("ListOfResourcesWho")
set nbOfResources = ListOfResources.Size()
set ii=1
for ii while ii<=nbOfResources
{
set hResourceOcc = ListOfResources.GetItem(ii)
if(hResourceOcc <> NULL)
{
set hResourceInst = hResourceOcc.Instance
if(hResourceInst <> NULL)
{

ListOfResourceNames.Append(hResourceInst.PLM_ExternalID)
}
}
}
/* Compare with PLM_ExternalID. If it is same, append to the list */
set ii=1
for ii while ii<=nbOfItems
{
set Description = ListOfDescriptions.GetItem(ii)
set oIndex = ListOfResourceNames.IndexOf(Description, 1)
if(oIndex > 0)
{

ListOfResourceWho.Append(ListOfResources.GetItem(oIndex))
}
}
if(ListOfResourceWho.Size() > 0)
{
Parameters->SetAttributeObject("ResourceWho",
ListOfResourceWho)
}
}
/* Retrieve Where resource from Who resource*/
if(ListOfResourceWho.Size() > 0)
{
set hResourceOcc = ListOfResourceWho.GetItem(1)
if(hResourceOcc <> NULL)
{
set hResourceWhere = hResourceOcc.Owner
if(hResourceWhere <> NULL)
{
Parameters->SetAttributeObject("ResourceWhere",
hResourceWhere)
}
}
}

Attributes Valuation Check (PLMAttributesValuationCheck)


General Information
This opening ID is is called in the PLM New, Edit Properties and Sheet Editor dialogs each time
the user manually modify an attribute value.
Note: if in the PLM mask (creation/edition) an attribute is declared as not editable, then the
business logic cannot overwrite this rule.

The table below provides you with information related to the definition of the Opening ID.

Opening ID: PLMAttributesValuationChec


k

Customization intent: Validation

Execution context: Client/Server

Input Objects
Input objects must be of the following types:

 ThisObject
 Parameters corresponds to the context object.
 Validation

Context Object Parameters

Parameter
Type Read/Write Comments
Name

Read/
Parameter Names Types Comments
Write

WarningAttribute list Write Output parameter which contains the list of the
s of attribute identifiers which valuation leads to raise a
string user warning.
s
Parameter
Type Read/Write Comments
Name

ErrorAttributes list Write Output parameter which contains the list of the
of attribute identifiers which valuation leads to raise a
string user warning.
s

WarningMessages list Write Output parameter which contains the list of the NLS
of warning message corresponding to each
string WarningAttribute.
s

ErrorMessages list Write Output parameter which contains the list of the NLS
of error message corresponding to each ErrorAttribute.
string
s

Policy string Read Policy name.

Note: These lists are accessed in rules with GetAttributeObject API on the context. They must be
set on the context with SetAttributeObject at the end of the rule ( see sample ) unless they won't
be applied.

Sample
The following sample show how to:

 Check that the description attribute does not contain the ‘%’ forbid character and raises a
warning if not checked.
 Check that V_supplier is well valuated and raised an error if not checked.
 Check that the description attribute is valuated. The resulting UI message will be the
following ones

<Scripts>
<Script OpeningID="PLMAttributesValuationCheck"
Type="MyPLMProduct"
ScriptName="MyProductAttrCheckScript" />
</Scripts>
This family references the script that contains the business logic implementation, which looks like
the following CATRule file:
Let Errorlist(List)
Let Warninglist(List)
Let ErrorMessagelist(List)
Let WarningMessagelist(List)
Let PublishedMessage(String)
Let Supplier(string)
Let Description(string)
Let MyDescription(string)
Let MyId(string)
Let InvalidChar(string)
Validation=true

set Errorlist = Parameters->GetAttributeObject("ErrorAttributes")


set Warninglist = Parameters->GetAttributeObject("WarningAttributes")
set ErrorMessagelist = Parameters->GetAttributeObject("ErrorMessages")
set WarningMessagelist = Parameters->GetAttributeObject("WarningMessages")

Supplier = ""
if ((ThisObject.V_Supplier==true) and (ThisObject.V_SupplierName == Supplier))
{
Validation=false
ErrorMessagelist->Append("supplier not valid")
Errorlist->Append("V_SupplierName")
}
Description = ""
MyDescription = ThisObject.V_description

if (MyDescription == Description)
{
Validation=false
WarningMessagelist->Append("Description should be valuated")
Warninglist->Append("V_description")
}
InvalidChar = "%"
if (MyDescription<>NULL)
{
if (MyDescription.Search(InvalidChar) <> -1)
{
Validation=false
WarningMessagelist->Append("Character % is forbidden in description")
Warninglist->Append("V_description")
}
}
MyId = ThisObject.PLM_ExternalID
if (MyId.Search(InvalidChar) <> -1)
{
Validation=false
WarningMessagelist->Append("Character % is forbidden in PLM_ExternalID")
Warninglist->Append("PLM_ExternalID")
}

if (Validation == false)
{
Parameters->SetAttributeObject("ErrorMessages",ErrorMessagelist)
Parameters->SetAttributeObject("ErrorAttributes",Errorlist)
Parameters->SetAttributeObject("WarningAttributes",Warninglist)
Parameters->SetAttributeObject("WarningMessages",WarningMessagelist)
}
Attributes Initialization (PLMIdentificationInitialization)
PLMIdentificationInitialization lets you define and integrate the customer business
logic for PLM entity initialization.
Note: For more information about customization by business rules, see Installation and
Setup: Customize: Behavior: Data Setup: Customization by Business Rules.
Notes:
 In an import context, the type you want to use must be retrieved using

the RetrieveNamingParametersWithSeparator function.

 You must create a rule defining that the value of the attributes that

participate in the identification of objects of a given type must be unique.

In a baseline behavior environment, make sure that the value of

PLM_ExternalID is unique. To find out how to compute a unique

identifier, see Reference Library: Enterprise Knowledge Language:

Knowledge Packages: Social and Collaborative Apps: Business Logic

Functions.

 General Information

 Input Objects

 Context Object Parameters

 Sample

General Information
This opening ID is called in the Content > New, Edit Properties and Sheet Editor dialogs each time
the user manually modify an attribute value. The Attribute Valuation Propagation Business Logic
has been called before applying the current propagation BL. The goal of the BL is to propagate
attributes valuation ( Attri=f(Attrj) ) and manages attribute visibility.

The table below provides you with information related to the definition of the Opening ID.

Opening ID: PLMIdentificationInitializatio


n

Customization intent: Execution


Execution context: Client/Server

Input Objects
This opening ID can be associated with component class types below. This is the fact (i.e.
ThisObject) in the business rule.

Note: The fact can be either a Proxy or a Component.

Input objects must be of the following types:

 ThisObject

 Parameters corresponds to the context object.

Context Object Parameters


In addition to the fact object, context attributes are available in the scripting rule. Some parameter
availability are based on OperationId and OperationDetail attribute combination. See the
matrix below.

Read/
Parameter Names Types Comments
Write

OperationId string Read Parameter used to identify the context of


initialization. Following values are available:

 "New” for Component creation.

 "Cloning" for Component duplication.

 "Implicit" for Component creation by


factory APIs with no specific context.

 "ImportAsNew" for data import creating


new Components.

 "ImportAsRef" for object re-identification at


import.

 "Default" for any else case.


Read/
Parameter Names Types Comments
Write

OperationDetail String Read Parameter to be used combined with OperationId


parameter. Details the context of the OperationId.
Following values are available:

 "NoOperationDetail"

 "Create"

 "CopyPaste"

 "ConfiguredSplit"

 "ReplaceReference"

 "CloneDistantData" for "Duplicate As


Alternative" command.

IdString string Read Parameter that may be used for the naming of the
PLM entity (e.g. as prefix).

IdCloningString string Read Parameter that may be used for the naming of the
PLM entity (e.g. as prefix).

CopyFrom PLMEntity Read PLM Proxy object of the source PLM entity to clone.
Based on this object, the attributes values may be
parameterized.

CoupledRef PLMEntity Read When creating a couple "PLM Part


Reference/Representation Reference" in one shot,
this parameter provides the PLM Proxy object of the
aggregating Part Reference. Based on this object,
the attributes values may be parameterized.

AggregatingReference PLMEntity Read When creating a PLM Instance, this parameter


provides a PLM Proxy object of the PLM Reference
entity (i.e. OwnedBy) that will aggregate the PLM
instance. Based on this object, the attributes values
may be parameterized.

Reference PLMEntity Read When creating a PLM Instance, this parameter


provides a PLM Proxy object of the PLM Reference
entity (i.e. (InstanceOf) of the this PLM instance.
Based on this object, the attributes values may be
Read/
Parameter Names Types Comments
Write

parameterized.

Policy String Read Policy name.

Summary of the available context for each OperationId:

 Type of the fact object

 OperationDetail

 Context attribut parameters

Note: Depending on the context, some parameters may be unset. Therefore, it is necessary to
check attribute validity before reading.

Sample
The following sample illustrates how to:

 Initialize the naming of a stand alone Representation Reference based on a unique


number computed by an external function of a user knowledge package.

 Initialize the naming of a Representation Reference from the naming of a couple Part
Reference (same PLM_ExternalID attribute prefixed by "3DRep of ")

 Set the attributes on a cloned Representation Reference: the description of the cloned
object is set to : "This Representation is a copy of Original object PLM_ExternalID"
To achieve this particular business logic implementation you will associate a rule (e.g.
"MyRepIdentificationScript") with the couple <OpeningID, Type> in a CATRuleExit file:
<Scripts>
<Script OpeningID="PLMIdentificationInitialization"
Type="MyPLMRepresentation"
ScriptName="MyRepIdentificationScript" />
</Scripts>
Then you will create a business rule to define your business logic:
Let Operation(string)
Let CoupledRefId(string)
Let CoupledRef(PLMProductDS)
Let OriDesc(string)
Let CopyFrom(PLMProductDS)
Let CopyFromId(string)
Let CloningString(string)

Operation=Parameters->GetAttributeString("OperationId")

If(Operation=="New")
{
/* Management of coupling between Representation Reference Naming and Part
Reference naming */
if (ThisObject->HasAttribute("AggregatingReference") == true)
{
set AggregatingRef = ThisObject.AggregatingReference
if (AggregatingRef <> NULL)
{
CoupledRefId =
AggregatingRef.PLM_ExternalID
ThisObject.PLM_ExternalID =
Prefix+CoupledRefId
}
else
{
/* Default naming based on a
customized numbering */
Prefix = Parameters-
>GetAttributeString("IdString")
ThisObject.PLM_ExternalID = Prefix
+"Representation"
}
}
else
{
/* Default naming based on a customized numbering */
Prefix = Parameters->GetAttributeString("IdString")
ThisObject.PLM_ExternalID = Prefix +"Representation"
}
}
else if(Operation=="Cloning")
{
/* Case of cloning */
if (Parameters->HasAttribute("IdCloningString") == true)
{
CloningString = Parameters->GetAttributeString("IdCloningString")
}
if(CloningString=="")
{
CloningString = "Auto Renamed of "
}
/* retreive the attributes on the initial object */
set CopyFrom = Parameters->GetAttributeObject("CopyFrom")
CopyFromId = CopyFrom->GetAttributeString("PLM_ExternalID")
OriDesc = CopyFrom->GetAttributeString("V_description")
ThisObject.PLM_ExternalID = CloningString + CopyFromId
ThisObject.V_description = "This Representation is a copy of "+CopyFromId

Note: Before using an optional input parameter, you have to check its value. For example, to
check if the CopyFrom parameter is valuated or not, use the following code sequence:
...
set CopyFromRef = GetAttributeObject("CopyFrom")
if(CopyFromRef <> NULL)
{
...

Delivering NLS Files for Authorized Values


You can deliver NLS files that contain translations for authorized values that may be
defined in masks or in business rules used in the New, Properties dialog boxes or in
the Search Results panel.
In the context of the Edit Properties window, and in the Search Results panel, you can
use business rules to gray out some attribute edition boxes and to influence the list of
authorized values. The edition box is replaced by a combo box. What is shown in the
combo is what is valuated in the business rules but it is not translated. you can create a
NLs file to translate these values for business rules computed authorized values and
more generally for values defined in the masks.
 The relation between the NLS translation file and the controlled

attribute/type is based on a naming convention. Because an attribute is

defined on a type, the name of the file

is PLMAttrValue<TypeName>.CATNls, <TypeName> being the type

that declares the attribute or one of its subtypes. In the following

example, we are going to add a business rule triggered at initialization

during the creation of a VPMReference (a product).

 The CATNls file is required to display the comments associated with the

attributes. It must encoded in UTF-8. In a Text Editor, enter: <meta

charset="UTF-8"/>.

1. From the Compass, click Social and Collaborative Apps  , and select Data Setup.


2. Right-click the PLM Business Logic Implementations Set ID and select Create a new
Resource Table.
3. Click OK in the PLM Resource Set dialog box.
4. Double-click the resource cell corresponding to the Attributes initialization
(PLMIdentificationInitialization) logical name.
The Select a Business Rule window opens.
5. Click ....
The Business Rule window opens.
6. Enter a business rule title and click OK.
7. Enter the rule body. To do so:

a. Set the type of ThisObject to PLMProductDS.

b. Enter the following code into the editor:

8. /* Inserted at the beginning of the rule to declare variables */

9. let vp(ValuePointer)
10. let li(List)

11.

12. /*Inserted to positioned two values Grey & Blue as authorized values for
the description attribute*/

13. li->Append("AuthorizedValues") /* Necessary to differentiate Help values


from Authorized Values */

14. li->Append("Grey")

15. li->Append("Blue")

16. vp = ThisObject->GetAttributeValuePointer("V_description")

vp.AuthorizedValues=li
17. Click OK twice.
The business rule is created and the authorized values are displayed when creating a
new object.
18. To translate the values displayed in the above dialog box, create a CATNls file.
As V_description attribute belongs to the PLMEntity type, we are going to create a file
which name is PLMAttrValuePLMEntity.CATNls. Enter the following code into the text
editor:

19. /* Translates Blue into Bleu and Grey into Gris for the attribute
V_description*/

20. V_description.Blue= "Bleu";

V_description.Grey= "Gris";
21. Save your file in the runtime view in the following directory: intel_a\resource\
msgcatalog.
The translated values are now available when creating a new object.
Note: To translate the authorized values of a given attribute, you must define them in a
CATNls file corresponding to the type that defines this attribute. You can define these
values on the type subtypes, which enables you to define a particular translation for a
given subtype that will not be used for another subtype.

Link: https://help.3ds.com/2019x/english/dsdoc/PjrUserMap/pjr-t-NLSFileDeliver.htm?
contextscope=onpremise&id=588807409e8f4b88ba2a1bae94df48c4

About the Customization by Business Rules and Resource Sets


The system is based on an architecture merging a core model with native
authoring apps covering the design, engineering, simulation and manufacturing
domains. This architecture needs to be customizable on site by administrators to
better match the critical behaviors of the system with the specificity of the customer
business processes.
 Opening IDs
 Business Rule Creation Process

 Business Rule Arguments

Opening IDs
This section provides you with information about opening IDs.
The system is delivered with a set of pre-defined openings so that you integrate your specific
processes. The implementation of an opening is performed through rules. A rule is the
description of the behavior alteration in the Enterprise Knowledge Language (EKL). EKL is an
interpreted language that manipulates variables, constants, operators, attribute accessors,
functions and keywords through a strict grammar.

Customization Intent
The system triggers the business rule with a customization intent. There are three types of
intents:

 Validation: Used to validate the state of an object, or an action on an object. For


consistency maintaining, every possible rule for the couple <object type, opening> is
executed in an undetermined order. For the validation to be correct, every rule must be
correct.

 Computation: Used to compute a result from the state of an object. Only the best possible
rule for the couple <object type, opening> is executed.

 Execution: The object can be modified by the rule. Only the best possible rule for the
couple <object type, opening> is executed.

Business Rule Creation Process


Each opening has an opening ID and must be contained in a dedicated resource table.
The steps required for an administrator to modify the default behavior of the system using
business rules are the following:

1. The administrator (or the business rule architect) creates one or several business rules
for the selected opening ID. The rule body must be compliant with the EKL syntax. It
manipulates the input object and the context object as variables. This rule will be a
dedicated object stored in database.

Note: For the same opening ID , several business rules can be created, according to the
different possible fact types and P&O projects to which the resource sets will be bound.

2. The administrator creates or edits an existing resource table containing the selected
opening ID and assigns the created business rules to the different couples <Opening ID>
| <Fact Type>.
3. When satisfied with the customization, the administrator deploys his customization on the
production server.

Business Rule Arguments


A business rule works on a set of three typed variables.

ThisObject
ThisObject is a variable that represents the object on which the rule is acting. The type of this
variable is determined when creating the business rule. In execution mode, attributes may be
modified by the rule whereas in validation or computation mode, attributes can only be read by
the rule.

Parameters
This is a variable of RuleContext type that represents the object that provides contextual
information about the opening.

Important:

 The contextual information is not available as attributes of


the RuleContext. It is available as dynamic attributes
through the->GetAttribute**(parameter1) and  >
SetAttribute**(parameter1,value) methods of the
EKL.

 The Message attribute of Parameters is set or not inside


the rule. If it is set, the standard failing message is replaced
by the one defined in the rule.

Validation (optional)
If the rule is used by the opening as a validation, an additional Validation variable of Boolean
type is available in the rule. The rule writes its value to express the validation.

Examples
Example 1

The rule below enables you to customize the name of a component.

ThisObject.PLM_ExternalID = Parameters.UserID /*Possible direct attribute


notation*/
+ "_" + Parameters.GetAttributeString("IdString") /*Dynamic attribute notation
mandatory*/

Example 2

The rule below checks the maturity modification.


Validation=(ToUpper (Parameters.UserID)==ToUpper(ThisObject.owner))
if (Validation==false) {
Parameters.Message="Impossible to change the maturity state of an object that
does not belong to you"
Parameters.Severity=1
}

In the above script:

 The Validation Boolean is valuated to determine if the change maturity operation is


allowed.

 The message is valuated to explain the origin of the problem. If you want to provide NLS
messages, use the BuildMessageNLS function.

About the Administrator's Process


This topic provides the administrator with information to perform the
customization.
 Methodology

 Debugging Variables

Methodology
An administrator writes rules and plugs them to the openings thus altering the behavior of the
system. This can be achieved as follows:
The administrator:

1. Creates a resource table.

2. Writes a business rule that is compliant with the EKL syntax, manipulating the input object
and the context object as variables, and he or she saves it.

3. Plugs this business rule to the collaborative space using Data Setup: he can choose a
collaborative space to use for test purposes only.

4. Tests the behavior of his system that takes the rule customization into account. He or she
can have his own test collaborative space.

5. Deploys the customization on the server or on the clients to customize the system by
associating the business rules with collaborative spaces in production.

Debugging Variables
The administrator activates environment variables for debugging purposes:
CKE_CUSTO_TRACES=1: Variable used to have traces generated by the customization engine,
explaining the problems encountered: scripts not found, scripts not valid syntactically, scripts
failing at runtime for example. If set to 2, ThisObject and Parameters are dumped.
Note: If the Trace function is used in the script, the string passed to this function is traced too.
CKE_CUSTO_TRACES_RESTRICTION: Variable used to specify the opening ID to be traced and
possibly the Type of the objects to be traced. It is also possible to provide a list of couples
(OpeningID/Type of fact). To set the environment variables, separate the strings using a ';'.
The list of traces raised by the customization engine when the traces are activated is the
following:
Business Rules execution: <OpeningID>: At the beginning of the execution, indicates which
opening is triggered.
Business Rules validation: <OpeningID>: At the beginning of the validation exit, indicates
which opening is triggered.
Operation validated. Additional message added to the script: <Message>.
Operation not validated. Additional message added to the script: <Message>.
Business Rules computation: <OpeningID>: Indicates which opening is triggered.
Business Rules execution re-directed to script <ScriptName>
Business Rules execution failed because script <ScriptName> was not found in
the runtime environment: Indicates at the end of the script execution that no script was
associated with the opening ID.
Business Rules execution failed because the syntax of the script <ScriptName>
is invalid: <SyntaxErrorMessage>: Indicates that the syntax of the script is invalid and
shows the syntax error message.
Business Rules execution failed because script <ScriptName> execution produced
an evaluation error: <EvaluationErrorMessage>:: Indicates that the evaluation of the
script raised an error and shows the evaluation error message.
The context of the business rules is (name=<Name>, user=<UserID>,
security=<SecurityContext>.: Provides information about the parameters of the opening.
Business Rules testing opening: <OpeningID> succeeded: Traces the testing of the
opening.
Business Rules testing opening: <OpeningID> failed: Traces the testing of the
opening.
Trace raised: <Traces>: traces the message passed to the Trace function.
Message raised: <Message>: traces the message passed to the Message function.
Redirection file read : <Name of the .CATRuleExit file>.
Script file read : <ScriptName>.
Script file not found or readable : <ScriptName>.
Misplaced condition in redirection file <Name of the .CATRuleExit file>.
Invalid tag <an XML tag> in redirection file <Name of the .CATRuleExit file>.
Invalid attributes for tag <an XML tag> in redirection file <Name of
the .CATRuleExit file>.
Opening <OpeningID> for type <Type> to script <Name of the .CATRule file> with
condition <a condition> is eligible.
Opening <OpeningID> for type <Type> to script <ScriptName> with condition <a
condition> has been rejected.
Opening <OpeningID> with condition <a condition> has been selected because of
greater accuracy (= level of accuracy).

You might also like