Validating Processes
Both Business Processes (.bpm
) and Technical Processes (.wrf
) can be checked for validity via an integrated process validator. The validation can be performed based on default rules as well as based on custom validation rules.
The process validation can be initiated via the following menus:
- Context menu Validate when right-clicking on processes within the X4 Repository
- Menu Project > Validate Project
There are three severity levels for the process validation:
Error
: Errors preventing the process executionWarning
: Errors that may cause the process to run incorrectlyInformation
: Information regarding the process' state
Checking Processes
To check processes for validity proceed as follows:
- Open the process validation dialog, e.g. via the menu Project > Validate Project.
- Select the processes to be validated.
- If required upload a configuration file for custom validation rules via Use custom config file and Browse, see section Custom validation rules.
Click Start to begin the validation.
The validation result will be opened in the Validation Report view.- By double-clicking on the process path the corresponding process will be opened.
- By double-clicking on a validation result the properties of the corresponding process component will be opened in the Properties view.
Default Validation Rules
The following validation rules are already defined by default:
Validation rule | Description | Severity |
---|---|---|
| Are all actions parameterized correctly? | Error |
| Are all branches of a Condition component filled? | Warning |
| Are all paths closed? | Error |
Custom Validation Rules
It is also possible to define custom validation rules. They must be provided as XSLT mapping with a pre-defined structure.
Mapping example for custom validation rules
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
<xsl:template match="/">
<xsl:param name="subprocessCount" select="count(Workflow/Actions/Action[Module/text() = 'iXworkflow'])"></xsl:param>
<xsl:param name="componentCount" select="count(Workflow/Actions/Action)"></xsl:param>
<xsl:param name="textCount" select="count(Workflow/Graphics/svg/text)"></xsl:param>
<step>
<xsl:choose>
<xsl:when test="$componentCount > 100">
<warn>The number of process components is <xsl:value-of select="$componentCount"></xsl:value-of>. Processes with more than 100 components may probably be unclear and error-prone. Please check, if you can outsource parts of the process as subprocesses.</warn>
</xsl:when>
<xsl:otherwise>
<info>The number of process components is <xsl:value-of select="$componentCount"></xsl:value-of>
</info>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$textCount > 0">
<xsl:if test="$componentCount div $textCount > 5">
<warn>The ratio of process components to text components is greater than 5:1. It is <xsl:value-of select="$componentCount div $textCount"></xsl:value-of>:1.</warn>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<info>The process doesn't contain any text components.</info>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$subprocessCount > 0">
<xsl:if test="( $componentCount - $subprocessCount ) div $subprocessCount > 10">
<warn>The ratio of process components to subprocesses is greater than 10:1. It is <xsl:value-of select="( $componentCount - $subprocessCount ) div $subprocessCount"></xsl:value-of>:1</warn>
</xsl:if>
</xsl:when>
<xsl:otherwise>
<info>The process doesn't contain any subprocesses.</info>
</xsl:otherwise>
</xsl:choose>
</step>
</xsl:template>
</xsl:stylesheet>
An XML configuration file with the following structure must be uploaded for the process validation. The mapping to be used is referenced here by means of its xstore
URL:
<?xml version="1.0" encoding="UTF-8"?>
<validationConfig>
<default active="true"/>
<custom_xslt active="true" name="processMetrics">
xstore://Projekt/Unterverzeichnis/customValidationMetrics.xsl
</custom_xslt>
</validationConfig>