The EcoVida.workflow module includes all the configuration files necessary to define a new workflow type. The following is the list of these files:

/atg/
    dynamo/
        messaging/
            MessagingManager.properties
            SqlJmsProvider.properties
            dmsRegistrationWorkflowGlobal.xml
            dynamoMessagingSystem.xml
        security/
            admin-accounts.xml
    registry/
        RegistrationWorkflows.properties
        WorkflowAgents.properties
        data/
            workflows/
                registration/
                    Registration.wdl
    workflow/
        registration/
            WorkflowConfiguration.properties
            WorkflowManager.properties
            WorkflowMessageSource.properties
            WorkflowSubjectAccess.properties
            WorkflowSubjectLookup.properties
            WorkflowTaskFormHandler.properties
            WorkflowTaskQuery.properties
            WorkflowView.properties
            process/
                WDLParser.properties
                WorkflowAgent.properties
                WorkflowClusterManager.properties
                WorkflowDefinitionRegistry.properties
                WorkflowProcessManager.properties
                WorkflowSubjectFinder.properties
                workflowProcessManager.xml
                configuration/
                    AddUserToCommunityConfiguration.properties
                    CreateAccountsConfiguration.properties
                    CreateCommunityConfiguration.properties
                    CreateOrganizationConfiguration.properties
                    DeleteResgistrationConfiguration.properties
                    EmailNotifyTaskActorsConfiguration.properties
                    SetHomeCommunityConfiguration.properties
    userprofiling/
        userprofile.xml
    ecovida/
        commerce/
            b2b/
                profile/
                    CompanyRegistrationFormHandler.properties

You can use the registration workflow configuration files as a template for creating your own workflow types. Most of the properties configured by these files are the same for all workflow types. The properties you may need to modify are discussed below.

/atg/dynamo/messaging/

The MessagingManager.properties file adds the workflow process manager for the registration workflow type to the fileCombiners property:

filecombiners+=/atg/workflow/registration/process/WorkflowProcessManager

The SqlJmsProvider.properties file adds the SQL JMS topics and queues used by the registration workflow type to the requiredTopicNames and requiredQueueNames properties:

requiredTopicNames+=\
   sqldms/RegistrationWorkflowTopic/WorkflowUpdateEvents,\
   sqldms/RegistrationWorkflowTopic/WorkflowMigrationUpdateEvents
requiredQueueNames+=\
   sqldms/RegistrationWorkflowQueue/IndividualTimerEvents,\
   sqldms/RegistrationWorkflowQueue/CollectiveTimerEvents,\
   sqldms/RegistrationWorkflowQueue/BatchTimerEvents

The XML files in /atg/dynamo/messaging/ are the Patch Bay configuration files necessary for hooking up the WorkflowProcessManager and WorkflowMessageSource components as message sources and sinks. The standard Patch Bay configuration file, dynamoMessagingSystem.xml, is used on all process servers. The other Patch Bay configuration file is used on global process servers only, and is XML-combined with the standard configuration file on startup. For the registration workflow type, this file is named dmsRegistrationWorkflowGlobal.xml.

/atg/dynamo/security/

The admin-accounts.xml file specifies security privilege information for the ACC task that is used for editing workflows.

/atg/registry/

RegistrationWorkflows.properties creates a component of class atg.service.registry.SimpleRegistry that sets the root path for storing registry files for the workflow type:

configurationRootPath=/atg/registry/data/workflows/registration

The WorkflowAgents component is the registry (used by the ACC) of all workflow agents. You add the agent components of your custom workflow types to the workflowAgentPaths property of this component. (By default, this list is empty.) The WorkflowAgent.properties file includes this line:

workflowAgentPaths+=/atg/workflow/registration/process/WorkflowAgent
/atg/registry/data/workflows/registration/

The Registration.wdl file stores information used by the ACC. It is created automatically by the ACC.

/atg/workflow/registration/

The /atg/workflow/registration/ components include the WorkflowManager itself and the associated helper components.

The WorkflowConfiguration component has a number of properties that other components make reference to. The WorkflowConfiguration.properties file includes:

subjectRepository=/atg/userprofiling/ProfileAdapterRepository
subjectType=company-registration-request
processRegistry=/atg/registry/RegistrationWorkflows
workflowViewPath=/atg/workflow/registration/WorkflowView
processManagerConfigurationFile=
   /atg/workflow/registration/process/workflowProcessManager.xml
dmsGlobalConfigurationFile=
   /atg/dynamo/messaging/dmsRegistrationWorkflowGlobal.xml

WorkflowMessageSource is a message source that fires all workflow-related JMS messages for registration workflows.

The WorkflowSubjectAccess component provides access to the workflow’s task information data. The component is configured to point to the workflow subject type and the repository it is stored in:

subjectRepository^=WorkflowConfiguration.subjectRepository
subjectType^=WorkflowConfiguration.subjectType

The WorkflowView component implements the atg.workflow.WorkflowView interface described in the Workflow Classes section; it provides session-scoped access to workflow features. This component is optional, as it is also possible to create workflow views programmatically using the WorkflowManager API, but it provides a convenient way to access workflow information from the point of view of the current user.

The WorkflowTaskQuery and WorkflowSubjectLookup servlet beans, and the request-scoped WorkflowTaskFormHandler, are optional as well; they can be used to construct custom workflow UIs. The registration approval gear uses the WorkflowTaskQueryDroplet to display active tasks accessible to the current user. It then uses the WorkflowTaskFormHandler to operate on these tasks: claim and release tasks, and fire outcomes. All of this is done in JSPs, with no need for the direct use of the workflow API, or custom code. See the Workflow Servlet Beans and Workflow Task Form Handler sections for more information about these components.

/atg/workflow/registration/process/

The /atg/workflow/registration/process/ components include the WorkflowProcessManager and the associated helper components.

The WorkflowAgent component is configured to point to the registry component for the workflow type:

processRegistry=/atg/registry/RegistrationWorkflows

The process manager XML configuration file, workflowProcessManager.xml, defines all of the standard workflow events and actions, plus the custom actions specific to registration workflows. It also contains configuration information for customizing the registration workflow editor in the ACC.

/atg/workflow/registration/process/configuration/

The /atg/workflow/registration/process/configuration/ components configure the emailNotifyTaskActors and deleteRegistration standard workflow actions, plus the custom actions createAccounts, createOrganization, createCommunityFromTemplate, addUserToCommunity, and setHomeCommunity. Note that you can find the source code for these custom actions, along with other Java source files, in the src/ subdirectory of the Ecovida.workflow module.

/atg/userprofiling/

The registration repository item types are part of the user profile repository, and are therefore defined in the file /atg/userprofiling/userProfile.xml. (Other workflow types may use other repositories.) This file is XML-combined with the other user profile configuration files, and defines all the necessary workflow-related item types. In addition, it defines two new properties for the company-registration-request item type: workflowInstances (pointing to a set of individual workflow instances), and workflowTaskInfos (pointing to a set of WorkflowTaskInfo items). A third property, id, is also required for workflows, but is not defined in this file because the company-registration-request item type already has an id property. All these properties must be defined for a subject type in order for the workflow and process engines to function correctly.

In addition to the process-related item descriptors, the workflow repository schema also defines several additional item types that are required for all workflow types. One of these is the workflowTaskInfo item descriptor, whose purpose is to store workflow task-related information on a per-subject basis. The intent is for generalized workflow subjects to have a workflowTaskInfos property pointing to a set of workflowTaskInfo items. The other item types are as follows:

individualWorkflow
collectiveWorkflow
workflowInfo
workflowMigrationInfo
collectiveWorkflowTransition
individualWorkflowTransition
workflowDeletion
workflowMigration
workflowServerId

For information about the properties of these item types, see the /atg/userprofiling/userProfile.xml file in the Ecovida.workflow module.

The names for these item types are specified by the WorkflowProcessManager component. If you want to use different names in your repository, you must change the corresponding properties of that component.

As mentioned above, each workflow type must have its own set of database tables. The script for creating the tables for the registration workflow is <ATG9dir>/EcoVida/sql/db_components/<database-vendor>/registration_workflow_ddl.sql.

/atg/ecovida/commerce/b2b/profile/

The CompanyRegistrationFormHandler.properties file creates a component of class atg.ecovida.commerce.b2b.profile.CompanyRegistrationFormHandler. This class contains the code that initiates the workflow and performs dynamic routing of the channel review task by region. This code is executed after the registration request item has been created, in the form handler’s postCreateItem method. It demonstrates how the workflow API can be used both to start the workflow and to affect its tasks.

 
loading table of contents...