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.
...
title | Note! |
---|
The Services tab is only
...
for
...
Preferences dialog - Services tab
...
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.
...
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.
...
title | Example - Ordered Routing Queue Strategy |
---|
Code Block |
---|
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
...
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.
...
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.
...
Decision Table
...
Enter a name for your decision table in the Name field.
...
Click the buttons Action Lists and Conditions Lists to configure the different conditions and actions for this table.
...
You configure your decision tables by following these steps:
...
Configure conditions. The conditions you configure are based on different MIM parameters having defined values.
...
Tip | ||
---|---|---|
| ||
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.
...
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
...
Left Operand
...
Select a MIM parameter that you want to use for you condition in this section.
...
This is the drop-down list located between the two operands. Select either > (larger than),< (smaller than), == (equals), or != (not equal).
...
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.
...
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.
...
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
...
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. |
...
Enter a description for this action.
...
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.
...
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.
...
- 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.
...
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.
...
Enter a description in the Description field.
Select a severity in the Severity drop-down-list.
Enter an optional message in the Message field.
...
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.
Item | 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.
...
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. |
Info | ||
---|---|---|
| ||
The following actions will be taken during the following conditions: Case 1 Case 2 Case 3 |
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 thisRealtime workflows. The Services tab is not available on the desktop UI, refer to https://infozone.atlassian.net/wiki/x/ngFb on our Legacy Desktop for more information.