Analytics User Guide
Analytics User Guide
Analytics
Set Up Users and Groups in STEP Workbench and Confirm Applying an Audit Message Business Action to an Entire Workflow 88
Filtering in Web UI 64
Workflow Audit Action Transition Evaluation 89
Power BI Authentication Configuration 69
Sample Audited Workflow 90
Service Principal Authentication Setup Overview 69
Workflow Audit Action JavaScript Code 90
Configuration Properties 69
Auditing by Workflow Transition 92
Export of Analytics Data for BI Tools 71
Sample JavaScript for a Workflow Business Condition Failure 92
Audit Message Framework 72
Script 93
Prerequisites 72
Sample JavaScript for a Workflow State On Entry Audit Message 95
About this Guide 72
Script 97
Audit Message Framework Functionality Overview 74
Analytics using JDBC Example 99
Audit Message Framework Configuration Properties and
Monitoring 76 Map Data 99
Audit Message Receiver JDBC Delivery Plugin Configuration Select Delivery Method 101
Properties 76
Topics 80
These analytics offerings can be used in conjunction with Stibo Systems' Product MDM and Customer MDM solutions, fulfilling a need to
make data actionable, allowing users to respond quickly to market trends and improve collaboration through fast, unique insights.
Benefits for various business users of Stibo Systems' analytics offerings include:
Vendors can examine the quality of submitted products in the Web UI and make adjustments based on presented insights.
Onboarding managers can identify item onboarding times and potential bottlenecks in workflows, being able to reassign tasks and solve data issues in
Web UI based on the presented information.
Product managers can examine sales information and page views for their products in Web UI to identify market value and adjust the master data based
on presented insights.
This guide covers the following analytics offerings from Stibo Systems:
Audit Message Framework: The Audit Message Framework (AMF) is a powerful message delivery solution that sends configurable messages to an
external system of the users' choice, allowing data in STEP to be extracted and exposed so it can be processed for statistical analysis.
JDBC Delivery Method: The Java Database Connectivity (JDBC) delivery plugin feature can be configured to automatically (or manually) make STEP
data available to an analytics platform, typically Tableau or Qlik. Refer to the Analytics using JDBC Example topic.
Contact Stibo Systems to enable licenses for your system. For on-premises systems, instructions for installing components can be found
in the 'SPOT Program' topic in the System Administration documentation found in 'Downloadable Documentation'. For Stibo Systems
SaaS environments, contact Stibo Systems Support.
When working with Tableau or Qlik, the Analytics Widget Web UI component (shown above) is useful as a quick, simplified view of a
dashboard, while the Analytics Screen Web UI component (shown below) offers a more expansive view of analytics data, allowing for
more interaction.
Users have the ability to utilize analytics tools in a variety of ways. They may:
Interact with dashboards composed of both master data and external data within the Web UI
Apply filters to analytics widgets and screens that give users tailored views of data analytics dashboards, reports, and/or tiles
Information related to configuration of data analytics tools for Tableau and Qlik in the Web UI can be found in the Visual Integration with
Tableau or Qlik topic.
To accommodate authentication with the Microsoft API, the Power BI integration uses its own components, the 'Power BI Analytics Wid-
get' and the 'Power BI Analytics Screen.' These are detailed in more depth in the Visual Integration with Power BI topic.
Prerequisites
To access the Web UI analytics components, the X.WebUI.Analytics license must be enabled on your system. Contact Stibo Systems for
more information and to enable licenses for your system.
A successful integration that includes automatic authentication may require configuration in the Web UI, the data analytics tool, and the
application server. This guide describes only those actions that can be taken in the Web UI and the application server. Configuration
actions that must be taken in the relevant data analytics tools are detailed in the appropriate vendor documentation.
This functionality supports the sharing of attribute values with the analytics environment, thus creating a dynamic dashboard that is
filtered based on the selected node (e.g., product).
Both the analytics widget and the analytics screen are configured in almost identical ways. The configuration steps described below can
be applied to configuring either the widget or the screen, except where expressly noted.
3. Url: This field relates to the analytics server dashboard URL that will be viewed in the Web UI. The URL can be static (showing a dashboard whose
display is not dependent on which object is currently selected) or dynamic (showing a dashboard that is dependent on which object is currently
selected). A static URL contains no mapping to STEP attributes. A dynamic URL does.
4. The fourth field displays the attributes selected in fields five and six with their corresponding placeholder numbers (in braces).
5. The fifth field is a dropdown menu from which users can select one of eight attribute types to create a dynamic dashboard in the analytics screen. The
attributes selected, if matched precisely in the analytics tool, can give users a filtered view of a dashboard based on which object is selected. For
instance, if a dashboard has been configured to display a pie chart representing data from ten different car manufacturers, but the user wishes only to
examine data for one of those manufacturers, keying on the attribute value 'manufacturer' (which must be present in both the dashboard and the Web
UI analytics screen), the Web UI screen can show the same pie chart with only the data for that one manufacturer displaying. The available attribute
types are as follows:
Locale returns the selected locale, which is used for the Web UI session
Today returns the current date. For other date formats, this functionality uses the rules for
SimpleDateFormatter in Java
User Email returns the email address of the logged-in user (if specified)
6. The sixth field will display when either 'Attribute Value' or 'Today' is selected in the fifth field. For instance, if the user selects 'Attribute Value,' the sixth
field displays with a node picker button ( ) beside it. Once clicked, the user may then select the appropriate attribute value in the node picker window.
If a user selects 'Today', then the sixth field will display allowing users to add the date in the proper format.
After the attributes needed to implement a dynamic dashboard view have been added, but before the URL has been manually edited to
include the placeholders, the URL might look something like this:
In the example below, the Tableau field 'Make' is mapped to placeholder {0}, Tableau field 'requester' is mapped to placeholder {2}, and
Tableau field 'emailed' is mapped to placeholder {1}.
Braces can be encapsulated within braces to ensure that a URL is always valid (e.g., to avoid 404 errors), especially if one of the place-
holders does not return any content. If such a placeholder within the encapsulated section does not return content, the entire section
within braces will be removed from the URL parameter. An example of this is shown in the screenshot below.
For more information on how to structure the URL, users should reference the 'Using Field and Filter Values in URLs' topic in the doc-
umentation available for the relevant analytics tool.
For information on the purpose of the other parameters, refer to the description in the Configuring the Analytics Screen section of this
topic.
Configuring Authentication
Automatic authentication refers to the capability of enabling seamless access to the data analytics tool upon logging in to the Web UI.
The analytics functionality available in STEP is built to accommodate many analytics tools, but with respect to automatic authentication
of users, STEP supports Tableau and Qlik. Once authentication is configured correctly, the user will be granted access to the analytics
server restricted by the licensing and user privileges set on the analytics environment. A suitably privileged user will have a seamless dis-
play of a Tableau or Qlik dashboard in their Web UI.
To enable automatic sign-on for access to Tableau dashboards, users must select the 'TableauTrustedAuthentication' option from the dropdown.
To enable automatic sign-on for access to Qlik dashboards, users must select the 'QlikTicketAuthentication' option.
Tableau
To enable automated Tableau authentication, admin users must configure Tableau to add the relevant STEP application server as a trus-
ted host. Further, the username used in Tableau must match the username used in the Web UI to enable the authentication (the pass-
words, however, can be different). Refer to the 'Trusted Authentication' documentation on the official Tableau website for details on this
functionality.
Qlik
Successful configuration of automatic authentication for Qlik in the Web UI requires that a number of conditions be met:
a certificate, created and configured on the Qlik server, must be placed on the user's app server
the Web UI user name and the user name used to access Qlik must be the same (the passwords can be different)
Below are the three sample properties divided into the components required to enable placement of the certificate.
2. The application server path to where the certificate is posted ('/workarea/Qlik-cert/'), followed by the file name of the certificate ('client.pfx')
6. The name of the user directory in Qlik in which the allowable user names are contained
Once the properties are properly added to the sharedconfig.properties file, the user should save the file and then execute a stop / start of
the relevant STEP system. Following this (allow for a few minutes) the user with a Qlik analytics widget or screen will have automated
sign-in enabled, which means that access to the Qlik server will automatically occur immediately following a successful sign-in to the
Web UI.
Enable navigation from embedded Tableau Web UI dashboards to other standard Web UI screens using Tableau 'Actions'. To do
this, users must create calculated Tableau fields to generate STEP Web UI URLs using STEP IDs and screen IDs. Be sure to have
STEP IDs in your underlying Tableau data to identify the target object in the generated URL. This method can be extended to access
any STEP REST API functionality. For example, it is possible to initiate a workflow from within an embedded Web UI Tableau screen.
To inform users when the dashboard was last updated, users can configure Tableau to display a timestamp. This can be done by
adding the tag “Data Update Time” in the dashboard title. This is particularly useful when you have automated update processes.
To transform STEP multi-value attributes into a Tableau list of values, use parameters and calculated fields. Users must define a
Tableau parameter with the list of user-selectable values. Then, a Tableau calculated field with a Boolean condition (e.g., Tableau’s
‘CONTAINS’ function) must be defined that compares the multi-value attribute in the dashboard source data with the parameter list
of values. Finally, users must add the calculated field as a filter with the option 'True' selected.
Consider using data source filters to optimize the performance of Tableau. Data source filters exclude unnecessary data from your
dashboard, which has the effect of improving dashboard performance. Standard filters only hide unnecessary data, which means the
data is still processed, leading to potentially diminished dashboard performance.
Prevent the embedded Web UI Tableau dashboard from creating new windows or tabs when following links to other screens in the
To configure a Tableau dashboard to fit into a double-size widget, the screen should be set to 485px wide by 260px high.
Prerequisites
Customers must already have a licensed Power BI account. There are no preconfigured dashboards or reports delivered with the visual integration with
Power BI; it is up to users to pre-create these in their existing Power BI instance before they can be viewed in the Web UI.
To access the Power BI visual analytics integration, the X.WebUI.Analytics license must be enabled on your system. Additional setup tasks and system
configurations must also be performed by Stibo Systems' Technical Services team upon initial setup. Contact Stibo Systems for additional information
and to enable licenses for your system.
Power BI Web UI Screen: Includes example Power BI screens and instructions for configuring the Power BI Screen
Power BI Web UI Widget: Includes example Power BI widgets and instructions for configuring the Power BI Widget
Power BI Flyout Panel: Includes information for configuring and using the Power BI flyout panel
Locating Power BI IDs: Explains how to locate the Power BI IDs that are required to configure the Power BI Web UI
Example Power BI Report Filters: Provides several example JSON-formatted report filters that can be used when configuring the
Power BI Web UI to filter the results of displayed data
Power BI Row-Level Security: Provides an overview of how to configure row-level security (RLS) for Power BI dashboards and
reports based on users and user groups in STEP and their corresponding roles and rules in Power BI
Power BI Authentication Configuration: Provides a brief overview of how to configure user authentication between STEP and Power
BI as well as the sharedconfig.properties required on the STEP application server to enable this authentication
The following screenshot shows a sample Power BI report on a Power BI screen in the Web UI. An optional filter panel is shown on the
right side of the screen, and an optional page navigation panel appears on the bottom.
The following screenshot shows a sample Power BI screen in the Web UI displaying several Power BI tiles as part of a Power BI dash-
board.
Note: Filters are only available for reports — not for dashboards.
The Power BI screen and Power BI widget are configured in almost identical ways, with some minor exceptions. The configuration steps
described below can be applied to configuring either the widget or the screen, except where expressly noted.
1. Title: Content added to this field appears at the top of the Power BI (screen or homepage widget).
2. Power BI Workspace ID: Enter the ID of the relevant Power BI Workspace. For example, b556ac84-9d9a-4af6-b569-6a770f3bbe11. For information on
how to obtain this value, refer to the Locating Power BI IDs.
3. Display: Select either 'Dashboard / Tile' or 'Report.'
1. Dashboard ID: Enter the ID of the relevant Power BI dashboard. For example, 4c3d6f97-7dc8-4789-a911-5f04daf9de5f.
2. Dashboard Tile ID: Enter the ID of the relevant Power BI dashboard tile. This option will cause the Web UI screen to be composed of a single tile.
Report Configuration
If you are configuring your Power BI screen to display a report, select Report from the Display dropdown, then click the 'Edit...' button to
the right of the Display field to open the Report Properties designer window.
https://app.powerbi.com/groups/xx/reports/xx/ReportSection?redirectedFromSignup=1
If you want to display another page, the ID format includes IDs after the 'ReportSection' element as displayed below and in the
previous image:
https://app.powerbi.com/groups/xx/reports/xx/ReportSection9f23d6b5385df749ba5a?redirectedFromSi
gnup=1
Note: To filter data based on user permissions, e.g., to ensure that the logged-in user only accesses data that is relevant to them,
you must use row-level security (RLS). For more information, refer to the Power BI Row-Level Security topic in this guide.
3. Filter parameters (field not individually labeled) – In this field, enter the relevant filter parameters, e.g., ‘Attribute Value.’ Each selected parameter will be
assigned a placeholder string that will be replaced with a context-specific value to be referenced in the JSON query string. These placeholders also
contain an embedded integer that identifies the sequence in which the parameter will appear in the filter string, e.g., #%0%# will appear first, #%1%#
will appear second, etc. Moving a parameter up or down with the 'up' or 'down' button will automatically renumber the placeholder.
Note: It is recommended to generate the placeholders for the filter parameters before entering the JSON filter string in the bot-
tom field.
4. The dropdown menu below the filter parameters field allows the selection of various options to create the filter parameters. The available parameters
include:
Locale: Returns the selected locale, which is used for the Web UI session
Node Id: Returns the STEP ID of the current object (valid for Power BI Screen only)
User Email: Returns the email address of the logged-in user (if specified)
5. The field directly to the right of the dropdown menu will display when either 'Attribute Value' or 'Today' is selected. If Attribute Value is selected, the
ellipsis button displays ( ). Clicking this button opens the 'Select Node(s)' window, where the relevant attribute is chosen. If Today is selected, a
'Date Format' window displays, in which the chosen date format is entered, e.g., yyyy-MM-dd. The date format uses the rules for SimpleDateFormat in
Java.
6. JSON filter string (field not individually labeled) – In this field, enter the desired JSON filter string. It is recommended that the string contain placeholders
that correspond with the numbered dynamic values selected for the JSON filter parameters, e.g., #%0%#. #%1%#, etc.
7. Filter Panel: Check this box to display a Power BI filter panel on the right side of the Web UI screen. An example is shown in the first screenshot in this
topic. The filter panel is optional.
Note: Any configured filters will still apply to the Power BI report even if no filter panel is present.
8. Page Navigation Panel: Check this box to display a page navigation panel on the bottom of the Web UI screen. This allows you to easily navigate
between different pages of the Power BI report. An example is shown in the first screenshot in this topic.
The Power BI Widget is used to provide high-level summary information of Power BI analytics information made available to users as wid-
gets on the Web UI homepage. Most commonly, Power BI dashboard tiles are embedded into widgets, though Power BI reports can also
be embedded into Power BI widgets.
The below screenshot shows a Web UI homepage with two sample Power BI Widgets at the bottom, each of which is configured to show
a Power BI dashboard tile. The Power BI Widget is very similar to the Power BI Screen except it is designed to display smaller amounts
of high-level summary data.
The Power BI Screen and Power BI Widget are configured in almost identical ways, with some minor exceptions. The configuration steps
described below can be applied to configuring either the widget or the screen, except where expressly noted.
1. Title: Content added to this field appears in the top left corner of the widget. If no title is set, the default title of 'Analytics' will display.
2. Power BI Workspace ID: Enter the ID of the relevant Power BI Workspace. For example, b556ac84-9d9a-4af6-b569-6a770f3bbe11. For information on
how to obtain this value, refer to the Locating Power BI IDs topic.
3. Display: Select either 'Dashboard / Tile' or 'Report.' The most common selection for the Power BI Widget will be Dashboard / Tile, though reports can
also be embedded in a Power BI widget if desired.
Note: It is not recommended to embed dashboards into Power BI widgets due to the limited space available in the widget.
1. Dashboard ID: Enter the ID of the relevant Power BI dashboard. For example, 4c3d6f97-7dc8-4789-a911-5f04daf9de5f.
2. Dashboard Tile ID: Enter the ID of the relevant Power BI dashboard tile. This should always be entered for Power BI widgets, since tiles are what
widgets are intended to display.
Report Configuration
If you are configuring your Power BI widget to display a report, select Report from the Display dropdown, then click the 'Edit...' button to
the right of the Display field to open the Report Properties designer window. Reports in Power BI widgets are configured in a near-
identical fashion to those for Power BI screens, except widgets cannot have a Filter Panel or Page Navigation Panel. Filtering is
1. Report ID: Enter the ID of the relevant Power BI report. For information on how to obtain this value, refer to the Locating Power BI IDs topic.
2. Report Page: Enter the name of the Power BI report page that you want to display when the report loads in the widget.
Note: To filter data based on user permissions, e.g., to ensure that the logged-in user only accesses data that is relevant to them,
you must use row-level security (RLS). For more information, refer to the Power BI Row-Level Security topic.
3. Filter parameters (field not individually labeled) – In this field, enter the relevant filter parameters, e.g., ‘Attribute Value.’ Each selected parameter will be
assigned a placeholder string that will be replaced with a context-specific value to be referenced in the JSON query string. These placeholders also
contain an embedded integer that identifies the sequence in which the parameter will appear in the JSON filter string, e.g., #%0%# will appear first,
#%1%# will appear second, etc. Moving a parameter up or down with the 'up' or 'down' button will automatically renumber the placeholder.
Note: It is recommended to generate the placeholders for the filter parameters before entering the JSON filter string in the bot-
tom field.
4. The dropdown menu below the filter parameters field allows the selection of various options to create the filter parameters. The available parameters
are as follows:
Attribute Value: Returns / filters the view for a STEP attribute value. Valid for the Power BI Screen only.
Locale: Returns the selected locale, which is used for the Web UI session
Node Id: Returns the STEP ID of the current object (valid for Power BI Screen only)
User Email: Returns the email address of the logged-in user (if specified)
5. The field directly to the right of the dropdown menu will display when either 'Attribute Value' or 'Today' is selected. If Attribute Value is selected, the
ellipsis button displays ( ). Clicking this button opens the 'Select Node(s)' window, where the relevant attribute is chosen. If Today is selected, a
'Date Format' window displays, in which the chosen date format is entered, e.g., yyyy-MM-dd. The date format uses the rules for SimpleDateFormat in
Java.
6. JSON filter string (field not individually labeled) – In this field, enter the desired JSON filter string. It is recommended that the string contain placeholders
that correspond with the numbered dynamic values selected for the JSON filter parameters, e.g., #%0%#. #%1%#, etc.
Node List: If you access the flyout panel from a Node List, where the Analytics action has been configured to display in the toolbar, you
simply make a single or multiple object selection and then click the Analytics button.
If you click another 'global' flyout panel, such as alerts or BGP, the analytics panel will be replaced by the other flyout until the Analytics
button is clicked again, even if the Power BI flyout panel is pinned.
To configure this panel, in the Node Details component, add the applicable Summary Card component as a child component to the
Below Title component. For general configuration details about these Summary Cards, refer to the Below Title Component topic in the
Web User Interfaces documentation.
For the steps below, the Product Summary Card component will be used to outline the Power BI flyout panel configuration. The steps will
be similar for the Entity Summary Card and Classification Summary Card.
1. Within Node Details Properties, add the 'Product Summary Card' as a child component to the Below Title component, then click 'go to component.'
2. On Product Summary Card Properties, select Analytics from the Secondary Summary Card Section dropdown list. (This option will only display if the
Analytics commercial license is activated for your system,)
1. Within Node List Properties, go to Child Components. Click Add under the Actions field.
Workspace ID
Report ID
Report Page ID
Dashboard ID
Dashboard Tile ID
This topic explains how to locate these IDs in the URLs that are accessed from within the Power BI web application. You must be logged
into Power BI (https://app.powerbi.com) to access these URLs.
The Workspace ID can be copied from the URL of a report or dashboard when viewed from within Power BI. The Workspace ID is defined in the groups
section of the URL. For example, https://app.powerbi.com/groups/556ac84-9d9a-4af6-b569-6a770f3bbe11/reports/974040d0-d401-4680-87f3-
49a04acbccda/ReportSection3.
The Report Page is the page of the report that will show when the report is first loaded. For example, https://app.powerbi.com/groups/556ac84-9d9a-
4af6-b569-6a770f3bbe11/reports/974040d0-d401-4680-87f3-49a04acbccda/ReportSection3
In the above screenshot, the Overview tab is the report page. Other report pages can be viewed by clicking on another tab (e.g.,
District Monthly Sales or New Stores). When another page is selected, the URL will then show the page ID of the selected page.
The Dashboard Tile ID is available by selecting the relevant dashboard when viewed in Power BI, then clicking the ellipsis (...) that appears when
hovering over a dashboard tile and selecting 'Open in Focus Mode.'
Note: Filter panels are only applicable to reports; dashboards and tiles do not support filter panels.
On Power BI screens and widgets that display Power BI reports, JSON filters allow you to specify additional filters beyond the standard fil-
ters configured in Power BI. On screens that show reports, the filters can be shown in the optional Power BI 'Filters' pane on the right
side of the page.
Note: To filter data based on user permissions, e.g., to ensure that the logged-in user only accesses data that is relevant to them,
you must use row-level security (RLS). For more information, refer to the Power BI Row-Level Security topic in this guide.
This topic describes several examples of JSON-formatted filter strings that can be placed into the 'JSON parameters and Filter String'
field in the Web UI designer when configuring a report display for a Power BI screen. For more in-depth details on configuring report fil-
ters for Power BI, refer to the following Microsoft help documentation: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Filters.
Example Filters
Report-level filters support the following types: Basic Filter, Advanced Filter, and Relative Date Filter. The exact format for filters is
defined by Microsoft. For more information, refer to: https://microsoft.github.io/powerbi-models/interfaces/_models_.ifilter.html.
When no JSON filter is specified in the Web UI screen configuration, the Power BI filter pane appears as in the following screenshot. The
filter parameters shown in the filter pane are only those that are configured on the Report within the Power BI application.
Note: Users can deselect the values and show the unfiltered results.
Basic Filter
The following string creates a simple Power BI filter that only includes data if the value in the 'Item' table / 'Category' column is either 010-
Womens or 020-Mens.
{
"target": {
"table": "Item",
"column": "Category"
},
"filterType": 1,
"operator": "In",
"values": [
"010-Womens", "020-Mens"
As shown in the following screenshot, the string has created a 'Category' filter pane with basic filtering that automatically filters data on
the 010-Womens and 020-Mens categories.
{
"target": {
"table": "Item",
"column": "Category"
},
"filterType": 1,
"operator": "All",
"values": []
}
Note: In Power BI, the 'Select All' button is not activated when using this filter.
{
"target": {
"table": "Item",
"column": "Category"
},
"logicalOperator": "Or",
"conditions": [
{
"operator": "Contains",
"value": "junior"
},
{
"operator": "Contains",
"value": "kids"
}
],
"filterType": 0
}
In the report sample shown below, this will match the values 030-Kids and 040-Juniors.
{
"target": {
"table": "Item",
"column": "Category"
},
"logicalOperator": "Or",
"conditions": [
{
"operator": "Contains",
"value": "junior"
},
{
"operator": "IsBlank",
"value": ""
}
],
"filterType": 0
}
{
"target": {
"table": "Store",
"column": "OpenDate"
},
"operator": 0,
"timeUnitsCount": 6,
"timeUnitType": 5,
"includeToday": true,
"filterType": 4
}
Explanation of values:
Single Filter
This sample shows a basic JSON filter string that is configured to have a dynamic value replacement in the form of a placeholder to fill
in the 'values' field. The placeholder string #%0%# will be replaced with the value(s) for the attribute 'Category' for whichever node is cur-
rently selected in the Web UI. A screenshot of how the filter displays in the Web UI designer appears below the string.
Note: The placeholder string (e.g., #%0%#) is specific to STEP functionality and is not part of the schema as defined by Microsoft.
{
"target": {
"table": "Item",
"column": "Category"
},
"filterType": 1,
"operator": "In",
"values": [
"#%0%#"
]
}
When the relevant product folder is selected in the Web UI on a Node Details screen, the attribute value for 'Category' is passed to Power
BI to use in a filter on the 'Item' table / 'Category' column. In this instance, the value of 'Category' on the selected 'Mens' product node is
'020-Mens.' This results in a filtered report with '020-Mens' preselected, as shown below:
[
{
"target":{
"table":"Item",
"column":"Category"
},
"filterType":1,
"operator":"In",
"values":[
"#%0%#"
]
},
{
"target":{
"table":"Store",
"column":"Chain"
},
"filterType":1,
"operator":"In",
"values":[
"#%1%#"
]
}
]
For a hierarchy of products, the report data at each level in the Tree should be further filtered to be more specific to the selected node.
This is possible using basic filtering and attribute value inheritance. In this example, there is a folder hierarchy named 'Power BI' that con-
tains two child folders: Fashions Direct and Lindseys. The Lindseys folder contains further category folders—Kids, Mens and Womens.
When the Power BI folder is selected in the Web UI, it will display a report that includes all data—both Lindseys and Fashions Direct and
all the category folders below them.
The Power BI product folder has no values for either the Brand Name or the Category attribute. When specifying a basic filter, if there
are no values for the specified attributes, then the filter defaults to 'Select all.'
Note: In Power BI, the 'Select all' checkbox is not always selected when a filter is set to 'Select all.'
This topic provides an example setup of row-level security applied to data from two fictional retail chains (Lindseys and Fashions Direct),
how to set up users and permissions in Power BI through the Power BI Desktop application, and how to set up corresponding users and
groups in the workbench.
The following considerations apply to configuring row-level security for Power BI:
To configure row-level security, roles and rules must be defined within the Power BI Desktop application; they cannot be defined from within the Web UI
or by logging into Power BI (via https://app.powerbi.com).
The Power BI Desktop application is only available for the Windows platform. For more information on Power BI Desktop, including download access,
refer to https://powerbi.microsoft.com/desktop.
For more detailed information from Microsoft on how to configure row-level security for Power BI, refer to the following topics:
Users: The end users that view the artifact (dashboard, tile, or report). After configuring Power BI authentication, users will be automatically
authenticated with Power BI when viewing Power BI data in the Web UI. For more information, refer to the Power BI Authentication Configuration topic.
Roles: Users belong to roles. A role is a container for rules and can be named something like Sales Representative or Sales Manager.
Rules: Row-level security is defined within the roles. Roles have rules, and these rules are the actual filters that are applied to the data. The rules can be
as simple as 'Country = Canada' or something more complex.
From a STEP perspective, when row-level security is applied, the Power BI user for which STEP requests an access token will be the
STEP user ID of the currently logged in user. The Power BI roles that the user belongs to will correspond to the STEP user group IDs
that the user is a member of.
1. The below screenshot shows the Power BI Desktop interface with five database tables displayed. This example uses information from the 'District' and
'Store' tables, with a focus on the 'Chain' and 'DM' (district manager) columns from the Store table.
2. The first role created for this example setup is 'Lindseys District Managers' (step 1 in the below screenshot).
The first rule created for this role is to match DM to username. Select the District table (step 2), then match DM to username by
entering the [DM] = USERNAME() string into the Table filter DAX expression field (step 3). The STEP user ID will be passed to Power
BI in such a way that it can be accessed via the USERNAME() function.
Select the Store table (step 2), then match Chain to Lindseys by entering the string [Chain] = "Lindseys" into the Table filter DAX
expression field (step 3).
4. The next role created for this example setup is 'Lindseys Super User' (step 1 in the following screenshot).
Create a rule to match Chain to Lindseys by selecting the Store table (step 2), then enter the string [Chain] = "Lindseys" into the
Table filter DAX expression field (step 3).
This rule ensures that anyone who is part of the Lindseys Super User group will be able to examine all Lindseys-specific data,
regardless of their user name (i.e., there is no filtering on user name applied).
Create a rule (not pictured in the below screenshot) to match DM to username for users within the Fashions Direct District Managers
group by selecting the District table, then entering the [DM] = USERNAME() string into the Table filter DAX expression field.
Create a second rule to match Chain to Fashions Direct by selecting the Store table (step 2), then entering the string [Chain] =
"Fashions Direct" into the Table filter DAX expression field (step 3).
6. Create a 'Fashions Direct Super User' role in a similar way how the 'Lindseys Super User' group was created, including a rule to match Chain to
Fashions Direct by selecting the Store table, then entering the string [Chain] = "Fashions Direct" into the Table filter DAX expression field.
7. Last, create a 'Power BI Super User' role that has no filtering set on any of the tables. Anyone with this role will be able to examine all data completely
unfiltered.
2. Select the Power BI workspace to upload the Power BI report with RLS.
Note: The dashboard will probably be empty, so you will need to add tiles to it yourself. Refer to https://docs.microsoft.com/en-
us/power-bi/service-dashboards for more information.
At this point, no corresponding users and user groups have been set up in STEP, so there are no roles that Power BI understands.
Therefore, no Power BI information will display in the Web UI. For example, if you log into the Web UI and attempt to view a
Dashboard with RLS applied, it will look like the following screenshot:
1. In the workbench, create a 'Power BI' user group, then create a group beneath it with the ID 'Power BI Super User.' Add the relevant Power BI super
user(s) to this group, e.g., 'User.'
Note: This is not a hard-coded user group ID; the ID just has to match with the name of the role that has been created in Power
BI.
Fashions Direct District Managers (Andrew Ma, Carlos Grilo, Tina Lassila)
4. Log into the Web UI with one of the previously created district manager users, e.g., Carlos Grilo, who is a member of the Fashions Direct District
Managers group. Power BI will filter everything appropriately.
The visual integration between STEP and Power BI uses an 'app owns data' scenario instead of 'user owns data.' As a result, individual
users who log into the Web UI to view Power BI information do not need a Power BI account; STEP is configured with the relevant cre-
dentials to authenticate the Power BI service.
Note: Though individual users do not need a Power BI account to view Power BI information in the Web UI, a licensed instance of
Power BI is required for the visual integration with STEP.
A general overview of how to set up Power BI using the service principal is as follows. For more detailed information, refer to the fol-
lowing Power BI help page: https://docs.microsoft.com/en-us/power-bi/developer/embed-service-principal#get-started-with-a-service-
principal.
1. Set up Power BI with the service principal in Microsoft Azure Active Directory (AD). In AD, you will perform tasks that including the following:
Create a security group and add the application you created (e.g., Stibo Power BI Embedded) to that
security group.
For more information, refer to the following Microsoft Azure AD help page: https://docs.microsoft.com/en-us/azure/active-
directory/fundamentals/active-directory-groups-create-azure-portal.
2. As a Power BI admin, enable service principal in the Developer settings in the Power BI admin portal. To access the Power BI admin portal, visit:
https://app.powerbi.com/admin-portal.
Note: To become a Power BI admin, users must belong to the Power BI administrators group in Microsoft Azure.
3. In Power BI, set up your Power BI environment and add the service principal as an admin to the relevant Power BI workspace. For more information,
refer to https://docs.microsoft.com/en-us/power-bi/developer/embed-service-principal.
4. Configure STEP to connect to the Power BI Service using the service principal. This is done by adding the configuration properties listed in the next
section of this topic to the sharedconfig.properties file on your application server.
Configuration Properties
The following table explains the configuration properties required to enable authentication between STEP and Power BI.
PowerBI.TenantID Power BI Tenant ID. This should be set to the 'Directory (tenant) ID' specified on the Overview screen of the App
Registration in Azure Active Directory.
PowerBI.ServicePrincipal.ClientID Power BI Service Principal Client ID. This should be set to the 'Application (client) ID' specified on the Overview screen
of the App Registration in Azure Active Directory.
PowerBI.ServicePrincipal.ClientSecret Power BI Service Principal Client Secret. This should be set to the value of the Client Secret specified on the
'Certificates & secrets' screen of the App Registration in Azure Active Directory.
The below screenshot illustrates where to locate values for the PowerBI.TenantID and PowerBI.ServicePrincipal.ClientID con-
figuration properties in the Microsoft Azure interface:
Audit Message Framework: The Audit Message Framework (AMF) is a powerful message delivery solution that sends configurable messages to an external system of the
users' choice, allowing data in STEP to be extracted and exposed so it can be processed for statistical analysis. The AMF includes an out-of-the-box Audit Message Receiver
JDBC Delivery Plugin, which utilizes message queues that correspond to tables in the external JDBC database into which user-specified audit messages are written. The
analysis of workflow data is the typical focus for users of the AMF.
JDBC Delivery Method: The Java Database Connectivity (JDBC) delivery plugin feature can be configured to automatically (or manually) make STEP data available to an
analytics platform, typically Tableau or Qlik. This feature effectively closes the loop of data and visualization by making master data viewable in a data analytics dashboard,
which is in turn viewable in the Web UI. The analysis of product data is the typical focus for users of the JDBC delivery method. For information regarding proper setup of
JDBC in conjunction with data analytics integration with the Web UI, refer to the Analytics using JDBC Example topic. For additional information on JDBC data delivery, refer
to the following topics:
Exporting Data via JDBC with CSV Format in the Data Exchange documentation
JDBC Delivery Method in the 'Export Manager' section of the Data Exchange documentation
JDBC Delivery Method in the 'OIEP Delivery Methods' section of the Data Exchange documentation
This data can be used to support the auditing of workflows and related data, such as helping users determine where objects in a work-
flow are spending most of their time, and why conditions fail for particular objects in a workflow. The resulting data can be analyzed and
blended with data from third-party systems, via business intelligence (BI) tools, to provide valuable insights that identify issues and
improve processes. The gathering and analysis of this data can also help improve legal compliance.
Prerequisites
To access the Audit Message Framework and functionality, the Analytics commercial license must be enabled on your system. Contact
Stibo Systems for more information about the Analytics commercial license and its associated components / system licenses.
Additional setup tasks and system configurations must also be performed by Stibo Systems Technical Services and/or SaaS Operations
teams. This includes installing and setting up internally required components like Kafka and ZooKeeper and updating system properties.
A private endpoint connection can be configured (by the SaaS team) via request. Additional setup on the part of the customer may be
needed. If you have the Analytics commercial license and want to implement this solution, submit an issue within the Stibo Systems Ser-
vice Portal. The appropriate Stibo Systems team will reach out to get the specific information needed to complete the configuration.
The information in the tables within the topics below are best viewed online.
Audit Message Framework JavaScript Binds and Public JavaScript API Methods
The Audit Message Framework is also available to users of systems with the Analytics components enabled, which includes Web UI
access to Power BI, Tableau, and Qlik. Refer to the Visual Integration with External Analytics Tools section of this guide for more inform-
ation.
Public JavaScript API methods to audit and persist STEP data, including workflow status and events. The public API methods can be used from custom
code or from within JavaScript business actions.
A simplified messaging system to deliver data to an external database via Java Database Connectivity (JDBC) and Cassandra.
The graphic below provides a more detailed view of how the Audit Message Framework functions. A high-level summary is as follows:
1. Business rules are executed to deliver messages asynchronously to persistence via the API
2. The out-of-the-box JDBC receiver or Cassandra receiver reads these messages from persistence
Note: Though the Audit Message Framework has the capability to send messages synchronously, it is recommended to send mes-
sages asynchronously to help minimize the performance impact on the callers of the interface.
After the information lands in the external repository, the information will likely continue its way downstream into a BI tool, such as
Tableau or Qlik. Within these tools, users can visually digest the extracted information in the form of graphics and charts, such as the pie
chart below. This example chart details the percentage of objects in specified workflow states at a given moment in time.
Note: The Azure SQL Database delivery method for AMF is configuration driven, so those SaaS customers wanting to implement
this solution should submit an issue within the Stibo Systems Service Portal. SaaS Operations and Technical Services will reach out
to get the specific information needed to complete the configuration.
Since the AMF solution provides the flexibility for users to create their own plugins, these configuration settings are not required if a dif-
ferent plugin is used. Users may choose to write their own plugins if they want to deliver messages to a location that cannot be written to
via JDBC or Cassandra, e.g., directly to the file system, or to a MongoDB database.
AuditMessaging.JDBCReceiver.DriverPath Full path to JDBC driver jar required to connect to the JDBC database.
AuditMessaging.JDBCReceiver.DriverClass Name of the JDBC driver class required to connect to the JDBC database.
AuditMessaging.JDBCReceiver.URL URL, host name and port number, to allow access to the JDBC database instance.
AuditMessaging.JDBCReceiver.Password Password for user to use when accessing JDBC database instance.
AuditMessaging.JDBCReceiver.TableName Comma-separated list of the names of database tables to insert audit messages into in
JDBC database instance.
Each table name can be preceded by a topic using the format 'myTopic =
myDatabaseTable.' If no topic is specified for the database table, the name of the
database table will be used as the topic. For example, a property set to:
Messages sent to a particular topic will be inserted into the corresponding database
table.
Valid characters for topics and table names are the ASCII alphanumerics, '.', '_', and '-'.
More information on this configuration and how it is used with topics is provided in the
Audit Message Framework JavaScript Binds and Public JavaScript API Methods topic.
Note: The application server must be restarted to implement any change to the
TableName property.
AuditMessaging.JDBCReceiver.DriverPath=C:/mysql-connector-java-8.0.12.jar
AuditMessaging.JDBCReceiver.DriverClass=com.mysql.cj.jdbc.Driver
AuditMessaging.JDBCReceiver.URL=jdbc:mysql://localhost:3306/sys
AuditMessaging.JDBCReceiver.UserName=user_name
AuditMessaging.JDBCReceiver.Password=password
AuditMessaging.JDBCReceiver.TableName=Audit=AuditMessagesDBTable
AuditMessaging.JDBCReceiver.DriverPath=E:/oracle-jar/ojdbc6.jar
AuditMessaging.JDBCReceiver.DriverClass=oracle.jdbc.driver.OracleDriver
AuditMessaging.JDBCReceiver.URL=jdbc:oracle:thin:@//66.66.66.166:1521/somedb
AuditMessaging.JDBCReceiver.UserName=user_name
AuditMessaging.JDBCReceiver.Password=password
AuditMessaging.JDBCReceiver.TableName=WorkflowAudit=WorkflowAuditDBTable,AnotherDBTable
The following is a sample configuration for an Azure SQL database version 12:
AuditMessaging.JDBCReceiver.DriverPath=/shared/customer-config/mssql-jdbc-12.2.0.jre11.jar
AuditMessaging.JDBCReceiver.DriverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver
AuditMessaging.JDBCReceiver.URL=jdbc:sqlserver://azuresql.privatelink.database.windows.net;data
baseName=AzureSQLDatabase
AuditMessaging.JDBCReceiver.UserName=sqluser
AuditMessaging.JDBCReceiver.Password=sqlpassword
AuditMessaging.JDBCReceiver.TableName=dbo.WorkflowAuditMessages,dbo.AuditFormatTest
Refer to the Prerequisites section in the Audit Message Framework topic for more information. A private endpoint connection, if
required, can be configured (by the SaaS team) via request. The SQL driver used in the configuration above is available for
download from this site: Microsoft SQL documentation.
AuditMessaging.CassandraReceiver.DataCenter Name of the data center you are connecting to. This is an optional setting. If not set, the
default value of 'datacenter1' will be used.
AuditMessaging.CassandraReceiver.URL URL, host name and port number, to allow access to the Cassandra database instance.
AuditMessaging.CassandraReceiver.UserName Name of user to use when accessing the Cassandra database instance.
AuditMessaging.CassandraReceiver.Password Password for user to use when accessing the Cassandra database instance
AuditMessaging.CassandraReceiver.TableName Comma-separated list of the names of database tables to insert audit messages into in the
Cassandra database instance.
Each table name can be preceded by a topic using the format 'myTopic =
myDatabaseTable.' If no topic is specified for the database table, the name of the database
table will be used as the topic. For example, a property set to:
Messages sent to a particular topic will be inserted into the corresponding database table.
Valid characters for topics and table names are the ASCII alphanumerics, '.', '_', and '-'.
More information on this configuration and how it is used with topics is provided in the
Audit Message Framework JavaScript Binds and Public JavaScript API Methods topic.
AuditMessaging.CassandraReceiver.KeySpaceName=test_keyspace
AuditMessaging.CassandraReceiver.URL=127.0.0.1:9042
AuditMessaging.CassandraReceiver.UserName=cassandra
AuditMessaging.CassandraReceiver.Password=cassandra
AuditMessaging.CassandraReceiver.TableName=Audit=AuditMessagesDBTable
The Admin Portal is accessed by clicking the System Administration link on your Start Page. For more information on the Admin Portal,
refer to the Administration Portal documentation.
Two JavaScript binds are used to enable the business rules used to send messages within the Audit Message Framework—Audit Mes-
sage Home and Audit Message Topic. These binds are located within the Audit category for 'Execute JavaScript' business actions.
These binds provide access to several JavaScript API methods, which are described in the below table:
Audit Message getTopicByID Gets the Audit Message Topic ID that the receiver plugin will subscribe to. Returns null if there are no Audit
Home Message Receiver plugins registered to receive this Audit Message Topic.
Audit Message sendMessage Sends an audit message to an Audit Message Topic synchronously. If any errors occur with the send, a
Topic RuntimeException will be thrown.
Note: As the message will be sent synchronously, it will wait for the message to be sent to the message
queue successfully before returning the success code.
sendMessageAsync Sends an audit message to an Audit Message Topic asynchronously. If any errors occur with the message
send, error information will be written to the step.0.log, but the message will be lost.
Note: This is the recommended call, which helps minimize the performance impact on the callers of the
interface.
When used with the out-of-the-box Audit Message Receiver plugins, a topic is a message queue that corresponds to a table in the receiv-
ing JDBC-compliant or Cassandra database into which user-specified audit message(s) / analytics data will be written.
Note: Messages can be written to different tables within a single database when using the out-of-the-box Audit Message Receiver
Delivery Plugins. Functionality is not supported to write messages to multiple databases of the same kind.
An Audit Message Receiver plugin can define multiple topics that it is interested in, and multiple Audit Message Receiver plugins can
define the same topic if they so choose. Messages for a particular topic will be delivered to all plugins that subscribe to that topic.
When configuring business rules for the Audit Message Framework, the sendMessage and sendMessageAsync methods are available
by binding directly to a particular topic. Topics are selected from the Parameters dropdown list of the Audit Message Topic bind.
When using the Audit Message Receiver JDBC Delivery Plugin, to add topics to the Parameters dropdown, they must be specified in the
sharedconfig.properties file in the AuditMessaging.JDBCReceiver.TableName property. When using the Audit Message Receiver Cas-
sandra Delivery Plugin, the AuditMessaging.CassandraReceiver.TableName property must be used.
Note: The application server must be restarted to implement any change to the TableName property.
Refer to the Audit Message Framework Configuration Properties and Monitoring topic for more information on how to configure these
properties.
Once a connection has been made to a topic, a JSON structure object must be created, which maps JSON field values to database table
record values.
The functionality for both the Audit Message Receiver JDBC Delivery Plugin and the Audit Message Receiver Cassandra Delivery Plugin
are the same. The following screenshot shows an example message for the Audit Message Receiver JDBC Delivery Plugin receiver:
This business action, Workflow Audit Action (ID = AuditMessaging.WorkflowAuditAction), will automatically be created within your
STEP system when the add-on component associated with the Analytics commercial license is installed.
The topic is configured via the AuditMessaging.JDBCReceiver.TableName setting to map to the table called AUDIT_MESSAGES2.
Note: The application server must be restarted to implement any change to the TableName property.
This external database table is shown in the screenshot below, which shows the view of a database query in a third-party SQL client. For
information about this configuration, refer to the Audit Message Framework Configuration Properties and Monitoring topic.
For additional information about mapping JSON field names to database column names in AMF, refer to the Audit Message Framework
Database Data Type Mapping topic.
The following type conversions are supported for JDBC database mapping:
Database Mapping
Field Type
BIGINT Field value can be a String, Integer, or Long. If a String, it is assumed to be a Long number value.
BIT Field value can be a String or a Boolean. If a Boolean, the field is set to 1 (true) or 0 (false). If a String, it is assumed to be either the text
'true' or the text 'false.'
BOOLEAN Field value can be a String or a Boolean. If a String, it is assumed to be either the text 'true' or the text 'false.'
DATE Field value can be a String and is assumed to adhere to the date format standard ISO_DATE.
DECIMAL Field value can be a String or a Double. If a String, it is assumed to be a Double number value.
DOUBLE Field value can be a String or a Double. If a String, it is assumed to be a Double number value.
FLOAT Field value can be a String or a Float. If a String, it is assumed to be a Float number value.
INTEGER Field value can be a String or an Integer. If a String, it is assumed to be an Integer number value.
REAL Field value can be a String or a Double. If a String, it is assumed to be a Double number value.
TIME Field value can be a String, Integer, or Long. If an Integer or Long, it is assumed to be the number of milliseconds since January 1, 1970. If a
String, it is assumed to adhere to the date format standard ISO_DATE_TIME.
TIMESTAMP Field value can be a String, Integer, or Long. If an Integer or a Long, it is assumed to be the number of milliseconds since the January 1,
1970. If a String, it is first assumed to be a Long value representing the number of seconds since January 1, 1970. If not, then it is assumed
to be a date String adhering to the date format standard ISO_LOCAL_DATE_FORMAT.
BIGINT Field value can be a String, Integer, or Long. If a String, it is assumed to be a Long number value.
BOOLEAN Field value can be a String or a Boolean. If a String, it is assumed to be either the text 'true' or the text 'false.'
DATE Field value must be a String, which is assumed to follow the ISO_DATE format.
DECIMAL Field value can be a String or a Double. If a String, it is assumed to be a Double number value.
DOUBLE Field value can be a String or a Double. If a String, it is assumed to be a Double number value.
FLOAT Field value can be a String, Double, or Float. If a String, it is assumed to be a Float number value.
INT Field value can be a String or an Integer. If a String, it is assumed to be an Integer value.
TIME Field value can be a String, Integer, or Long. If a String, it is assumed to be a time in HH:mm:ss format. If a number, then it is assumed to
be the number of milliseconds since midnight.
TIMESTAMP Field value can be a String, Integer, or Long. If a String, then it is assumed to be a Long. The value is the number of milliseconds since
January 1, 1970.
TINYINT Field value can be a String, Boolean, or Integer. If a Boolean, the field is either set to 1 (true) or 0 (false). If a String, it is assumed to be
either the text 'true' or the text 'false.'
VARINT Field value can be a String, Integer, or Long. If a String, then it is assumed to be a BigInteger value.
To support UPSERT, an '_ID' field (for non-Oracle databases) or 'MD_ID' (for Oracle databases) must be added to the JSON message
that is sent from STEP to downstream systems. To enable the field, the corresponding table in the users' external database must also
have an _ID / MD_ID column defined. When processing an audit message, the external database table will be checked for a record with
the same _ID /MD_ID field value as the new audit message. If a match is found, the record is updated; otherwise a new record is created.
As an example, the field in the outgoing message that contains the '_ID' key could be set to be a combination of the nodeID and work-
flowID:
var auditObject = {
"_ID": "" + nodeID + "_" + workflowID,
...
}
Note: As indicated above, the update column is called MD_ID for an ORACLE database and _ID for a non-ORACLE database. The _
ID / MD_ID column must also be indexed in the external database to make it searchable, since the system searches existing records
before making the decision to insert a new record or overwrite an existing one. Once a record is overwritten, the log timestamp can
be used to determine if the record is old or new.
Below is an example output of audit messages sent to an external Oracle database table. Multiple target tables are supported. Mapping
from the database tables within STEP to the external database is performed by JSON object Key:Value mapping to these database table
columns.
Note: The JSON message format is required for both the Audit Message Receiver JDBC Delivery plugin and Audit Message
Receiver Cassandra Delivery plugin. A custom plugin could handle messages in an entirely different format if desired (e.g., a comma
separated list).
The topics in this documentation section provide configuration instructions and sample JavaScript code for auditing workflows both at the
workflow-wide level and at the individual transition level:
The Auditing an Entire Workflow topic provides information about the default 'Workflow Audit Action' business action that is automatically created in
STEP when the Audit Message Framework component is activated on your system.
The Auditing by Workflow Transition topic provides two sample audit message business actions that can be used to audit individual workflow transitions.
One example captures information about a workflow business condition failure, and the second captures a workflow state 'on entry' audit message.
When the Audit Message Framework component is activated on your system, an audit message business action, Workflow Audit Action
(ID = AuditMessaging.WorkflowAuditAction), is created in System Setup under the 'Global Business Rules' folder in the 'Workflow Audit-
ing' subfolder. This business action contains JavaScript code that can be used to enable analytics for any workflow out of the box.
Note: If a business action with the ID 'AuditMessaging.WorkflowAuditAction' already exists on your system, the action will not be
moved to the 'Workflow Auditing' subfolder upon installation of the Audit Message Framework. The action will be kept where it is.
1. Navigate to the relevant workflow in System Setup, then right-click and select Edit Workflow.
2. In the STEP Workflow Designer, click Edit > Edit Audit Action.
this example, the out-of-the-box 'Workflow Audit Action' business action is shown.
If all three Proceed transitions are evaluated to be rejected, the Workflow Audit Action will run once and will include information that the
transition evaluation was rejected, along with the rejection messages from all three Proceed transitions.
If one of the Proceed transitions is evaluated to be accepted, the Workflow Audit Action will run once and will include information that the
transition evaluation was successful.
Important: The Workflow Audit Action should never be used to attempt to make changes to data. Any changes made data in the
Workflow Audit Action are rolled back if the evaluated transition is rejected. Audit Messages are sent whether the transition is rejec-
ted or not.
For a full JavaScript code example, refer to the online version of this topic.
The Audit Message Topic bind can be used to send messages like the two following examples, each of which creates a JSON message
object and uses the bind's API sendMessageAsync method. The JSON message is received and handled by the plugin associated with
a specific topic; in this case, the out-of-the-box Audit Message Receiver JDBC database delivery plugin.
Note: The sample business actions in this topic are not automatically created in your system upon activation of the Audit Message
Framework component. Additionally, the provided JavaScript may need alterations to conform to your specific business require-
ments.
if (attributeValue) {
One common approach to configuring data analytics dashboards is to enable display of historical data. As an example, a user has con-
figured a Tableau dashboard to display regional sales data for a specific product. For this user, displaying sales figures for that same
product a year ago, or two years ago, would greatly enhance the utility of the dashboard. The way to enable display of historical data
using the JDBC method of delivering data is done in the mapping step of the Export Manager and outbound integration endpoint (OIEP).
These steps are described in detail in the Exporting Data via JDBC with CSV Format topic in the Data Exchange documentation.
The following steps, which are described in detail in the text below, are specific to this use case:
Map Data to include the required action field and calculated attribute for date / time
Map Data
With this example, data will be published to a table ('stepdata') that has the following layout:
The table has the potential to contain multiple rows representing the same object, and the 'datetime' column will hold information about
the latest STEP revision date. This can be achieved with a calculated attribute, mapped in the export configuration as described below.
For more information on calculated attributes, refer to the Calculated Attributes topic in the System Setup documentation.
Below is an example of an 'upsert' action in the Map Data step for the external database table shown above. This setup will direct the pro-
cess to look for four configured attributes (ID, DATETIME, EAN, and Consumer Short Description) in the destination database table, and
either insert the object (if not found), or update the object (if found):
Create an additional mapped column with the header of 'action' and the appropriate value of either delete or upsert. Use the
transformation button to change the text displayed for both the Header and the Value.
Create a calculated attribute using the function 'revisioneditdate()' and make it valid for your exported products. Then map the
calculated attribute for export and update the header to match the column in the external table. Details on the 'revisioneditdate()'
function are included in the Other Functions topic in the Resource Materials online help documentation.
The example above uses the 'datetime' header, which is mapped to the 'Last Edited' calculated attribute. In addition to the other
steps required to enact the JDBC method, the 'Include Calculated Attribute Values' parameter on the 'Advanced' step (shown below)
must be checked.