There are two types of workflow tasks that can be added to the system: custom workflow functions and full-blown workflow tasks. The difference is the configuration screen. A custom function is just a set of instructions and code that do not need any configuration options, it's task is clearly defined and it just needs to be launched on the given event. For example, a routine that relates the products and services of an invoice with the account of the invoice is a custom function. This custom function does not need anything more than what it receives to get its work done, but it could get a little complicated and we could require an option to indicate if we want to have only products and not services related or the reverse, or both. Now that we need to know which elements to relate the custom function needs a configuration screen and must be converted into a workflow task with configuration screen.
Here we explain how to create the first type of workflows, for the second type go here.
A workflow method or custom function needs a name to show in the configuration section, a class that will extend VTTask and does the work, and it will be associated to certain modules and not to others. Finally, it may be active or not depending on a certain module is installed or not.
Add new task definition to the application. This is done by inserting a record with the details in the com_vtiger_workflowtasks_entitymethod table.
coreBOS has a helper method that can insert this record for you: VTEntityMethodManager::addEntityMethod(), an example call would be like this:
<?php
// Turn on debugging level
$Vtiger_Utils_Log = true;
require_once 'include/utils/utils.php';
include_once('vtlib/Vtiger/Module.php');
require 'modules/com_vtiger_workflow/VTEntityMethodManager.inc';
global $adb;
$emm = new VTEntityMethodManager($adb);
$emm->addEntityMethod("Accounts", "Update Contact Assigned To", "include/wfMethods/updateContactAssignedTo.php", "updateContactAssignedTo");
echo 'add Workflow Custom Function complete!';
?>