Analytic Parts
‘Analytic Parts’ can be used to build dashboards and display any kind of analytic data from a business process. There are several part templates defined to display numbers, text, charts.
How to Integrate
A custom part is added to a form like all other part types. It has a key item and a label:
<imixs-form-section columns="3" label="Analytic Data"> <item name="tax_totals" type="custom" path="analyze_number" label="Tax:" /> <item name="order_requests" type="custom" path="analyze_chart" label="Orders:" /> </imixs-form-section>
To use one of the part templates you need first to implement a CDI bean that reacts on CDI Events from the type AnalyticEvent
. An AnalyticEvent
provides the following data fields:
Property | Type | Mandatory | Description |
---|---|---|---|
key | text | x | Name of the analytic data set |
value | text | x | A text value representing the data S |
label | text | Optional label for the data | |
description | text | Optional description | |
link | text | Optional link for detail views |
The value part can be any kind of data string. This could be a number a date or a complex JSON structure like it is used to display complex data in a chart diagram.
This is an example how your custom Analytic Controler can look like:
@Named @RequestScoped public class MyAnalyticController implements Serializable { private static final long serialVersionUID = 1L; @Inject protected DocumentService documentService; public void onEvent(@Observes AnalyticEvent event) { if ("tax_totals".equals(event.getKey())) { event.setValue(computeTaxdata()); event.setLabel("Tax"); event.setDescription("Some description"); } if ("order_requests".equals(event.getKey())) { event.setValue(computeOrderRequests()); event.setLabel("EUR"); event.setDescription("Overview orders over the last year"); event.getWorkitem().setItemValue("order.total", event.getValue()); } } }
In this example the Analytic controller reacts on two analytic data sets ‘tax_totals’ and ‘order_requests’. The collected data is cached in the workitem to avoid repeated complex computation of data.
The data fields are stored in an map-item with the given key. In the example e.g. ‘tax_totals’. The map contains the items ‘value’, ‘label’, ‘description’ which are used to display the information on a analytic part. An Analytic controller can of course add additional data to a workitem. In the example ‘order_requests’ we add a custom item named ‘order.total’ which will not become part of the analytic part to be displayed but maybe used in the further processing flow.