![]()
Folowing is an example of a template. This template is more complex than average, but it shows an example of looping and a custom code point.
)****************************************************************************
)*
)* Pattern BO Make Decision Method: 1
)*
)* Method Name: make<DecisionTypeName>With<parameters>
)*
)*
)****************************************************************************
)parse value methName with 'make' signature junk
)copy header
TRACEENTER;
INITLOG("%methName% failed");
)copy ruleProlog
%retValue% retVal = NULL;
DeletionList list;
_IDL_SEQUENCE_string failureStrings;
failureStrings._length = 0;
failureStrings._maximum = 0;
failureStrings._buffer = NULL;
// Call to precndsFor method
// Make sure to set failureStrings equal to the precndsFor method.
)CUSTOMCODE
if (sequenceLength(failureStrings) > 0)
{
string detailedText = compressSeq(ev, &failureStrings);
freeStringSequence(&failureStrings);
EXITONEXCEPTION(ev, retVal);
list.add(detailedText);
PUTWARNING(ev, PRECONDITION_FAILED, detailedText);
TRACEEXIT(retVal);
}
oats_timestamp *date = getCurrentTimestamp(ev);
list.add((SOMObject *)(void *)date);
retVal = somSelf->add%signature%Date(ev
)do idx = 1 to ruleStem.0
,%ruleStem.idx.argumentName%
)end
,date);
if (checkException(ev))
{
if (strcmp(getExceptionName(ev), INVALID_OBJECT_STATE) == 0)
{
string oldDetailedText = getDetailedText(ev);
list.add(oldDetailedText);
PUTWARNING(ev, INVALID_OBJECT_STATE, oldDetailedText);
TRACEEXIT(retVal);
}
EXITONEXCEPTION(ev, retVal);
}
TRACEEXIT(retVal);
// **** End of generated block *****