Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The following functions are used for debugging APL code , or logging user-defined messages and events.

The following functions for Log and Notification described here are:

Table of Contents
maxLevel1

debug

This function prints the supplied argument to the output target specified in the Execution tab of the Workflow Properties dialog. The valid options are File or Event.

If File is selected, the debug is saved in the temporary directory specified in the system property pico.tmpdir. The file must be named as debug/<workflow name>.

Alternatively, the location of the debug file can also be configured directly by using the the mz.wf.debugdir property. Each time a workflow is activated, a new debug information will be generated and overwrite the existing file.

If Event is selected, the output is shown in the Workflow Monitor. For further information, see Workflow Monitor.

Code Block
void debug( arg )

Parameter

Description

arg

Argument to write to debug output. Could be any type. Note that printing a UDR type will dump all the field values, which may be a large amount of data. Similarly, the debug output for a table or list type may be very large.

There is a special case if arg is a bytearray. In this case, the output string will be the hex dump returned from the baHexDump built-in function.

For all other variable types, the output is the direct string conversion, meaning debug ( arg ) is the same as debug( (string) arg ).

Returns

Nothing

dispatchAlarmValue

The function makes it possible to detect alarm situations based on workflow behavior. It dispatches a user defined <value> with a user defined valueName from the workflow. The valueName used must be defined using Alarm Detection. For further information, see see Alarm Detection in the Desktop user's guide(4.2).

Code Block
void dispatchAlarmValue(string <"valueName">, long value)

Parameter

Description

"valueName"

The workflow alarm value name, as defined in the Alarm Detection Editor

value

Any value to be associated with the name

Returns

Nothing

Info
title

Example - Using dispatchAlarmValue

The following code example displays a situation and syntax useful for the dispatchAlarmValue.

Code Block
consume {
 if ( timeToPay ) {
 udrRoute(chargingUdr, "to_billing");
 //Enable for 'amount out of range' Alarm Detection
 dispatchAlarmValue("chargingAmount", chargingUdr.amount);
 }
}

dispatchEvent

A user can define a customized event type. This is done using an event UDR, optionally extended with user defined fields. This event UDR can be populated with any information by utilizing APL code, and then be sent on, using the dispatchEvent function, to be caught by the Event Notification. For further information about Event Notification, see Event Notifications in the Desktop user's guidesee Event Notification(4.2).

Code Block
void dispatchEvent( UltraEvent  eventUDR )

Parameter

Description

eventUDR

The name of the event UDR

Returns

Nothing

dispatchMessage

This method is used to produce user defined messages associated to predefined Event Categories. For further information about the Event Notification editor, see Event Notifications in the Desktop user's guidesee Event Notification(4.2). For instance, an Event Category could be named 'DISASTER', and be configured to send an email to the System Administrator. Then an APL agent could send a detailed description with the dispatchMessage function whenever this error situation is detected.

Code Block
void dispatchMessage
 ( string  string , 
 string  <Event Category>  )

Parameter

Description

string

Value/message to append to the Event Category

<Event Category>

Name of a user defined event as declared in the Event Notification Editor. This event must be defined in the Event Notification Editor in order for the APL code to compile.

Returns

Nothing

log*

Logs a message string to the System Log of type error, warning or information. The entry will fall under the Workflow category where workflow name will be the name of the current workflow and agent name will be the name of the agent logging the message.

Code Block
void logError
 ( string  message , 
 string  parameterName_n , // Optional
 string|int  parameterValue_n , // Optional
 ... )
 
void logInformation
 ( string  message , 
 string  parameterName_n , // Optional
 string|int  parameterValue_n , // Optional
 ... )
 
void logWarning
 ( string  message , 
 string  parameterName_n , // Optional
 string|int  parameterValue_n , // Optional
 ... )

Parameter

Description

message

A main message appearing in the log

parameterName_n

Name of an optional parameter. If declared, parameterValue_n must be declared as well.

parameterValue_n

Value of an optional parameter. If declared, parameterName_n must be declared as well.

Returns

Nothing

Info
title

Example - Using logWarning

The following code example logs a warning message, which when displayed in the System Log will look like the following figure:

Code Block
logWarning( "UDR failed validation",
 "ANUMBER IS ", input.anum, 
 "BNUMBER IS ", input.bnum,
 "DURATION IS ", input.duration);
Image RemovedImage Added

System Log inspection

log.*

These functions invokes logging with log4j. For information about how to configure the logging, see Customizing APL Logging for ECDs (34.2).

Code Block
void log.fatal
(any message, 
any tag ) //optional

void log.error
(any message, 
any tag ) //optional

void log.warn
(any message, 
any tag ) //optional

void log.info 
(any message, 
any tag ) //optional

void log.debug 
(any message, 
any tag ) //optional

void log.trace
(any message, 
any tag ) //optional

Parameter

Description

message

A value that will be appear in the message field in the log output
This parameter will be ignored if cannot be typecasted to a primitive data type e g string or int.

tag

Objects(s) that will appear in the tag field in the log output.

Returns

Nothing

title
Info

Example - Using log.debug

Code Block
consume {
   log.debug("In consume.");
  list<int> rcDebug =listCreate(int);
 int rc=0;
 listAdd(rcDebug,rc);
 rc=1;
 listAdd(rcDebug,rc);
 log.debug(rc,rcDebug);
 }

...

Code Block
void log.fatal
(any message, 
any tag ) //optional

void log.error
(any message, 
any tag ) //optional

void log.warn
(any message, 
any tag ) //optional

void log.info 
(any message, 
any tag ) //optional

void log.debug 
(any message, 
any tag ) //optional

void log.trace
(any message, 
any tag ) //optional

Parameter

Description

message

A value that will be appear in the message field in the log output
This parameter will be ignored if cannot be typecasted to a primitive data type e g string or int.

tag

Objects(s) that will appear in the tag field in the log output.

Returns

Nothing

title
Info

Example - Using log.debug

Code Block
consume {
   log.debug("In consume.");
  list<int> rcDebug =listCreate(int);
 int rc=0;
 listAdd(rcDebug,rc);
 rc=1;
 listAdd(rcDebug,rc);
 log.debug(rc,rcDebug);
 }

...

Sends an email to a configured recipient. In order to operate, the system must have an email remitter and an SMTP mail server defined. For further information on Platform properties, see Platform in the System Administrator's Guide.

Warning
title

Warning!

If used within the consume block, make sure that conditional expressions guarantees that this function does not get called for each UDR.

Code Block
void mailNotify
 ( string  address ,
 string  subject ,
 string  message ,
 string  sender ,  //Optional
 list<string>  attachment  ) //Optional

Parameter

Description

address

Email address to the recipient on the form: "user@xxx.com"

subject

Text ending up as the email subject

message

Message string ending up as the body of the email

Note
title

Note

This field will be sent as plain text. For sending in HTML format, refer to the mailNotifyHtml function.

sender

Name or address of the sender of the email

Note
title

Optional

This field will remain optional only when the attachment field is not populated. Once attachment is populated, the sender field will be a mandatory field.

attachment

A list that will contain one or many attachments to be sent with the email. Each list entry will be the full directory path of the attachment.

Info
title

Example

"/home/admin/attachments/word.txt"

Returns

Nothing

mailNotifyHtml

Sends an email in HTML format to a configured recipient. In order to operate, the system must have an email remitter and an SMTP mail server defined. For further information on Platform properties, see Platform in the System Administrator's Guide.

Warning
title

Warning!

If used within the consume block, make sure that conditional expressions guarantees that this function does not get called for each UDR.

Code Block
void mailNotifyHtml
 ( string  address ,
 string  subject ,
 string  message ,
 string  sender ,  //Optional
 list<string>  attachment  ) //Optional

Parameter

Description

address

Email address to the recipient on the form: "user@xxx.com"

subject

Text ending up as the email subject

message

Message string ending up as the body of the email

Info
title

Note

Supports standard HTML content.

sender

Name or address of the sender of the email

Note
title

Optional

This field will remain optional only when the attachment field is not populated. Once attachment is populated, the sender field will be a mandatory field.

attachment

A list that will contain one or many attachments to be sent with the email. Each list entry will be the full directory path of the attachment.

Info
title

Example

"/home/admin/attachments/word.txt"

Returns

Nothing