Workflow is a powerful tool to overlay client-specific business logic on top of baseline netFORUM objects (for example, Individual, Organization, or Membership) in a way that keeps a site on the upgrade path. As workflow is set up at the object level, it will be called in iWeb, eWeb, and xWeb.
Note: SQL back-end updates to a column do not trigger a workflow, as those updates are not tied to a baseline netFORUM object.
Workflow is made up of two concepts: a Workflow Rule and one or more Workflow Tasks linked to the Rule. A Rule is tied to a netFORUM Object and defines when the workflow will be triggered. A Rule will have one or more Tasks, which are actions that are executed when the Rule is invoked.
Important! In order to create or edit a Workflow, a user must have a Toolkit license.
The word workflow means different things to different people. In netFORUM, Workflow is not the same as a Wizard. Workflow doesn't walk you through a series of pages or processes. An end user will not "see" Workflow on a web page--what Workflow does is invisible and behind the scenes. Workflow tasks can be developed to create Tasks and send Emails that prompt users to do things, but Workflow will not automatically guide a user from one page to another page to another page.
Abila has altered all baseline facade objects to look for Workflow. Any custom Facade objects developed by clients or Abila implementation staff will require additional code in the Insert, Update and Delete methods to call
WorkFlowUtils.CheckRules()method if that Object is to execute Workflow.
In the Commit() and RollBack() section of the code in each of the Insert, Update and Delete methods of your custom Facade object, you need to call WorkFlowUtils.CheckRules() method with the appropriate enumerator as WorkflowUtils.Operation.Insert, WorkflowUtils.Operation.Update and WorkflowUtils.Operation.Delete.
Here is an example where we had added the additional code to call WorkFlowUtils.CheckRules() method in an object's HardDelete method. The additional code is surrounded by comments //Workflow Call
if (oEr.Number == 0){ //Workflow Call if (CurrentTransaction == null) { oTrx.Commit(); oTrx = null; } WorkflowUtils.CheckRules((FacadeClass)this, WorkflowUtils.Operation.Delete, oConn, oTrx); //Workflow Call this.ListNeedsRefresh = true;}else{if (CurrentTransaction == null)oTrx.Rollback();}if (CurrentConnection == null)oConn.Close();As noted above, the
WorkflowUtils.Operation.Deleteenumerator needs to be changed to
WorkflowUtils.Operation.Insertor
WorkflowUtils.Operation.Updatein the respective methods in the CheckRules method call.
If your workflow is not firing, consider the following questions:
namespace ZZZComponents{ class ZZZIndividual : Avectra.netForum.Components.CO.CO_Individual { public ZZZIndividual() { this.bExecuteInheritedWorkflow = true; }