We’ve talked about OnBase property bags before and how important scope can be to ensuring correct evaluation of values in workflow. Clearing and setting a property bag properly is just as critical, especially when you are checking it for null values.
Consider the following Workflow scenario. I have a business process that includes calling the customer to obtain information for application processing. Afterward, the application goes to a hold queue for 60 days before proceeding to the next step. In this example, the application is a WorkView object, so I need to use a property bag to do the calculations before updating the object attribute. This would be the wrong way to configure the task:
(Step one is remembering to check the Use Scoped Property Bag box throughout.)
Clear propHoldExpirationDate – uses the Set Property Value action set to a Constant value with nothing entered in the text field. This equates to null.
Set propHoldExpirationDate to Customer Call Date – uses the Set Property from Attribute action copies the Customer Call Date attribute value into the propHoldExpirationDate property bag.
Does propHoldExpirationDate Exist? – uses the Property Exists rule checks to see if propHoldExpirationDate has a value.
On the surface, it looks correct, yes? However, if the Customer Call Date attribute is blank, the Set Property from Attribute action will set the property to blank, which is NOT the same thing as null. In other words, even if there is no Customer Call Date, the rule will always evaluate as True and try to perform the actions under that condition. It will never perform the steps configured under the False condition. To avoid this trap, check to see if the attribute has a value before assigning it to the property bag:
Customer Call Date attribute exists? – uses the Check Attribute Value rule Against value Operator NOT NULL. In contrast to the Property Exists rule, the attribute rule is able to evaluate a blank value as a null. This ensures that the propHoldExpirationDate property bag remains null unless there is a valid Customer Call Date to assign.
Depending on what else you’re doing in your workflow, you may even be able to tighten up the steps further, such as: