Creating and Modifying Dimensions and Measures in Omni Designer

Topics:

How to:

This section describes how dimensions and measures are created and maintained in Omni Designer. For more information, see the Omni Designer User Guide.

Using the Dqconfig.xml File

The dqconfig.xml file is created when the bundle is deployed to Omni-Gen. It reflects the structure of dimensions, measures, and rules defined in Omni Designer.

The original location of the file can be found in:

…/omnigen/OmniServer/bundle/artifacts/server/index/dqconfig.xml

Important: Do not edit this file. It is used for familiarization purposes only.

The following syntax shows a sample dqconfig.xml file.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<dqconfig>
    <dimensions>
        <dimension>
            <properties>
                <name>Validity</name>
                <default>false</default>
            </properties>
            <model name="Customer">
                <subject name="Customer">
                    <subject name="Address">
                        <subject name="level3">
                            <subject name="level4">
                                <source>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </source>
                                <instance>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </instance>
                            </subject>
                            <source>
                                <logic/>
                                <business/>
                                <rules/>
                            </source>
                            <instance>
                                <logic/>
                                <business/>
                                <rules/>
                            </instance>
                        </subject>
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
                        <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                   <subject name="Phone">
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
                        <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                    <source>
                        <logic>
                            <and>
                                <and rule="DOB_Not_Empty"/>
                                <and rule="Name_Not_Empty"/>
                            </and>
                        </logic>
                        <business>
                            <impact measure="ProductionCapacity">1.0</impact>
                            <impact measure="Revenue">11.0</impact>
                        </business>
                        <rules>
                            <rule id="DOB_Not_Empty">false;</rule>
                            <rule id="Name_Not_Empty">false;</rule>
                        </rules>
                    </source>
                    <instance>
                        <logic>
                            <and rule="first_name"/>
                        </logic>
                        <business>
                            <impact measure="ProductionCapacity">2.0</impact>
                        </business>
                        <rules>
                            <rule id="first_name">($.get('firstName') == '11')? true : false;</rule>
                            <rule id="ssn">($.get('ssn') != '11')? true : false;</rule>
                            <rule id="email">($.get('email') == 'NULL')? true : ($.get('email') == '')? true : false;</rule>
                        </rules>
                    </instance>
                </subject>
            </model>
            <model name="Person">
                <subject name="Person">
                    <source>
                        <logic/>
                        <business/>
                        <rules/>
                    </source>
                   <instance>
                        <logic>
                            <and rule="qqq"/>
                        </logic>
                        <business>
                            <impact measure="Revenue">1.0</impact>
                        </business>
                        <rules>
                            <rule id="qqq">($.get('string') == 'NULL')? false : false;</rule>
                        </rules>
                    </instance>
                </subject>
            </model>
        </dimension>
        <dimension>
            <properties>
                <name>Conformity</name>
                <default>false</default>
            </properties>
            <model name="Customer">
                <subject name="Customer">
                    <subject name="Address">
                        <subject name="level3">
                            <subject name="level4">
                                <source>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </source>
                                <instance>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </instance>
                            </subject>
                            <source>
                                <logic/>
                                <business/>
                                <rules/>
                            </source>
                            <instance>
                                <logic/>
                                <business/>
                                <rules/>
                            </instance>
                        </subject>
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
  				     <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                    <subject name="Phone">
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
                        <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                    <source>
                        <logic/>
                        <business/>
                        <rules/>
                    </source>
                    <instance>
                        <logic>
                            <and rule="ssn"/>
                        </logic>
                        <business>
                            <impact measure="Revenue">222.0</impact>
                        </business>
                        <rules>
                            <rule id="first_name">($.get('firstName') == '11')? true : false;</rule>
                            <rule id="ssn">($.get('ssn') != '11')? true : false;</rule>
                            <rule id="email">($.get('email') == 'NULL')? true : ($.get('email') == '')? true : false;</rule>
                        </rules>
                    </instance>
                </subject>
            </model>
            <model name="Person">
                <subject name="Person">
                    <source>
                        <logic>
                            <and rule="rule"/>
                        </logic>
                       <business>
                            <impact measure="Revenue">2.0</impact>
                            <impact measure="ProductionCapacity">3.0</impact>
                        </business>
                        <rules>
                            <rule id="rule">($.get('string') == 'NULL')? false : false;</rule>
                        </rules>
                    </source>
                    <instance>
                        <logic/>
                        <business/>
                        <rules/>
                    </instance>
                </subject>
            </model>
        </dimension>
        <dimension>
            <properties>
                <name>Completeness</name>
                <default>false</default>
            </properties>
            <model name="Customer">
                <subject name="Customer">
                    <subject name="Address">
                        <subject name="level3">
                            <subject name="level4">
                                <source>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </source>
                                <instance>
                                    <logic/>
                                    <business/>
                                    <rules/>
                                </instance>
                            </subject>
                            <source>
                                <logic/>
                                <business/>
                                <rules/>
                            </source>
                            <instance>
                                <logic/>
                                <business/>
                                <rules/>
                            </instance>
                        </subject>
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
                        <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                    <subject name="Phone">
                        <source>
                            <logic/>
                            <business/>
                            <rules/>
                        </source>
                        <instance>
                            <logic/>
                            <business/>
                            <rules/>
                        </instance>
                    </subject>
                    <source>
                        <logic/>
                        <business/>
                        <rules/>
                    </source>
                    <instance>
                        <logic>
                            <and rule="email"/>
                        </logic>
                        <business>
                            <impact measure="Revenue">2.0</impact>
                            <impact measure="ProductionCapacity">2222.0</impact>
                        </business>
                        <rules>
                            <rule id="first_name">($.get('firstName') == '11')? true : false;</rule>
                            <rule id="ssn">($.get('ssn') != '11')? true : false;</rule>
                            <rule id="email">($.get('email') == 'NULL')? true : ($.get('email') == '')? true : false;</rule>
                        </rules>
                    </instance>
                </subject>
            </model>
            <model name="Person">
                <subject name="Person">
                    <source>
                        <logic/>
                        <business/>
                        <rules/>
                    </source>
                    <instance>
                        <logic/>
                        <business/>
                        <rules/>
                    </instance>
                </subject>
            </model>
        </dimension>
    </dimensions>
    <measures>
        <measure id="Revenue" units="UAH"/>
        <measure id="ProductionCapacity" units="something"/>
    </measures>
</dqconfig>

Procedure: How to Add and Edit Dimensions and Measures in Omni Designer

For each dimension, there is a rule that defines which records should be defined as good, which is defined for each domain and sub-domain available in the system.

Important: There might be situations when you do not see some or all of the dimensions. This is usually due to the fact that those dimensions simply have not been added to the WSO2 component-access-dimensions-policy. You should check the policy, add any new dimensions as required, publish it, and log back in to the application.

Procedure: How to Add and Edit Measures

Measures and their units are defined in the measures section, as shown in the following image.

Measures are calculated based on defined coefficients for each domain and dimension.

  1. Define the coefficients of the measures for each domain and dimension, as shown in the following image.

    The formula for calculating the measure value is:

    • If the measure is only used by one dimension: a × b

      where:

      a
      Is the number of bad dimension records
      b
      Is the measure coefficient
    • If the measure is used by many dimensions:

    (a × c) + (b × c) = d

    where:

    a
    Is the number of bad dimension 1 records.
    b
    Is the number of bad dimension 2 records.
    c
    Is the measure coefficient.
    d
    Is the measure value.

    The formula is the same for all dimensions.

    Note: Measures are defined for each domain separately.

    Important: There might be situations when you do not see some or all of the measures. This is usually due to the fact that those measures simply have not been added to the WSO2 component-access-measures-policy. You should check the policy, add any new measures as required, publish it, and log back in to the application.