Skip to content

DataObject Plugin

LeonBein edited this page Nov 29, 2019 · 1 revision

XML Tag Name

dataObject or dataInput

Short description

This plugin supports BPMN data objects. A data object can consist of several data fields. Each data field can be of a different type (i.e., long, double, string, or boolean). The distribution of its values can be described by a binomialDistribution, constantDistribution, discreteProbabilityDistribution, discreteStringProbabilityDistribution, erlangDistribution, exponentialDistribution, triangularDistribution, normalDistribution, poissonDistribution, or uniformDistribution. If a BPMN task or BPMN event writes a data object, then values for each of its data fields are generated by the plug-in. If you want to have several updates on one data artefact during the process, please use different BPMN data objects with the same name, but in different states.

Dependencies to other plugins

None

Collaborations

If the ExclusiveGatewayPlugin is active, gateways can branch dependendent on the values of fields of dataObjects. If the XES-Logger is active, the dataObjects will be logged in there.

Detailed description

Each BPMN data object can be either read or written by BPMN tasks or events. Furthermore, each task or event can simulate several dataObjects at one time. DataObjects will just be simulated when tasks or events terminate. If a dataObject is simulated all fields of it will be simulated. A field will be simulated for every process instance. When a field gets simulated the first time, an entry will be made in de.hpi.bpt.scylla.plugin.dataobject.DataObjectField.dataObjectValues; if the field gets simulated again this value will be overwritten. The dataObjectValues is a singelton HashMap, which contains all values of all dataObjectFields of all process instances. Furthermore, whenever a dataObjectField is simulated, an entry (a dataObjectField containg the name, value and type) is made at the terminating task or event in the processNodeInfos. This important for logging the dataObjectField values ate ach time in the XES log file.

Example for dataObject in simulation file:

        <bsim:dataObject id="DO1" name="Discount">
            <bsim:field name="Type" type="long">
                <bsim:discreteProbabilityDistribution>
                    <bsim:entry value="25" frequency="0.8"></bsim:entry>
                    <bsim:entry value="50" frequency="0.2"></bsim:entry>
                </bsim:discreteProbabilityDistribution> 
            </bsim:field>
            <bsim:field name="Points" type="long">
                <bsim:normalDistribution>
                    <bsim:mean>950</bsim:mean>
                    <bsim:standardDeviation>200</bsim:standardDeviation>
                </bsim:normalDistribution>
            </bsim:field>
        </bsim:dataObject>

The belonging BPMN file has to contain:

    <dataObjectReference id="DO1" name="Discount" dataObjectRef="DORef1" />

(it may also contain a <dataObject/> entry, but that is not necessary)
The given example shows a dataObject with the name "Discount" and the identifier "DO1" (has to match with the DataObjectRefernce NOT the dataObject identifier! in the bpmn file). This dataObject contains two fields ("Type" and "Points") which will be simulated. These fields can be addressed using <dataObjectName.fileName>, which will be e.g. "Discount.Type".