Here is an example of what a workflow design using the Nokia IACC agent could look like. A workflow containing a Nokia IACC agent can be set up to receive requests and send responses. This requires an Analysis agent to be part of the workflow.
An example workflow with a Nokia IACC agent sending an updated IACC_UDR
back to the source
To keep the example as simple as possible, the valid records are not processed. To illustrate how the workflow is defined, an example is given where an incoming UDR is validated, resulting in the field response
being updated and sent back as a reply to the source. Usually, no reply is sent back until the UDRs are fully validated and processed. The example aims to focus on the request and response handling only.
NokiaIACC Connection
The Nokia IACC agent will allow multiple client connections at the same time. The example workflow could be modified by connecting several clients to the Nokia IACC agent through the CORBA Naming Service, if preferred.
NokiaIACC Collection Agent
Drag and drop a Nokia_IACC collection agent into the workflow. To be able to receive and send requests and responses the Nokia IACC agent needs to connect with the CORBA Naming Service. Therefore the configuration dialog of the Nokia IACC agent needs to be updated with the appropriate values for the Host, Port and service Name.
The Analysis Agent
The Analysis agent handles both the validation of the incoming request, as well as sending the response.
Connect an Analysis agent to the Nokia IACC agent. Drag and release in the opposite direction to create a response route in the workflow.
Note the use of the instanceOf
function. This to verify the type of request and to be able to handle it accordingly. This example assumes a request to the hasCredit2
method. Therefore, this will be the only response populated and sent back with an updated response
field.
consume { if(instanceOf(input.request, HasCredit2)){ // Create and populate a response list<Subscriber> sList = listCreate(Subscriber); Subscriber sub = udrCreate(Subscriber); list<OneAttribute> aList = listCreate(OneAttribute); OneAttribute one = udrCreate(OneAttribute); one.level = 1; one.name = "hasCredit name1"; one.value = "hasCredit value1"; listAdd(aList, one); OneAttribute two = udrCreate(OneAttribute); two.level = 2; two.name = "hasCredit name2"; two.value = "hasCredit value2"; listAdd(aList, two); sub.attributes = aList; listAdd(sList, sub); input.response.subscribers = sList; //Send a response to the network element udrRoute(input); } else if (instanceOf(input.request, CancelReservation2)){ debug("a CancelReservation"); } else if(instanceOf(input.request, CommitReservation2)){ debug("a CommitReservation"); } }