Create a Business Process

Overview

This document goes through the main steps needed to implement a business process. It is a generic description, which is primarily meant for reference purposes.

You can find a tutorial showing how to implement a simple example business process here.

Create a ProcessEntryPoint

The ProcessEntryPoint is the function, which the framework will call when starting the process. Exactly one ProcessEntryPoint must be defined for each process.

As the abstract functions used by Websydian Express is set to implement No you will have to set the ProcessEntryPoint function to implement Yes.

Source Object Verb Target Object
MyProcessEntryPoint is a FNC WSYAPI/ProcessEntryPoint
MyProcessEntryPoint implement SYS Yes

In the edit point "Call to First PageGenerator" insert the call to the first page in the business process.

In some situations you will have a choice of different pages to show. This will often be dependent on information known by the session. The unique identification of the session is available in the local variable Session. You can call the API function GetBasicSessionData to fetch more information about the session and the site.

Create PageGenerators

All the PageGenerators used in the process must inherit from the abstract PageGeneratorForProcess.

We highly recommend that you do this by creating your own abstract PageGenerator function, which inherits from the PageGeneratorForProcess - and then let all of the PageGenerators you want to implement, inherit from this abstract function.

Source Object Verb Target Object
MyAbstractPageGenerator is a FNC WSYAPI/PageGeneratorForProcess

The PageGeneratorForProcess uses the generic ErrorPageForProcess to show errors to the end user. This error page should be replaced to make it possible for you to make your own customized error page. Even if you do not have this need right away - it is recommended that you create your own error page - and replace it on your own abstract PageGenerator function.

Source Object Verb Target Object
MyAbstractPageGenerator replaces FNC WSYAPI/ErrorPageForProcess
  ...by FNC MyErrorPageForProcess

After creating your abstract PageGenerator function you must let all of the PageGenerator functions, you wish to implement, inherit from this function.

As the abstract functions used by Websydian Express is set to implement No you will have to set the PageGenerator function and the scoped DocumentTemplateGenerator to implement Yes.

Source Object Verb Target Object
MyPageGenerator is a FNC MyAbstractPageGenerator
implement SYS Yes
MyPageGenerator.DocumentTemplateGenerator implement SYS Yes

Create EventHandlers

All EventHandlers used in the process must inherit from EventHandlerForProcess. We strongly recommend that you create an abstract EventHandler, which the implemented EventHandlers can inherit from.

Source Object Verb Target Object
MyAbstractEventHandler is a FNC WSYAPI/EventHandlerForProcess

After creating your abstract EventHandler function you must let all of the EventHandler functions, you wish to implement, inherit from this function.

As the abstract functions used by Websydian Express is set to implement No you will have to set the EventHandler function to implement Yes.

Source Object Verb Target Object
MyEventHandler is a FNC MyAbstractEventHandler
MyEventHandler implement SYS Yes

The EventHandlers are included on the relevant pages using includes or comprises triples - just as in "standard Websydian".

As in "standard Websydian", you must set the "shadow" EventHandlers scoped by the DocumentTemplateGenerator function, and their scoped IdentifyInputFields to implement No to avoid generating unnecessary objects.

An EventHandler inheriting from EventHandlerForProcess is automatically an EventHandlerWithValidation.

However in some situations you do not want to execute this validation. An option has been introduced controlling the validation. Set the option ValidationEnabled to No to stop the EventHandler from validating.

Generate and build functions

The PageGenerators, EventHandlers, DocumentTemplateGenerators, and the ProcessEntryPoint must be generated and built (together with any service functions needed for the functionality of the business process).

Create and deploy templates

Create the templates by running the DocumentTemplateGenerator functions.

Copy the templates to the appropriate physical folder. The physical folder has to be specified as a folder in Websydian Express. The folder has to be included in the folder list used by the test person.

For more information on how to deploy a business process please look in Move Process to Test Environment.

Specify the Process using the administration interface

To make it possible to call the process in Websydian Express you have to define it using the administration interface. The final definitions will most often be made by an administrator. But for test purposes the developer also need to be able to make the basic definitions.

The most common definitions needed are as follows:

  1. Create a business process and a presentation
  2. Insert Business Process into the Site Structure

1. Create a Business Process and a Presentation

Follow these steps in order to define a new Business Process:

  1. Select the menu item "Content loaders -> Business Processes" in the administration interface.
  2. Press "Insert" to create a new business process
  3. On the insert page enter the following information:
    • Name - a recognizable name for the business process.
    • Program name - the name of the ProcessEntryPoint function (name of the program object)
    • Description - a short description of the process (if nothing else is preferable - copy the Name)
    • Comment - optional comment about the business process.
  4. Create default presentation - leave this option checked.
  5. Press "Insert".

2. Insert Business Process into the site structure

 

Gather information for administrator

When handing over the newly created process to the administrator, there is an amount of vital information needed.

This information can be gathered as the process is being placed in the test environment (or even during development).