Previous PageTable Of ContentsNext Page

IconAppendix 4: Example of a TemplateIcon

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 *****

Previous PageTop Of PageNext Page