125 views

Workflow Binding (wf_workflow_binding) prevents workflow from triggering

Workflow Binding


How it works:

Workflow Binding (wf_workflow_binding) was introduced starting in Jakarta. It's main purpose is to prevent the same workflow from being triggered on a given record after the workflow context has been removed by the table cleaner.

When a record is created and a workflow context is attached to that record, an associated wf_workflow_binding record gets created. 

By default, the table cleaner on wf_context table removes workflow contexts after 180 days it has been completed. When the workflow engine is called to check whether to start a workflow, it checks the wf_workflow_context table if the record is created less than 180 days. If the record is created more than 180 days, the workflow engine will check the wf_workflow_binding table. 

It is not recommended to change the 'age' of when the record is deleted in the table cleaner, as this number is hard-coded. For example, lowering the 'age' will cause workflows to restart once the previous context has been removed. 

 

Symptoms Seen: 

  • One example of an issue that may occur is that when a user expects a workflow to be retriggered after being deleted, the wf_workflow_binding will prevent that workflow from being triggered on that record. 
  • Approvals are not being regenerated when your implementation requires the re-triggering of the workflow after it has been deleted. 
  • You see old records with no workflow contexts attached to them.

 

Troubleshoot: 

  • Check the age of the affected record. Usually, older records would be affected since the table cleaner will remove workflow contexts that ended after 180 days.
  • See if the affected record still has a workflow context attach to it. 
  • Check the wf_workflow_binding table. Copy the sys_id of the affected record and search for it in the 'Related record' field in the wf_workflow_binding table to verify if a wf_workflow_binding record exists. 

 

Workaround:

  • If you are simply trying to re-trigger a workflow for a particular record that has an associated wf_workflow_binding record, you can delete the wf_workflow_binding record and try updating the record. (Workflow must match the conditions to run in order to trigger). 
  • If you have already developed an implementation where it is required for workflows to be re-triggered at any given time, you can create an on 'insert after' business rule that will query for the wf_workflow_binding record and have it deleted. 

 

Other Resources:

KB0677378 - Workflow context deletion doesn't clean up wf_workflow_binding records

Article Information

Last Updated:2018-03-29 08:43:07
Published:2018-03-20