Difference between revisions of "Workflow Condition Examples"

From SmartWiki
Jump to: navigation, search
(Examples of Correct Configuration)
 
Line 1: Line 1:
There are two rules that must be followed when adding multiple connectors to a workflow task that incorporate conditional logic statements:
+
#REDIRECT [[Workflows_Overview#Workflow_Condition_Examples]]
# Collectively, the conditions on each task must accommodate every possible permutation.
 
# Each condition must be mutually exclusive from every other.
 
 
 
Let's discuss each of these rules.
 
 
 
==Rule #1: Collectively, the conditions on each task must accommodate every possible permutation.==
 
 
 
===Example of Incorrect Configuration===
 
* Three [[types]] exist in a given [[UTA|application]], with [[Determining the typeid|typeIDs]] of 12345, 45678 and 67890.
 
* Two connectors are set up on a workflow task with conditions of:
 
:* ''"@typeid@"="12345"'' and
 
:* ''"@typeid@"="45678"'', respectively
 
* If the workflow is fired against a record associated with typeID 67890, the workflow will never progress to the next task.
 
 
 
===Example of Correct Configuration===
 
* As above, three [[types]] exist in a given [[UTA|application]], with [[Determining the typeid|typeIDs]] of 12345, 45678 and 67890.
 
* Three connectors are set up on a workflow task with conditions of:
 
:* ''"@typeid@"="12345"'',
 
:* ''"@typeid@"="45678"'' and
 
:* ''"@typeid@"="67890"'', respectively
 
<!--* '''Alternatively''', connectors with the following conditions could be set up:
 
:* ''"@typeid@"="12345"''
 
:* ''"@typeid@"!="12345"'' (not equal to "12345"), and
 
:* ''"@typeid@" NOT IN ("12345","45678")'', respectively-->
 
 
 
* In all cases, when using logical conditions on connectors, the conditions must encompass all possible logical scenarios.
 
 
 
==Rule #2: Each condition must be mutually exclusive from every other.==
 
 
 
===Example of Incorrect Configuration===
 
* Three [[types]] exist in a given [[UTA|application]], with [[Determining the typeid|typeIDs]] of 12345, 45678 and 67890.
 
* Two [[status]]es exist in the same application, with [[Determining the statusid|statusIDs]] of 888 and 999.
 
* The system administrator wishes to send emails via workflow if the record is in one of the above statuses. One email should be sent out if the type is 12345 or 45678 and a different email should be sent out if a different type has been used.
 
* Two connectors are set up on a workflow task with conditions of:
 
:* ''"@typeid@" in ("12345","45678") AND "@statusid@" in ("888","999")'' and
 
:* ''"@statusid@" in ("888","999")''
 
* The issue here is that both statements [[Boolean Operators|evaluate]] as '''true''' if the statuses on the record triggering the workflow have a statusID of 888 or 999.
 
* The workflow process will not "know" which task to connect to. The workflow will progress, but not necessarily to the next intended workflow task. In other words, the wrong email may be sent.
 
 
 
===Example of Correct Configuration===
 
* The types and statuses exist as above, and the system administrator wishes to configure the same branching logic.
 
* Two connectors should be set up on a workflow task with the following conditions:
 
:* ''"@typeid@" in ("12345","45678") AND "@statusid@" in ("888","999")'' and
 
:* ''"@typeid@" not in ("12345","45678") AND "@statusid@" in ("888","999")''
 
* This configuration satisfies Rule #2, in that the conditions are now mutually exclusive.
 
* '''HOWEVER''', a third connector must be included, with the following condition, which connects to the "Complete" task, in order to satisfy Rule #1 above:
 
:* ''"@statusid@" not in ("888","999")''
 
 
 
* With these three connectors configured, the workflow will:
 
:* never not have instructions on ''whether'' to trigger the next workflow task (Rule #1), and
 
:* always have clear instructions on ''which'' task to trigger given a certain set of conditions (Rule #2).
 
 
 
=See Also=
 
* [[Workflow Condition]]
 
* [[Workflow Connector]]
 
* [[Completing an Acknowledgment Workflow]]
 
* [[Recurring Workflow]]
 
 
 
[[Category:Workflows]]
 

Latest revision as of 14:13, 20 July 2017