Missing Data

Written by

in

Description

The Data Object is specified for the Process Element but the Data Object source does not exist.

Context

Derived from: “Missing Data” BPM anti-pattern.

Cause

Lack of architecture enforcement. Sometimes, those who generate specifications and requirements don’t necessarily have real experience with those EA systems. Creating a simple element is so much easier than making a whole new extended component, right?

Consequences

Element can not be continued, due to missing data.

Solution

If the component has a single responsibility, try to better model it as part of an existing component. Frequently, components designed as helper elements to another components are better off being combined into the base component they assist. Attempt to logically combine several elements into a new component that satisfies a design objective with a broader domain concept than the previous fine-grained ones.

Example

The “Business Process k” accesses the data source to retrieve the data x, but the data is deleted several steps earlier by “Business Process i.”

Cypher query

MATCH (startNode:BusinessProcess) where any (x in keys(startNode) where x in [$delete]) <br /> WITH  startNode <br /> MATCH (endNode:BusinessProcess) <br /> WHERE ANY ( x in keys(endNode) where x in [$read]) and startNode[$delete] = endNode[$read] WITH startNode, endNode<br /> WITH startNode, endNode <br /> CALL apoc.path.expandConfig(startNode,{relationshipFilter:"TriggeringRelationship>|FlowRelationship>|AssociationRelationship>", <br /> minLevel: $minLevel, <br /> maxLevel: $maxLevel,  <br /> terminatorNodes:[endNode] <br /> }) <br /> YIELD path AS p <br />  RETURN p

Cypher count query

MATCH (startNode:BusinessProcess) where any (x in keys(startNode) where x in [$delete]) <br /> WITH  startNode <br /> MATCH (endNode:BusinessProcess) <br /> WHERE ANY ( x in keys(endNode) where x in [$read]) and startNode[$delete] = endNode[$read] WITH startNode, endNode<br /> WITH startNode, endNode <br /> CALL apoc.path.expandConfig(startNode,{relationshipFilter:"TriggeringRelationship>|FlowRelationship>|AssociationRelationship>", <br /> minLevel: $minLevel, <br /> maxLevel: $maxLevel,  <br /> terminatorNodes:[endNode] <br /> }) <br /> YIELD path AS p <br />  RETURN COUNT (DISTINCT startNode)

Diagram

Diagram for Missing Data

Aliases

Decomposition

Tags

Data-flow related defects, Process

Query parameters

[
    {
        "name": "delete",
        "type": "string",
        "default": "delete",
        "description": "Property that specifies the deletion of certain data."
    },
    {
        "name": "read",
        "type": "string",
        "default": "read",
        "description": "Property that specifies the retrieval of certain data."
    },
    {
        "name": "minLevel",
        "type": "number",
        "default": 2,
        "description": "The minimum length of the path for detection."
    },
    {
        "name": "maxLevel",
        "type": "number",
        "default": 5,
        "description": "The maximum length of the path for detection."
    }
]

All smells