In the Services tab you have two predefined services, Supervision Service and Order Service. You can also add and configure different workflow services that have been developed using the Development Toolkit.
Note!
The Services tab is only valid for real-time workflows.
Preferences dialog - Services tab
Item | Description |
---|---|
Add Workflow Service | Click the Add icon to select a service to be used by the Workflow. In the Add Workflow Service dialog, select a service from the list and click Apply after each selected service. Click OK when finished. |
Remove Workflow Service | Select a service from the Services list and click the Remove icon to remove the service from the workflow. |
Supervision Service
This section describes the Supervision Service. With this service you can create decision tables for triggering different actions to be executed based on current MIM values. This may, for example, be useful for overload protection purposes.
Overview
The Supervision Service uses decision tables, where you can define different actions to be taken depending on which conditions that are met; log in System Log, use an overload protection configuration, or generate an event. You can use any MIMs available in the workflow for configuration of conditions, e g throughput, queue size, etc.
Supervision Service concept
The Supervision Service is available for real-time workflows, and can be configured in the Services tab in the Workflow Properties dialog. The supervision service with action overload can also be manually triggered with mzsh commands, in case it is needed for maintenance or other purposes. If the service is manually triggered, it has to be reverted to automatic mode for the settings in the Services tab to take effect once again.
Configuration of the Ordered Service
The Ordered Service is required by the Ordered Routing Queue Strategy. A function defined in APL code will extract values from any routed UDR or bytearray to decide which partition queue to add it to.
Ordered Routing allows you to utilize multicore cpus, but still have deterministic order. If we have session updates from a collection point that are encoded to a user defined UDR type Ordered.Subscriber.Update
with the field 'id
' containing a session id, the following example shows how the values are read and added to the ordered.SessionIdentifier
that the queue strategy will use to hash and select a partition based on.
Example - Ordered Routing Queue Strategy
import ultra.Ordered.Subscriber; void route(ordered.SessionIdentifier si, any input) { if(instanceOf(input, Update)) { Update u = (Update)input; ordered.addInteger(si, u.id); } }
Multiple values can be added to the SessionIdentifier
, it will calculate the hash based on them all after the route function returns. If there is more than one type routed into the workflow, there needs to be a longer if-else chain, with a clause for each type.
Function | Description |
---|---|
ordered.addInteger(ordered.SessionIdentifier si, int i) | Add the value of integer i to the SessionIdentifier |
ordered.addString(ordered.SessionIdentifier si, string s) | Add the value of string s to the SessionIdentifier |
ordered.addByte(ordered.SessionIdentifier si, byte b) | Add the value of byte b to the SessionIdentifier |
ordered.addBytes(ordered.SessionIdentifier si, bytearray ba) | Add the value of bytearray ba to the SessionIdentifier |
ordered.addByteRange(ordered.SessionIdentifier si, bytearray bs, int offset, int len) | Add the values of bytearray ba from offset and the next len bytes to the SessionIdentifier |
ordered.setPartition(ordered.SessionIdentifier si, int partition) | Alternatively, if more control over partition selection is wanted one can set the partition id explicitly, this will override any values added to the SessionIdentifier. |
If no values are added to the SessionIdentifier it will fall back to send the UDR to the first partition (partition zero).
Configuration of the Supervision Service
To open the configuration for the Supervision Service, open the Workflow Properties dialog in a real-time workflow configuration, click on the Services tab, click on the Add button, select the Supervision option and click OK.
The configuration for the Supervision service will now appear on the right side of the Services tab.
Configuration for Supervision Workflow Service
Item | Description |
---|---|
Execution Interval (ms) | Enter the time interval, in milliseconds, with which current MIM values should be checked against the conditions in the decision tables. This configuration will be valid for all decision tables. |
Decision Tables | All the decision tables you have configured are listed in this section. Click the Add button to add a new decision table. It may be a good idea to have different decision tables for different purposes. |
Note!
Even though you can change the order of your decision tables, this does not affect the functionality. All decision tables will be applied.
Creating a Decision Table
When you select to add a new decision table, the Add Decision Tables dialog opens.
Creating a Decision Table
In this dialog you configure your decision table. In a decision table, you determine which action to take depending on which conditions are met. These conditions and actions are configured in separate lists and will then be available for selection in the decision table configuration.
Item | Description |
---|---|
Decision Table | Enter a name for your decision table in the Name field. |
Table Parameters | Click the buttons Action Lists and Conditions Lists to configure the different conditions and actions for this table. |
Decisions | Each configured condition list will be displayed in the Conditions column. Each of these conditions can be set to either True, False or -. If you want to add more columns to set up different combinations of conditions, you can right-click the Action column heading and select to add more columns. For each column with a condition combination, you can then select which action to take in the drop-down list containing all configured actions. |
You configure your decision tables by following these steps:
Configure conditions. The conditions you configure are based on different MIM parameters having defined values.
Configure actions. When configuring the actions, you can select to have a Supervision event generated, to reject messages, or to log an entry in the System Log. Rejection can be made on all messages or on a certain percentage; 0, 25, 50, or 100 %.
Hint!
If you are using Diameter or Radius agents in your workflow, you can also select from a range of Diameter and Radius specific overload protection strategies in order to only reject specific types of messages. See Diameter Agents and 9.60 Radius Agents for further information about these strategies.
Create the decision table, i e set the conditions to either True , False or - (which means ignore) and select which action to take.
Set a name.
Click Add and repeat steps 1 to 4 for all the decision tables you want to create.
Note!
When a condition is evaluated to true, the corresponding action will be performed only once, until any other condition is also evaluated to true. Generally, this means that a minimum of two conditions is required in the decision table.
Configure conditions
To configure conditions:
Add Condition
Item | Description |
---|---|
Left Operand | Select a MIM parameter that you want to use for you condition in this section. |
Operator list | This is the drop-down list located between the two operands. Select either > (larger than),< (smaller than), == (equals), or != (not equal). |
Right Operand | Select what the selected MIM parameter and operator should match; either another MIM parameter, or a constant. |
In the Add Decision Tables dialog, click the Condition Lists button.
Click the Add button to open the Add Conditions dialog.
Click the Add button to add conditions.
In this dialog, select a MIM value for the left operand.
Select an operator.
Enter a constant, or select a MIM value, for the right operand.
Click Add to add the condition to the condition list.
Repeat steps 4 to 7 until you have added all the conditions you want to have in the condition list and then click Close when you are finished.
You will return to the Add Conditions dialog.
Add Conditions
Item Description List
Enter a name for the condition list in the Name field.
Match Select if you want all the conditions in the list to be matched or, if only one condition is required to match by selecting either of the buttons Any of the Following or All of the Following.
Conditions This section contains all the different conditions you have added to the list. Select if you want to match all conditions in the list, or if you want to match one of the conditions in the list.
- Give the list a name and click the Add button to add the condition list in the Create Decision Tables dialog.
- Repeat steps 3 to 10 until you have created all the condition lists you want to have and then click Close when you are finished.
You will return to the Create Decision Tables dialog.
Configure actions
To configure actions:
In the Add Decision Tables dialog, click the Action Lists button.
Click the Add button to open the Add Actions dialog.
Click the Add button to add actions.
Add Action
Item Description Action In this drop-down-list, you select if you want an entry to be logged in the System Log, or if you want an Overload Protection configuration to be configured, or if you want to generate a Supervision Event that can be sent to various targets depending on how you configure your Event Notifications.
Note!
The Overload Protection option is only available if you have Diameter or Radius agents in your workflow.
Description Enter a description for this action.
Reject This option is only available when you have selected to configure an Overload Protection action and determines the percentage of requests that should be rejected; 0, 25, 50, or 100 %. Strategy This option is only available when you have selected to configure an Overload Protection action and determines if you want to apply this action on all types of requests or if you only want to apply them to the requests following a selected Diameter or Radius overload protection strategy.
Content This option is only available when you have selected to configure a Supervision Event action and determines the content of the event. See Event Types for further information about event notification configuration. Severity This option is only available when you have selected to configure a System Log action and determines the severity of the log entry; Information, Warning, Error, or Disaster. Message This option is only available when you have selected to configure a System Log action and allows you to enter a message that will be visible in the System Log. In this dialog, select which type of action you want to use; System Log, Overload Protection or Supervision Event. Depending on what you choose, the options in the dialog differ.
- If you have selected an Overload Protection action:
- Enter a description in the Description field.
Select the percentage of messages you want to reject; 0, 25, 50 or 100 % in the Reject drop-down list.
In the Strategy drop-down list, you select if you want the action to be applied for all requests, or only for requests following any of the Diameter overload protection strategies.
- If you have selected a Supervision Event action:
Enter a description in the Description field.
Enter the event content in the Content field. This content can then be used when configuring Event Notifications for this event.
- If you have selected a System Log action:
Enter a description in the Description field.
Select a severity in the Severity drop-down-list.
Enter an optional message in the Message field.
- Click Add to add the action to the action list.
Repeat step 4 to 8 until you have added all the actions you want to have in the action list and then click Close when you are finished.
You will return to the Add Actions dialog.Add actionsItem Description List
Enter a name for the action list in the Name field.
Action This section contains all the actions you have added in this list.
Give the list a name and click the Add button to add the action list in the Create Decision Tables dialog.
- Repeat steps 3 to 10 until you have created all the action lists you want to have and then click Close when you are finished.
You will return to the Create Decision Tables dialog.
Configuring a Decision Table
In the Decision Table tab you will now have two columns; Conditions and Actions.
Creating a Decision Table
The Conditions column contains all the condition lists you have created, and in the Actions column you can set a condition to either True (true), False (false), or - (Ignore), and then select which action you want to trigger when the settings in the decision table match.
Depending on how many conditions you have configured, there may be many different combinations that you may want to configure different actions for. To add another column, right-click the Action column heading and select the option Add Column.... A new column will then be added. This can be repeated for all the different combinations you want to have.
Note!
Only one action can be selected for each set of combinations.
Example - Decision Table
Decision table example
The following actions will be taken during the following conditions:
Case 1
If the Incoming messages exceeds 50, a Supervision Event will be triggered.
Case 2
If the Incoming messages exceeds 100, 25 % of the incoming Diameter Credit-Control Initial requests will be rejected.
Case 3
If the Incoming messages exceeds 150, 100 % of the incoming Diameter Credit-Control Initial requests will be rejected.
MZSH Commands
If you need to manually trigger or clear the supervision service with action overload, e g for maintenance or other purposes, you can use the mzsh wfcommand
. See the /wiki/spaces/MD82/pages/3778935 for further information about this.