Managing Process Pipelines

Process flows have traditionally been used as a design tool to help visually represent functional steps in a business process. Each piece of functionality is broken down into granular steps to create a visual diagram of a process.

Traditional object-oriented application design normally encapsulates business logic and process flow details in business logic components, such as .NET assemblies. These objects define the business logic and process flows for complex operations such as taking an order, creating a Persons record, or batching transactions to the General Ledger. If modifications to business logic or process are required at a later date, a programmer is normally needed to implement the changes.

The Aptify Process Pipeline infrastructure provides an organization with the ability to define and modify business logic and process flow through the use of an intuitive graphical user interface. All functionality within Aptify's business applications are delivered in the form of logical components, which are combined into process flows and associated with events throughout the application. The Aptify Process Pipeline architecture provides the ability to define extremely granular components that perform very specific actions. These components are then combined to form complete process flows. Administrators with knowledge of the system may make these process flow modifications through the use of a graphical user interface rather than by writing code.

By allowing non-programmers to modify business logic, the system becomes much more flexible and changes may be completed in a shorter amount of time when compared to traditional solutions where programming is required to make any changes. In addition, the reduced need for programming reduces the total cost of ownership of the software, resulting in significant savings to the organization over the life of the system.

This topic describes Aptify's Process Pipeline functionality. This includes how to create and configure Process Flows and how to configure Event Handlers to execute Process Flows.

This topic covers the following sub-topics:

Aptify's Application Server and Scheduled Tasks features also make extensive use of the Process Pipeline functionality. Aptify recommends that clients interested in using an Application Server and Scheduled Tasks become familiar with Process Flows first (by reviewing this topic and the related sub-topics) and then proceed to review the information in Managing Scheduled Tasks.

How to Create a Process Pipeline

An administrator can use the Aptify Process Pipeline architecture to create business logic specific to his or her organization and to automate functionality. The following is a high-level overview of how an organization creates and implements a new process pipeline:

  1. Design the Process Flow: The first step to creating a successful process pipeline is to define the desired end results of the process and then identify what steps are required to achieve this goal. This includes determining how and where the system will execute the process. Considerations include:
    • Steps Required: How many discreet actions are required to achieve the process flow's goal? A simple process flow (such as send a Welcome email to new persons) can have one step. Complex process flows can require multiple steps.
    • Execution Type: Aptify can fire a process based on a specific system event (such as creating a new record) or on a pre-defined schedule to occur at a specific date and time. Event-based firing uses an Event Handler. Time-based firing uses a Scheduled Task.
    • Execution Mode: Process flows fired by an event handler can execute immediately upon firing (Synchronous execution) or at a later time (Asynchronous execution). For Asynchronous execution only, the system creates a Process Flow Runs record that records information about the process flow's execution. All scheduled tasks use Asynchronous execution.
    • Execution Location: The local computer always runs synchronous process flows. For asynchronous process flows, you can specify that either the local computer, if it is an application server (Local option), or an application server (Server option) executes the process flow. Scheduled tasks use an Application Server to execute asynchronous process flows.
  2. Create Process Flow Record: In Aptify, create a Process Flows record to implement the new process you have defined.
    • Specify Execution Mode and Execution Location.
    • Define the Input Properties required by the process. These properties are data values that are used in the process. You need to specify all of the necessary inputs here to incorporate the information into the process.
    • Define any Output Properties. These are values generated during the process flow that you can use an input for another process flow. This situation is applicable if you've designated a step as a Sub-Process (in other words, one step in a process flow is to execute another process flow).
    • Define the process flow's Result Codes. These are the results that correspond to the possible outcomes of the process. Typical Result Codes include Success and Failed.
    • Note that Aptify recommends that you create the process flow and its related records on a development server first and then deploy the completed and tested process flow to your production server using the Aptify Data Packer. (See Packing Data for more information.)
    • See Creating Process Flows for information on creating a new Process Flows record. 
  3. Add the First Step: Add the first step to your process flow using the Process Flow's Design tab.
    • You specify the action performed by the step by selecting a Rule (a script or a SQL statement), a Component (a .NET assembly that uses the specified Input Properties to perform an action), or a Sub-Process (another process flow) step.
    • Components are stored in the Process Components service.
    • Define any inputs required to complete the step in the Properties dialog's Properties tab. This corresponds to the step's Input Map. For steps based on a component, the inputs flow down automatically from the component.
    • Define any output data generated by the step that is required for other steps in the process in the Output Map. For steps based on a component, the outputs flow down automatically from the component.
    • Use the Process Flow designer to link steps together based on a prior step's result. You can also use the Action Map to specify that a particular result corresponds to the last step (the End Process option) or you can manually specify the next step.
    • You can specify a different action for each result code. For example, if the step fails, you can terminate the process flow and if the step succeeds, you can continue to the next step. For steps based on a component, the result codes flow down automatically from the component.
    • If your process flow has only one step, you select End Process for all possible result codes.
    • If your process flow requires additional steps, you designate the next step that the process flow should perform either using the Result Code Link option in the Process Flow design diagram or by specifying the next steps directly within a step's Action Map tab. 
  4. Create Additional Steps: Create the additional steps required by your process flow, linking the steps together either using the Result Code Link option in the Process Flow design diagram or by specifying the next steps directly within a step's Action Map tab.
  5. Test your Process Flow: Perform one or more tests to confirm that your process flow functions as intended using the Process Flow Debugger.
  6. Setup Event Handler or Scheduled Tasks: Create an Event Handler or Scheduled Task to fire your process flow.
  7. Deploy your Process Flow to the Production Server: If you created and tested your process flow on a development server, pack the relevant data files using the Aptify Data Packer and then unpack them on your organization's production server.

Managing Process Flows

Process flows represent a functional business process from beginning to end. They may be as simple as sending an email to a customer or may involve more complex steps such as automatically creating an order or updating the status of certain records within the system.

Process Flows in Aptify are made up of Process Flow Steps. These steps contain the actual logical components and may be arranged in whichever manner is required within the process flows. When constructing a process flow, it is important to clearly define each step in the business logic, and the possible consequences of each step's success or failure during execution. The administrator should be familiar with the delivered process components, especially with the data that each component requires.

Prior to creating a process flow, the full scope of the process must be well understood. This is especially important when determining what data may be required by the process when it runs, and what data, if any, may be returned. It is for this reason that it is strongly recommended that process flows be fully outlined prior to configuration within Aptify. 

When setting up a process flow, you will work with the following services in Aptify:

  • Process Flow Categories: A service provided to categorize process flows.
  • Process Flows: The service that stores a process flow's details.
  • Process Flow Steps: The service that stores each step of a process flow.
  • Process Component Categories: A service provided to Process Component Category.
  • Process Components: The service that stores information about the .NET assemblies that can be used as a component in a Process Flow Steps record.

This topic contains the following sub-topics:

Creating Process Flow Categories

Process flows may be grouped together based on an organization's business-specific reporting needs. These groupings are defined in Process Flow Categories records. Follow these steps to create a new Process Flow Category:

  1. Open a new record from the Process Flow Categories service.

    Process Flow Categories Record
  2. Enter a Name (required) and a Description.
  3. If this is a sub-category, enter the parent category in the Parent field. (This field links to another record in the Process Flow Categories service.)
  4. Save and close the record.
  5. Repeat steps 1 through 4 to add additional categories. 

Creating Process Flows

The process flow acts as the container for a string of functional steps that, when put together, define a certain piece of business logic. Users who have worked with Process Flows on version 3.x will notice substantial changes in the process flow interface. For a general overview of the Process Flows form, see Navigating the Process Flow Designer for more information.

Follow these steps to create a new process flow:

See How to Create a Process Pipeline for an overview of the steps involved to design and implement a process flow. The instructions below describe how to create a new Process Flows record. 

  1. Open a new Process Flows record from the Process Flows service.
    • Note that your computer must have at least one printer installed to open a Process Flows record.
  2. Enter a Name and Description for the process flow.
    • As this flow may be used as a sub-process in later flows, it is recommended that the name be descriptive of the functionality included.
  3. Select from a list of available categories from the Category drop-down box. (Or, create a new one. See Creating Process Flow Categories.)
    Process Flows Record
  4. Click the Details tab.
  5. Specify the process flow's Execution Mode and Execution Location. See Specifying the Execution Mode and Location for details.
  6. Leave the Compile related fields at their default setting. After you have set up the process flow, you can return to this tab and compile it. See Using the Process Flow Compiler for details.
  7. If you intend to use this process flow as a sub-process in a process flow step, you can specify the icon that appears for the step in the process flow designer by entering an image in the Icon Small field.
    • This field specify an image's location in the Object Repository.
    • Note that the Icon Large field is not currently in use.
    • See Navigating the Process Flow Designer for information on the process flow designer.
      Details Tab
  8. Leave the Connection State Options field set to AlwaysAvailable.
    • The Connection State Options, Failover Process Flow, and Execution Rules fields are reserved for future use.
  9. Save the record by clicking the Save icon in the toolbar or selecting the File > Save menu item.
  10. Specify the process flow's Input Properties under the Input Properties tab. See Defining Process Flow Input Properties for details.
  11. Specify the process flow's Output Properties under the Output Properties tab. See Defining Process Flow Output Properties for details.
  12. Specify the process flow's Result Codes under the Result Codes tab. See Defining Process Flow Result Codes for details.
  13. Add one or more steps to the Process Flow using the Process Flow Designer. See Creating Process Flow Steps for details.
  14. Test the process flow to confirm that it can successfully execute using the Process Flow Debugger tool. See Testing Process Flows for details.
  15. Compile the process flow, if desired. See Using the Process Flow Compiler for details.

 

Note that the settings found under a Process Flow's Security tab are reserved for future use. All users can execute a Process Flow, regardless of its security settings.

See Navigating the Process Flow Designer for Information on the Process Flows record's Design tab.

Specifying the Execution Mode and Location

 

The execution mode and execution location determine how and when the system runs the process flow.

By default, when process flows are created, the execution mode is set to Synchronous, which requires that the process flow complete successfully prior to returning control to the calling event. Business processes that require successful updates to records or other functions that must be completed prior to continuation of the process should remain Synchronous. In other words, process flows that need to be executed immediately following a system action (the action is specified in the Event Handler) should be Synchronous.

Asynchronous execution mode places the process flow in a queue to be handled by an Application Server. This allows the local client machine to continue with other processes without requiring successful completion of the process flow. This mode of execution is most effective for the more complicated process flows that may otherwise result in delays to the user who must wait for the flow to complete. For example, process flows which result in generation of email notifications may not require completion prior to other functionality continuing and may provide more efficiency if set to Asynchronous execution mode.

Only Application Servers can execute Asynchronous process flows. See Administering Application Servers for information on Application Servers. 

The execution location determines where the process flow is run. There are two locations available:

  • Local: Processing of the process flow occurs on the local client machine.
  • Server: Processing of the process flow occurs on an Application Server.

The combination of execution mode and execution location determines whether a Process Flow Runs record is created and where the process will physically execute.

Synchronous Execution Mode / Local Execution Location

When Execution Mode is set to Synchronous, Execution Location should be set to Local. The system does not create a Process Flow Runs record when using these settings. For these settings, when the process flow is fired, it immediately executes on the local computer.

Asynchronous Execution Mode / Server Execution Location

This configuration indicates that the process executes on an Application Server and that all subsequent processing continues on the local machine while this process flow is still running. The system performs the following actions after the process flow is fired:

  • The system creates a Process Flow Runs record, but the Client Machine Name remains blank until the process is sent to a server (at which time the Application Server's name appears in this field).
  • The Application Server polls the database server and picks up the Process Flow Run for execution.
  • The process flow executes on the Application Server, and the Application Server returns information about the run to the database server. 

When creating Process Flows for Application Servers, set the Execution Mode to Asynchronous and the Execution Location to Server. See Administering Application Servers for information on Application Servers.

Asynchronous Execution Mode / Local Execution Location

This configuration is only suitable for running process flows locally on an Application Server. This combination indicates that the process flow executes on the local computer and that all subsequent processing continues while this process flow is still running.

  • The system creates a Process Flow Runs record. The Client Machine Name field is populated with the name of the local computer, which is also an Application Server.
  • The local computer polls the database server and picks up the Process Flow Run for execution.
  • The process flow executes on the local computer, which then returns information about the run to the database server.

In general, you should configure a process flow to use Asynchronous/Server or Synchronous/Local. If you want an Application Server to execute the process flow, configure it to use Asynchronous/Server. If you want a local computer to execute the Process Flow immediately following a trigger event, configure it to use Synchronous/Local.

Defining Process Flow Input Properties

The input properties of a process flow define the external data that is required for the process flow to function properly.

At the Process Flow level, you define the Input Properties which obtain their value from an external source (the Event Handler or the Scheduled Task). This corresponds to Input Maps that use the Context Object source type (see Configuring Process Flow Input Maps for more information).

You do not need to include Input Properties that are fulfilled by static values at the Process Flow Step level. Input Property fulfillment at the Process Flow Step level overrides fulfillment at any other level during a process flow event. 

The process flow engine populates a Process Flow Context Object with values passed in via the process flow's input properties. The context object is an in-memory data structure that is passed to each subsequent step in the process flow. Through the context object, each step has access to the values passed to the process flow at the time the flow is initiated. Also, each step can pass new values into the context object (that is, the output for one step may be an input for another step). On a process flow's Input Properties tab, you specify all of the external data that the process flow will require to execute (this does not include any data generated as a step's output though).

The steps within the process flow may be based on components, rules, or other process flows. Process Components records provide a list of required data on their associated Input Properties tabs. You should review the Input Properties for the components you intend to use in a process flow when determining what data is required.

Follow these steps to add input properties to a process flow:

  1. Click the Input Properties tab.
  2. Click the New icon to open a new record.
  3. Enter a Name for the input property.
  4. Choose a type from the Type list.
    • The valid values are StringIntegerLongCurrencyDecimalDate/TimeBoolean, and Object.
    • Typically, an input property corresponds to a Field value from an entity so the Type should match the Field's SQL Data Type as defined in the entity.
    • For an Input Properties entry that corresponds to an GE Object, select Object as the Type.
  5. Complete the optional Description and Default Value fields, as necessary.
    • The Default Value specifies the value used by the input property if the Process Flow does not obtain a value for this property from the Event Handler or Scheduled Task.
  6. By default, the Required option is selected. If this input property is not required, clear this option.
    Input Properties Record

    The Value List Type field and Possible Values tab are reserved for future use with respect to Process Flow Input Properties.

  7. Click OK to save and close the Input Properties record.
  8. Repeat steps 2 through 7 to add additional input properties.
    • Alternatively, you can click OK and New in Step 7 to save the current record and open a new Input Properties record in one step.
  9. Save the Process Flows record.

Defining Process Flow Output Properties

Each step may produce results in the form of specific data points. If the process flow is a sub-process, it can store this data within the Context Object for use by a later step in the process flow or it can write the data to an external log. You should define only data returned by the process flow (which may act as a sub-process-based step in another process flow) on the Output Properties tab.

When adding a component to a Validation process flow, you must define the ValidationMessage output property to set the process flow property ValidationMessage. This is required because the property collection on a process flow component is independent from the property collection of the process flow itself. If the ValidationMessage output property is not defined, the message from the process flow component is never passed to the process flow and the user receives an error instead of the intended validation message.

Follow these steps to define Output Properties for a process flow:

  1. Click the Output Properties tab.
  2. Click the New icon to open a new record.
  3. Enter the Name of the output property.
  4. Enter a Description of the output property.
  5. Select the property's data type from the Type list.
    • The valid values are StringIntegerLongCurrencyDecimalDate/TimeBoolean, and Object.
    • Typically, an output property corresponds to a Field value from an entity so the Type should match the Field's SQL Data Type as defined in the entity.
      Output -Properties Record
  6. Click OK to save and close the record.
  7. Repeat steps 2 through 6 to define additional output properties.
    • Alternatively, you can click OK and New in Step 6 to save the current record and open a new Output Properties record in one step.
  8. Save the Process Flows record.

Defining Process Flow Result Codes

Every step within a process flow results in one or more scenarios. Each of these expected scenarios is defined as a result code within the setup of process steps. In general, the Process Flow Result Codes should match the Result Codes of the individual steps.

Also, since a process flow may also act as sub-process step within other process flows, any step that runs a process flow as a sub-process inherits the process flow's Result Codes.

Follow these steps to add Result Codes to a process flow:

  1. Click the Result Code tab.
  2. Click the New icon to open a new record.
  3. Enter a result code name into the Code field.
  4. Enter a description for the result code.
  5. By default, the Success option is selected. If the code does not signify a successful operation, clear the option.
    Result Codes Record
  6. Click OK to save and close the record.
  7. Repeat steps 2 through 6 to define additional result codes.
    • Alternatively, you can click OK and New in Step 6 to save the current record and open a new Result Codes record in one step.
  8. Save the Process Flows record.

Setting Up Process Flow Steps

Each process flow has one or more steps. Each step contains a distinct piece of functionality, and the outcome of each step determines the next course of action within the process flow. These steps may be based on the standard process components, based on rules unique to that step, or based on another process flow (sub-process).

A designer can specify an entire process flow as a step in another process flow by specifying the first process flow as a sub-process when creating a new step in the second process flow. This is one way to re-use process flow functionality and minimize duplication. However, note that individual process flow steps are not reusable and can only be associated with one process flow.

When a step is based on either a component or a sub-process, this step automatically inherits values based on the properties of the component or sub-process: Action Maps and Output Maps. These values are found on the Properties (or Input Map), Output Map and Action Map tabs. Each of these tabs may require additional configuration before a step may be properly linked to a process flow.

Each step you define within the Process Flow Designer corresponds to a Process Flow Steps record. To access a Process Flow Steps record, double-click the step on the Process Flow Design tab. See About the Process Flow Steps Form for details.

The Process Flows record in Aptify 5.0 provides a single interface for creating and configuring Process Flow Steps using the Process Flow Designer (that is, the Process Flow's Design tab). The sub-topics below describe how to define a process flow's step directly within a Process Flows record. However, you can still access individual Process Flow Steps records as needed. 

This topic covers the following sub-topics:

Creating Process Flow Steps

This topic describes how to create Process Flow Steps.

  1. Open a Process Flows record (if not already opened) and select the Design tab.
    • You must first save a process flow record before adding process flow steps.
  2. Click a step from button on the Main Toolbar or select Insert and then the step type. The available options are:
    • Component: Based on a Process Component. Component steps appear as rectangles in the designer. See Working with Process Components for information on creating and using Process Components.
    • Sub-Process: Execute an existing Process Flow. Sub-Process steps appear as a dotted-line rectangles in the designer.
    • Rule: Execute a specific Rule statement. Rule-based steps appear as rounded rectangles in the designer.
      Process Flow Steps
  3. Place the Process Flow step on the design grid.
    • Figure below illustrates a component-based step.
  4. Expand the Properties area of the Process Flow form, if necessary.
    Adding a Step
  5. Enter a Name for the step within the Properties area.
  6. Do one of the following based upon the step you selected:
    • If Step is Component: Select a Process Component in the Component list.
      • The drop-down list displays all of the records in the Process Components service grouped by category. Expand a particular category to see its associated sub-categories and/or process components.
      • See About the Delivered Process Components for information on the components provided with the default Aptify installation.
      • See Creating Process Components for information on adding new components.
      • When you select a component, the component's Input Properties automatically populate the step's Properties tab.
        Component-Based Step's Properties
    • If Step is Sub-Process: Select an existing process flow from the Sub-Process drop-down list. 
      • When you select a process flow, that process flow's Input Properties automatically populate the step's Properties tab.
    • If Step is Rule: Select the Rule tab and perform the following actions:
  7. Configure the step's input map on the step's Properties tab. See Configuring Process Flow Input Maps for more details.
    • For Component or Sub-Process steps, configure the input map on the Properties tab.
    • For Rule-based steps, click Add Map to manually add input properties required by your rule as needed.
  8. Select the Description tab and enter a description for the step.
  9. Select the Output Map tab. A list of Output Properties displays. See Defining Process Component Output Properties for more information on creating Output Properties.
  10. Add and configure additional steps to the Process Flow as necessary.
    • Click a step from button on the Main Toolbar to add a new step of a particular type.
    • Place the Process Flow steps on the grid.
    • Configure the step's properties accordingly.
  11. After you have created the steps, you can link them together in a logical order. You link steps together using the Insert Result Code Link option. See Linking Process Flow Steps Together for details.
    • Use the Process Flow Designer's layout tools as needed to organize the Process Flow's steps. See Navigating the Process Flow Designer for information on the available layout tools.
  12. Add informational labels to the process flow as necessary. See Adding Labels to a Process Flow for details.
  13. Save and close the Process Flows record.

    After you have finished designing your process flow, you can test it with the Process Flow Debugger tool. See Testing Process Flows for details

Writing Process Flow Step Rules

This topic provides an overview for how to write a Rule for a Process Flow Step. It assumes that you are familiar with writing complex SQL statement and VB.NET scripts.

See Administering Scripts for information on using scripts in Aptify.

SQL Rule

Follow these steps to define a Process Flow Step using a SQL statement:

  1. Add a Rule step to the Process Flow diagram.
  2. In the Properties area, enter a Name for the step.
  3. Click the Rule tab and select SQL as the Rule Type.
  4. Enter the SQL statement that performs the operation required by your process flow design. Keep in mind the following:
    • The Script toolbar icons are not applicable to SQL rule types. They are only applicable to VBScript rules.
    • Any values required to process the rule will need to be retrieved from the Process Flow's Context Object by adding the input to the step's Input Map tab using the Add Map button.
    • To add input variables to your SQL script, you can use Aptify's alias syntax for fields, which is in this format: <%[field name]%>.
    • Typically, a SQL rule is used to test a particular condition for a record in the database. In this case, use a SELECT CASE statement to define results for the process flow step. You then add these possible results to the step's Action Map tab using the New Map button to specify the next action when a the SQL rule selects a particular result.
    • See the figure below for a sample SQL rule that uses a SELECT CASE option that returns two possible results: Admin if a particular user is a system administrator and Not_Admin if not.
      SQL Rule
  5. Click the Rule's Properties tab and add any input values required by the rule to the step.
    • Click the Add Map button to add a new input map row and configure the Source Type and Source.
    • If the Source Type for an input is Context Object, then the Input Property either must be defined as a Process Flow Input Property (see Defining Process Flow Input Properties) or must be an output value from a previous step in the Process Flow.
    • The figure below illustrates an input map added for the ID field for the SQL rule shown in the figure above.

      Rule-Based Input Map
  6. Click the Rule's Action Map and add the possible results that the SQL statement can select and specify the next action that should occur when that result is returned.
    • In general, you want to perform this step later after you have created the next steps for your process flow. You can also use Result Code Link option to automatically create new Action Maps that lead to another step in the process flow (however, Action Maps that end the process need to be created manually).
    • See Linking Process Flow Steps Together for more information on the Result Code Link option and for information on configuring the Action Map tab, as well as the requirement for specifying a Process Flow Result Code for each Action Map.
  7. Save the Process Flows record to save your SQL Rule step.

VBScript Rule

Follow these steps to define a Process Flow Step using a VB.NET script:

  1. Add a Rule step to the Process Flow diagram.
  2. In the Properties area, enter a Name for the step.
  3. Click the Rule tab and select VBScript as the Rule Type.
  4. Click the buttons in the Script toolbar to review the set of intrinsic Available Objects that you can use directly in the script, the set of available objects you can reference within the script, and any available examples.

    Blank Script Control

    • For Process Flow Step VBScripts, the following objects are defined and available for use:
      • oDataAction: This corresponds to the Aptify.Framework.DataServices.AptifyDataAction class. A developer uses this class in a Process Flow script to retrieve values from the database. See the Aptify Software Development Kit (SDK) for more information on this class.
      • oProperties: This corresponds to the Aptify.Framework.Application.AptifyProperties class. A developer uses this class in a Process Flow script to retrieve from and add to the process flow's Context Object. See the Aptify SDK for more information on this class.
      • oResultCode: This corresponds to the Aptify.Framework.BusinessLogic.ProcessPipeline.ResultCode class. A developer uses this class in a Process Flow script to define Result Codes for this step. See the Aptify SDK for more information on this class.

    Available Objects for Validation Scripts

      • System: .NET framework assembly.
      • System.Data: .NET framework assembly.
      • System.XML: .NET framework assembly.
      • Bootfiles.IAptifyDataServices: This assembly corresponds to the Aptify.Framework.DataServices namespace, which forms Aptify's Data Services Layer and which is responsible for accessing data from the database. See the Aptify SDK for more information on this namespace. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
      • Bootfiles.AptifyAttributeManagement: This assembly corresponds to the Aptify.Framework.AttributeManagement namespace, which contains classes that are responsible for creating, retrieving, and changing code level attributes. See the Aptify SDK for more information on this namespace. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
      • Bootfiles.AptifyGenericDataServices: This assembly corresponds to the Aptify.Framework.DataServices.DataAction class, which is the main Data Services Layer class used for all synchronous data access for applications developed within Aptify. The DataAction component also manages connections and data caching intrinsically. This class is not bound to a specific database engine. Hence, the Generic nomenclature. Through configuration information, the generic Data Services Layer binds to a specific database engine. The default implementation is for Microsoft SQL Server, which is contained in the assembly, AptifySQLDataServices. See the Aptify SDK for more information on this class. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
      • Bootfiles.AptifyUtility: This assembly corresponds to a set of classes in the Aptify.Framework.Application namespace. The objects in this namespace provide a set of utility functions that are used primarily to access metadata associated with entities. See the Aptify SDK for more information on this namespace. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
      • Startup.AptifyProcessFlowEngine: This assembly corresponds to the Aptify.Framework.BusinessLogic.ProcessPipeline namespace, that contains objects related to Aptify's Process Pipeline functionality. This includes the Process Flows Engine that executes process flows as well as the Aptify Asynchronous Processor, which is used by Application Servers to execute asynchronous process flow runs. See the Aptify SDK for more information on this namespace. 
        • Note that Startup identifies the Object Package for this assembly in Aptify Object Repository.
      • Bootfiles.AptifyExceptionManagement: This assembly corresponds to the Aptify.Framework.ExceptionManagement namespace, which contains classes that can be used to manage the persisting of and display of Exceptions throughout an application. See the Aptify SDK for more information on this namespace. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
      • Startup.Aptify Application Object: This assembly corresponds to the Aptify.Framework.Application namespace. The objects in this namespace provide a set of utility functions that are used primarily to access metadata associated with entities. This includes information about attachments, entity actions, entity attributes, views, sub-types, and other entity metadata. Many of the methods provided by the classes in this namespace are convenient substitutes for common SQL queries. For example, rather than writing a SQL query to obtain the Entity ID of the Persons entity, a developer can use the GetEntityID method of the AptifyApplication class. In addition to convenience, the use of the Aptify.Framework.Application objects enforces consistency on development activities by providing a common set of functions that all developers can use from any project. See the Aptify SDK for more information on this namespace. 
        • Note that Startup identifies the Object Package for this assembly in Aptify Object Repository.
      • Startup.Generic Entity Base: This assembly corresponds to the Aptify.Framework.BusinessLogic.GenericEntity.AptifyGenericEntityBase class. This is the base class for the Aptify Generic Entity, the main business object in Aptify. See the Aptify SDK for more information on this class. 
        • Note that Startup identifies the Object Package for this assembly in Aptify Object Repository.
      • Startup.AptifyScriptEngine: This assembly corresponds to the Aptify.Framework.Scripting namespace, which corresponds to Aptify's Scripting engine that executes scripts written for functional areas such as Message Parts, Field Level Validation, and Process Flows. See the Aptify SDK for more information on this namespace. 
        • Note that Startup identifies the Object Package for this assembly in Aptify Object Repository.Process Flow Scripts can include references to the following .NET assemblies in the Global Assembly Cache (GAC Reference) or in the Aptify Object Repository (Repository Reference):
      • Bootfiles.AptifyObjectRepository: This assembly corresponds to the Aptify.Framework.ObjectRepository namespace, which contains the objects that define the operation of Aptify's Object Repository. See the Aptify SDK for more information on this namespace. 
        • Note that Bootfiles identifies the Object Package for this assembly in Aptify Object Repository.
          All References for Validation Scripts 
  5. Using VB.NET syntax, write a script that provides the logic required for this process flow step.
    • As you type within the script control, IntelliSense automatically displays a set of available options to assist you with completing an object reference.
      IntelliSense to Complete References
    • The full text of a sample script is shown in the figure above.
      • This rule opens a message box that displays The value provided [value] is < 100.
      • The value included in the message box corresponds to DemoValue, which is an Input Property for the Process Flow. The oProperties.GetProperty method retrieves the DemoValue from the Process Flow's Context Object.
      • After displaying the message box, the script calls oResultCode.Value=SUCCESS to create an Action Map result (called SUCCESS) for the step.
      • See the rule-based steps included with Aptify's delivered Process Flows for more examples. (See Process Flows as Delivered on page 200 for more information about these Process Flows.)
        Sample VBScript Rule
  6. Click the Rule's Properties tab and add any input values required by the rule to the step.
    • Click the Add Map button to add a new input map row and configure the Source Type and Source.
    • If the Source Type for an input is Context Object, then the Input Property either must be defined as a Process Flow Input Property (see Defining Process Flow Input Properties) or must be an output value from a previous step in the Process Flow.
    • Figure below illustrates an input map added for the DemoValue field for the VBScript rule shown in above figure.
      Rule-Based Input Map
  7. Click the Rule's Action Map and add the possible results that the VBScript can generate (based on the oResultCode.Value options you defined) and specify the next action that should occur when that result is returned.
    • In general, you want to perform this step later after you have created the next steps for your process flow. You can also use Result Code Link option to automatically create new Action Maps that lead to another step in the process flow (however, Action Maps that end the process need to be created manually).
    • See Linking Process Flow Steps Together for more information on the Result Code Link option and for information on configuring the Action Map tab, as well as the requirement for specifying a Process Flow Result Code for each Action Map.
  8. Save the Process Flows record to save your VBScript Rule step.

Configuring Process Flow Input Maps

The input properties on components and process flows define the data that is required so that the process or component may function correctly. At the component or process flow level, the individual data values are identified. However, where the data comes from is set up at the step level or done later when linking the completed process flow to an event handler.

For component and sub-process steps, the input properties from the corresponding Process Components or Process Flows record automatically flows down to the step's Properties tab. If the step is based on a rule, you must manually add any inputs to the Input Map. To add input maps for rule-based steps, click the New Map button and enter the name of the Input Map in the dialog box. Then follow the directions below to configure the mapping.

You can configure the input maps directly in the grid on the Input Maps tab or you can double-click the individual rows to display an Edit Mapping dialog box. Follow these steps to configure an input map:

  1. Select a step in the Process Flow Designer to load its properties.
  2. Select the Properties tab within the Process Flow form's Properties area to display any pre-defined input properties.
    • Required input properties that must be mapped to a value appear in red.

      Step with Undefined Inputs
  3. Configure the Source and Source Type for the input properties as necessary. You must define a source for all required input properties.
    1. Double-click an input map row to open the Edit Mapping dialog.
    2. Select a Source Type for the input map. Available values are:
      • Context Object: The data is obtained from the process flow's Context Object. This is a temporary data storage, which is created when the process flow is initialized.
      • Formula: The data may be obtained through execution of an SQL statement.
      • Static Value: Allows the entry of a static alphanumeric value in the Source field.

    Hard-coding Static Value Recommendations

    Hard coding a static value for a process flow step sets that value for all instances where the process flow executes rather than allowing variables to be passed into the step. Process flow steps with hard-coded input maps are useful for certain situations but a majority of cases obtain values from an external source. 

    • Enter a Source. The format of the value for the Source field is dependent on the Source Type selected:
      • If Source Type is Context Object: The Source field automatically populates with the list of input properties defined on the Process Flow's Input Properties tab. Select the appropriate input property from the list. You can also manually enter a value if passing in data that was added to the context object by a previous step of the process flow.
      • If Source Type is Static Value: Enter an alphanumeric value in the Source field. If the property has a default value, this value appears in the Source field.
      • If Source Type is Formula: Enter a SQL statement in the Source field.

        Edit Mapping Dialog
    • Click OK to save the input map.

      Input Maps Tab
  4. Save the Process Flows record. 

Configuring Process Flow Output Maps

The Output Maps tab of the Process Flow record automatically inherits a list that mirrors all output properties defined on the component or sub-process.

Output properties define data elements which may be returned upon completion of the component or sub-process. How and where this data is used is defined within the output maps of a process flow step.

Rule-based steps have no Output Maps. For rule-based steps, there is no automatic inheritance of output maps, and you should not add any output maps manually.

Follow these steps to configure a step's Output Map:

  1. Select a step in the Process Flow Designer to load its properties.
  2. Select the Output Map tab within the Process Flow form's Properties area to display any pre-defined output properties.
    • If necessary, you can add an output map by clicking the New Map button. Output maps added manually are marked as custom.
    • You can delete a custom output map by right-clicking it within the grid and selecting Delete from the pop-up menu.
  3. Configure the Destination and Destination Type for the output properties as necessary. Note that you configure Output maps directly in the grid. There is no associated Edit Mapping dialog.
    • Select a Destination Type from the drop-down list. Available options are:
      • Context Object: Data is captured within the context object, to be used by another step in the same process flow.
      • Log: Data is exported to an external log.
    • Enter the Destination, depending on the type you selected:
      • If Destination Type is Context Object: Enter the name of the data element as it is to be stored in the temporary context object.
      • If Destination Type is Log: Enter the network path where the log is to be created.

    Option Maps Tab

  4. Save the Process Flows record. 

Linking Process Flow Steps Together

A process flow connects a series of steps in a logical order based on conditional outcomes. Each process flow begins with a first step (such as Step A in Figure below). After executing the first step, the process flow proceeds to the next step. However, the next step depends on the result of the first step.

In the figure below, if Step A's outcome is Result 1, then the process flow executes Step B. However, if Step A's outcome is Result 2, then it executes Step C. The result code links illustrate the execution logic that the process flow follows.

Process Flow Execution Logic
Follow this procedure to link together a series of steps and define a process flow's execution order:

  1. Rearrange the process flow steps within the Process Flow Designer in a logical order based on the execution logic you plan to implement.
  2. If not already marked as the first step, select the first step. Then, right-click the step and select Set As First Step from the pop-up menu.

    Set As First Step
    • By default, the first step is the first Process Flow Step you added to the Process Flow Designer.
    • The step with a green border is the current first step.
  3. Use the Insert Result Code Link option to link the first step to the next step in the execution logic.
    • Click the Insert Result Code Link button on the main toolbar (as shown in the figure below) or select Insert > Result Code Links from the record's menu.

      Result Code Button
    • Place the mouse cursor over one of step's handles until the cursor turns into a target icon (as shown below).
      • If a step is not currently selected, the handles appear as "x"s. If selected, the handles appear as small, gray squares.

        Linking the First Step
    • Click the handle to anchor to the link at the first step.
    • Move the mouse cursor to a handle on the step that you want to link to the first step.
      • A dotted line appears as you move the mouse cursor towards the second step.
      • A target icon appears when you place the mouse cursor over a handle on the next step.

        Linking the Second Step
    • Click the handle on the next step.
      • The Create New Result Code dialog appears.
    • Select or enter a valid Result Code for the first step.
      • For Component or Sub-Process steps, the available codes (previously configured at the Component or Process Flow level) automatically populate the Result Code drop-down list. Select one of these options. See Using the Web Service Process Component Wizard and Defining Process Flow Result Codes for information on defining result codes.
      • For Rule-based steps, manually enter one of the rule's results in the Result Code field. This creates a new result code on the step's Action Map tab.
    • Configure the Is Success option, if applicable.
      • If this Result Code corresponds to a successful operation, leave the Is Success option selected. The Process Flow Designer displays successful results in green.
      • If this Result Code is considered to be an unsuccessful outcome, clear the Is Success option. The Process Flow Designer displays unsuccessful results in red.

        Specify Result Code
    • Click OK to close the dialog.
      • The Process Flow Designer inserts a single-headed arrow that indicates the direction of the process flow execution order. The Result Code appears in the center of the arrow.

        Linked Steps
  4. Create additional links as necessary to link all of the steps in your process flow in the desired order.
    • Repeat Step 3 to add additional links.
  5. For Component and Sub-Process steps, configure Result Codes that do not proceed to another step to use the End Process option on step's Action Map tab. Also, specify a Process Flow Result Code for each step result.
    • For Rule-based steps, you may need to manually add Action Maps for actions that result in End Process. Any rule-based results should be linked to another step in the Process Flow using the Insert Result Code Link button. This automatically generates the Action Map entries for you.
    • All Result Codes must either link to another step or end the process. Follow these steps to mark a result code as End Process:
      • Select the step in the Process Flow Designer to load its properties.
      • In the Properties area, click the Action Map tab.
      • For Result Codes that do not link to another step, select End Process from the Action drop-down list.

        End Process Action
    • Also, associate each step's result that ends the process with a Process Flow Result Code. This will be the value returned by the Process Flow Debugger tool if it obtains these results. Follow these steps:
      • Select a step in the Process Flow Designer to load its properties.
      • In the Properties area, click the Action Map tab.
      • For each of the step's Result Codes that ends the process, specify a corresponding Result Code from the Process Flow's Result Codes tab in the Process Flow Result Code field. (See Defining Process Flow Result Codes for Information on Process Flow Result Codes.) At a minimum, specify a Process Flow Result Code for each End Process action; specifying a Process Flow Result Code for Go To Step actions is not required (but it is included in the figure below for illustration purposes).

        Specifying Process Flow Result Codes

  6. Save the Process Flows record.

Adding Labels to a Process Flow

You can add labels to your Process Flow diagram to document its function or provide additional information about the process. These labels have no impact on the execution logic.

Follow these steps to add and configure a label:

  1. Click the Insert Label button in the toolbar or select Insert > Label from the menu.

    Insert Label
  2. Move the mouse cursor to the location where you want to place the label and click the mouse button.
    • A new label is added to the specified location.

      Adding a New Label
  3. Configure the label's properties, including the label text, in the Properties area. You can configure the following options:
    • Label: Enter the text of the label.
    • Back Color: Select the background color of the label box.
    • Border Type: Select the type of border for the label box. Options include Solid, Dash, Dashdot, and Dot.
    • Border Color: Select the border's color.
    • Border Size: Specify the thickness of the border (from 0 to 10).
    • Border Shadow: Specify the size of the label box's shadow (from 0 to 10).
    • Font Name: Select a font for the label text.
    • Font Size: Select the size of the label text.
    • Bold: Select this option to bold the label text.
    • Italic: Select this option to make the label text italics.
    • Underline: Select this option to underline the label text.

      Label Properties

  4. Resize or move the label as necessary.
    • You can resize the label box by dragging one of the box's handles.
  5. Save the Process Flows record. 

Testing Process Flows

After you have designed and constructed your process flow, you can use the Process Flow Debugger tool to test it.The Process Flow Debugger can be run directly from a Process Flows record or through an Event Handler. Note that any action performed by the process flow is applied to the database so this tool should not be run on a production server.

This topic covers the following sub-topics:

Running the Debugger From an Event Handler

Aptify includes the ability to run the Process Flow Debugger tool each time an Event Handler is fired by a particular user so that the process of firing a process flows from an event handler to automatically execute business-specific logic within the system can be tested. A developer can choose to test all process flows within the Aptify system or select certain process flows to be tested by specifying the appropriate values through the ProcessFlow User Values option which is found under an administrator or developer user's Aptify Button menu options. When the necessary scope has been specified, Aptify generates the appropriate User Values records for the administrator's or developer's User ID. Then, if an event handler exists for a process flow specified in the user's User Values record, the Aptify Process Flow Debugger Tool launches automatically each time the event handler is fired by the administrator/developer user. An administrator/developer can then go back and turn the tool off when finished testing. An administrator/developer can also turn on the debugger tool for a specific user by manually creating the necessary User Values record for a particular user.

This topic covers the following procedures:

Defining Process Flow User Values

Follow the steps below to define which process flow(s) should be debugged.

  1. Log into Aptify with a user account that has system administrator/developer privileges.
  2. Select the Aptify Button > ProcessFlow User Values menu option.
    • This item is grayed out for non-administrator or non-developer users.
    • If you want to run the debugger tool for a non-administrator or non-developer user, an administrator can manually create User Value records for a particular user. See Working with Process Components for more details.
      Select ProcessFlow User Values Option
  3. Select the scope of the debugger tool by selecting a value from the ProcessFlow Debugger Tool drop-down menu:
    • Off: The debugger tool is turned off for all process flows runs from an Event Handler. However, you can still run the debugger tool from a Process Flow itself. See Running the Debugger From a Process Flow for details.
    • All: The debugger tool will be launched for all Process Flows that are fired from an Event Handler.
    • Defined List: Only process flows selected from the ProcessFlow List will launch in debug mode.
  4. If you select Defined List as the scope, specify the process flows to test by selecting the ProcessFlow List option next to the appropriate process flow(s) in.
  5. Click OK to save the changes and close the ProcessFlow Debugger User Value dialog.
    • The appropriate User Values records are automatically generated or modified for the current user based on the scope specified.

Running the Debugger Tool From an Event

If an event handler exists for a process flow specified in the ProcessFlow User Values dialog, the Aptify Process Flow Debugger Tool launches automatically each time the event handler fires. Once the event handler is fired (for example, after a record is saved) and the debugger tool is launched, follow the steps below to utilize the tool:

  1. Enter a test value for each of the process flow's inputs.
    • Note that the debugger enforces data type validation for input map values and prompts you if a value you enter is inconsistent with the input property's data type when you attempt to execute a process flow test run.
      Enter Values
  2. Click the Run the process flow without stopping icon (the green arrow head in the toolbar) to execute the process flow.

    Note that any action performed by the process flow is applied to the database so this tool should not be run on a production server.

    • Alternatively, you can use the debugger tool to set up breakpoints in the process flow and then step through process flow to review the results of a particular step.

    • When you select Run the process flow without stopping, the tool runs the -process flow and displays the result code it obtained based on the values you entered. Note that the displayed result code is the Process Flow Result Code for the specific step the test ended on (and not the step's result code).

      Debugger Results Dialog

  3. Click OK to close the message and return to the debugger tool and review the Step Log information as necessary.

If the process flow failed, follow these general steps to correct the error:

  1. Review the Step Log to determine where the error occurred.
  2. Close the debugger tool.
  3. If necessary, open the Session Exceptions viewer to review the data log messages generated for more information about this process flow's execution.
  4. Modify the process flow as needed based on the error information.
  5. Save the process flow.
  6. Rerun the debugger tool (by initiating the event handler again) to test the process flow again.
  7. Once you are satisfied with your tested and are finished using the debugger tool, you need to turn the tool off for the particular process flow. See Turning Off the Debugger Tool for more details.

    The debugger tool also supports an option to add breakpoints in the execution so you can step through the process flow and review the results prior to continuing to the next step in the logic.

Specifying a Non-Administrative User to Run the Debugger Tool

The ProcessFlow User Value dialog is only available for users who have administrative or developer privileges. However, an administrator or developer can turn on the debugger tool for a non-administrative user by manually creating the necessary User Values record for a particular user if needed by following the steps below.

  1. Log into Aptify using an account that has system administrator/developer privileges.
  2. Open a new record from the User Values service.
    • The Users Values service is found under the User Administration application by default.
  3. Enter the username of the test user in the UserID field.
    • This field links to the Users service.
  4. Enter ProcessFlow Debugger Scope in the Name field.
  5. Enter the scope of the debugger tool for the particular user in the Value field.
    • All: The Debugger Tool will be launched for all Process Flows that are fired from an Event Handler.
    • Defined List: Only process flows specified in the ProcessFlow List will launch in debug mode.

    ProcessFlow Debugger Scope User Values Record

  6. Save and close the record.

If you specified All as the scope of the debugger tool, no additional steps are necessary, and you can begin testing. (See Running the Debugger Tool From an Event for details.) However, if you specified Defined List as the scope, an additional User Values record must be created to define the process flows that will launch in debug mode. Follow the steps below to create a list of process flows to debug.

  1. Open a new record from the User Values service.
    • The User's Values service is found under the User Administration application by default.
  2. Enter the username of the test user specified in the scope record in the UserID field.
  3. Enter ProcessFlow List in the Name field.
  4. Enter the ID of each process flow to be tested, separated by a comma in the Value field.
    ProcessFlow List User Values Record
  5. Save and close the record.

Turning Off the Debugger Tool

Once you are finished debugging the specified process flow(s) through an Event Handler, follow one of the methods below to turn off the Process Flow Debugger tool.

Turning Off Debugger Tool for an Administrator User

If you want to turn off the Process Flow Debugger Tool for an administrator/developer user, follow the steps below:

  1. Log into Aptify with the user associated with the debugger tool.
  2. Select the Aptify Button > ProcessFlow User Values menu option.
  3. Select Off from the ProcessFlow Debugger Tool drop-down menu.
    • If you want to continue to use the debugger on additional process flows in a defined list, you can also disable the debugger tool for a specified process flow by clear the selection next to the appropriate process flow.
  4. Click OK to save the changes and close the ProcessFlow Debugger User Value dialog.
    • The appropriate User Values records are automatically modified for the current user based on the scope specified.

Turning Off Debugger Tool for a Non-Administrator User

If you want to turn off the Process Flow Debugger Tool for a non-administrative user, you must do so manually by modifying the appropriate User Values record for the user. Follow the steps below:

  1. Log into Aptify using an account that has system administrator/developer privileges.
  2. Go to the User Values service.
    • The Users Values service is found under the User Administration application by default.
  3. Open the appropriate User Values record.
    • To find the appropriate User Values record, use the following search criteria:
      • UserID: ID of user you want to disabled the debugger tool for.
      • Name: ProcessFlow Debugger Scope
  4. Modify the value in the Value field to Off.
  5. Save and Close the record.

Running the Debugger From a Process Flow

One of the ways you can use the Process Flow Debugger tool to test a process flow is to run it directly from the Process Flow record. When running the tool from a Process Flow record, you do not need to create an Event Handler to confirm that a process flow is working as expected. When the tool is launched, a window appears that displays the inputs specified on the Process Flows record's Input Properties tab. You can then provide a value for each input, just as if you were configuring an Input Map for a process flow on an Event Handlers or Scheduled Tasks record. The tool executes the process flow using the input values you specified and displays the result code. If the process flow fails, any failure information is saved in the Session Exception viewer.

You can launch the tool from either the Process Flow service or directly from with the Process Flows record itself.

To launch the tool from within a Process Flows record, click the Run icon in the toolbar or select Debug > Run from the main menu.

Debugger Run Icon
The Aptify Process Flow Debugger Dialog appears, displaying the input properties for the current process flow.

Debugger Run from Record

To launch the tool from a view, click the Run Process Flow icon in the view toolbar.

Run Process Flow Icon
If you have a process flow already selected in the view, then that process flow automatically appears in the Process Flow field. If applicable, you can clear this field and specify a different process flow in the Process Flow field.

Debugger Run from View

Follow these steps to use the debugger tool from a Process Flows record:

  1. Launch the Process Flow Debugger tool either from a Process Flows record or view of Process Flows.
    • When running the tool from a Process Flows record, save the process flow first to ensure that the debugger is using the latest information. If you made changes to the process flow and did not save the record before running the debugger, then the debugger may continue to use the old settings.
  2. If you launched the tool from a view, specify the process flow to run in the Process Flow field. 
  3. Follow these steps to use the debugger tool:
    • Launch the Process Flow Debugger tool either from a Process Flows record or a view of Process Flows.
    • When running the tool from a Process Flows record, save the process flow first to ensure that the debugger is using the latest information. If you made changes to the process flow and did not save the record before running the debugger, then the debugger may continue to use the old settings.
  4. Enter a test value for each of the process flow's inputs.
    • Note that the debugger enforces data type validation for input map values and prompts you if a value you enter is inconsistent with the input property's data type when you attempt to execute a process flow test run.

      Enter Values
  5. Click the Run the process flow without stopping icon (the green arrowhead in the toolbar) to execute the process flow.

    Note that any action performed by the process flow is applied to the database so this tool should not be run on a production server. 

     

    • Alternatively, you can use the debugger tool to set up breakpoints in the process flow and then step through process flow to review the results of a particular step.

    • When you select Run the process flow without stopping, the tool runs the process flow and displays the result code it obtained based on the values you entered. Note that the displayed result code is the Process Flow Result Code for the specific step the test ended on (and not the step's result code).

      Debugger Results Dialog

  6. Click OK to close the message and return to the debugger tool and review the Step Log information as necessary.


If the process flow failed, follow these general steps to correct the error:

  1. Review the Step Log to determine where the error occurred.
  2. Close the debugger tool.
  3. If necessary, open the Session Exceptions viewer to review the data log messages generated for more information about this process flow's execution.
  4. Modify the process flow as needed based on the error information.
  5. Save the process flow.
  6. Rerun the debugger tool to test the process flow again.

The debugger tool also supports an option to add breakpoints in the execution so you can step through the process flow and review the results prior to continuing to the next step in the logic.

Working with Process Components

You can define each step of a process flow as a rule, sub-process, or component. A component specifies an object, which contains the code that executes the step's functionality. Components provide standard building blocks for process flows utilized with Aptify. Aptify provides a set of sample components with the standard application that an organization to use to create process flow steps. (See About the Delivered Process Components for a list of delivered components.) Also, developers can create new components in Visual Studio .NET as necessary.

Process Components records in Aptify define the Object Repository location of the object as well as the data necessary to successfully execute its function.

This topic covers the following sub-topics:

Creating Process Component Categories

 

 

Each Process Component is associated with a category. A user can create categories as needed. Each category requires a name, description, and icon. A sample Process Component Categories record is shown in the figure below.

Process Component Categories record

Aptify automatically creates a new category each time it generates CRUD (Create, Read, Update, and Delete) components when an entity is saved. (See About the CRUD Process Components for more information.) The parent for these types of categories is the Entity Operations category.

Follow these steps to create a new Process Components Categories record:

  1. Open a new record from the Process Component Categories service.
  2. Enter a Name and a Description for the category.
  3. If this category is a child of another category, specify the parent category in the Parent field.
  4. In the Icon field, specify the Object Repository location of an image to use for this category, if desired. This icon has no associated functionality.
    • The system specifies an entity's icon in this field for categories created automatically for CRUD components. The icon specified here is also applied to all of the CRUD components.
  5. Save and Close the record.

 

Creating Process Components

 

 

New Process Component records may be created within Aptify to satisfy an organization's business-specific requirements. Each component is based on code stored within an object's class. New components require that new objects be written and compiled. The creation of this code is not covered in detail in this guide. The steps in this section describe how to create a Process Components record after the component has been written, compiled, and added to the Object Repository.

Note that Aptify automatically generates four process components (known as the CRUD (Create, Read, Update, amd Delete) components) each time you save a new entity or regenerate an existing entity in Aptify. See About the CRUD Process Components for details.

A sample Process Components record is shown in the figure below.

Follow these steps to create a new Process Components record:

  1. A developer writes the new process component. This document does not describe this development process in detail but provides the following guidelines:
    • A new Process Component should implement the IProcessComponent interface (in the Aptify.Framework.BusinessLogic.ProcessPipeline namespace). See the Aptify Software Development Kit (SDK) for information on this interface.
    • The component's project should include the following references:
      • AptifyApplication
      • AptifyExceptionManagement
      • AptifyUtility
      • AptifyProcessFlowEngine
    • A Process Component utilizes a properties collection to handle input and output properties.
    • A Process Component should always be designed without GUI elements, including message boxes.
  2. Add the process component's object file (obtained from the developer) to the Object Repository.
  3. Open a new record from the Process Components service.

    Process Components Record

  4. Enter a Name and Description for the component.
  5. Enter a Category for the component. This field links to the Process Component Categories Service.
  6. In the Object field, click the Object Repository button (the button to the right of the field) to select the Object Repository location of the process component's object.
  7. Enter the object's Assembly Name and Class in the fields provided.
  8. If desired, specify the icon that appears in a process flow designer for steps that use this component by entering an image in the Icon Small field.
    • This field specify an image's location in the Object Repository.
    • Note that the Icon Large field is not currently in use.
    • See Navigating the Process Flow Designer for information on the process flow designer.
  9. If the component you have specified is generic in nature, specify any additional initialization information in the Init Data field.
    • The CRUD components all use the same generic components. The system uses this field to identify a particular entity for the generic CRUD component. See About the CRUD Process Components for more information.
  10. Save the record.
  11. Configure the Input PropertiesOutput PropertiesResult Codes, and Property Page tabs as necessary in order for the component to function as intended. See the topics linked below for details.
  12. Save and close the record.

 

Defining Process Component Input Properties

 

 

The input properties of a process component define the data that is required in order for the logic included within the component to function properly. For example, if a component is configured to send an email, the component will require certain data elements, including the email address of the recipient and the subject and text of the message. Additional data such as addresses for cc and bcc lists for the email are used when the component is called, but may not be required. All data used within the component must be defined as input properties.

Follow these steps to add a new input property to a component:

  1. Open a new record from the Input Properties tab of the Process Components form.
  2. Enter a Name for the input property.
  3. Choose a type from the Type drop-down list.
    • The Type options are String, Integer, Long, Currency, Decimal, Date/Time, Boolean, and Object.
    • Typically, an input property corresponds to a Field value from an entity so the Type should match the Field's SQL Data Type as defined in the entity.
  4. Complete the optional Description and Default Value fields, as necessary.
    • The Default Value specifies the value used by the input property if the process flow does not obtain a value for this property from the event handler or scheduled task. Also, in an input map, if a user selects the Static source type, this default value appears in the Source field.
  5. By default, the Required option is selected. If this input property is not required, clear this option.

    Input Properties Record

  6. If you want to configure a list of possible values, change the Value List Type to List Only or List or Manual. Then, specify the possible values on the Possible Values tab.
    • When set to List Only, a user can only select from the list of Possible Values when specifying a value for this Context Object.
    • When set to List or Manual, a user can either select from the list of Possible Values or manually enter a new value that is not on the list.
  7. If you want to customize the way a input property is viewed, you can define a property viwer on the Property Page tab. Figure below is an example of an Input Property called FirstName. If a user selects the FirstName Input Property from the Properties window of a process flow, a customized dialog appears rather than the standard Edit Mapping dialog.
  8. Click OK to save and close the Input Properties record.
  9. Define additional input properties as necessary.

 

Defining Process Component Output Properties

 

 

The logic defined by the process component may result in the production of data. This data may be returned to an external log or stored back within the Context Object for use during the execution of a process flow. Data returned upon successful completion of the component's functionality is defined as output properties.

Follow these steps to add an output property to a component:

  1. Open a new record from the Output Properties tab of the Process Components form.
  2. Enter the Name of the output property.
  3. Enter a Description of the output property.
  4. Select the property's data type from the Type list.
    • The Type options are String, Integer, Long, Decimal, Date/Time, Boolean, and Object.
    • Typically, an output property corresponds to a Field value from an entity so the Type should match the Field's SQL Data Type as defined in the entity.

      Output Properties Record

  5. If you want to customize the way an output property is viewed, you can define a property viewer on the Property Page tab. See Defining Process Flow Input Properties for an example of an input property using a customize viewer.
  6. Click OK to save and close the record.
  7. Repeat steps 1 through 5 to define additional output properties.
    • Alternatively, you can select OK and New in Step 6 to close the current record and open a new Output Properties record in one step.

 

Defining A Custom Property User Interface

 

 

With Aptify, a developer can create a customized property sheet for the input and output properties associated with a process component. When a customer property viewer is defined, if a user adds the process component to a Process Flows record and selects the Properties windows, the customer property viewer displays instead of the standard Aptify property interface. The figure below is an example of a custom property sheet for the Send Email component that is included with the standard installation of Aptify.


Sample Custom Property Sheet

Follow these steps to define a customized input and/or output property sheet for a Process Component:

  1. A developer writes a customized property sheet for the process component's input and/or output properties.
  2. Open the Process Components record in which you want to define a customized property sheet.
  3. Go to the Property Page tab.
  4. In the Prop Page Object field, click the Object Repository button (the button to the right of the field) to select the Object Repository location of the process component's property sheet object.
  5. Enter the object's Prop Page Assembly Name.
  6. Enter the class that contains the custom property sheet for the Input Properties associated with this component in the Input Prop Page Class field.
  7. Enter the class that contains the custom property sheet for the Output Properties associated with this component in the Output Prop Page Class field.

    Process Component's Property Page Tab
  8. Save and Close the Process Components record.

 

Defining Process Component Result Codes

 

 

Since a process component encompasses a unique piece of logic, when run, the functionality may result in one or more scenarios. These possible results are defined as result codes for the component. A process component's result codes flow down to the process flow step's Action Map when the process component is selected for that step. Note that you need to configure the result code's action at the process flow step level after the component is added.

Follow these steps to add Result Codes:

  1. Open a new record from the Result Codes tab on the Process Components form.
  2. Enter a name into the Code field.
  3. Enter a description for the result code.
  4. By default, the Success option is selected. By default, the Success option is selected. If the code does not signify a successful operation, clear the option.
    • When an unsuccessful code is returned by the component, the system generates an error log entry.

      Result Codes Record
  5. Click OK to save and close the record.
  6. Repeat steps 1 through 5 define additional result codes.
    • Alternatively, you can click OK and New in Step 5 to save the current record and open a new Results Codes record in one step. 

 

Using the Generate Data Mapper Process Component Wizard

 

 

With Aptify, many application process flows require mapping data from queries to objects, queries to property collections or property collections to objects. To map data from one area of the system to another without having to get values individually, Aptify includes the Generate Data Mapper Process Component wizard that a developer can use to create process components that map data from a source to a destination reducing the amount of code a developer needs to write.

For example, in a situation where a Process Flow needs to load Person records from a View, and then execute a Stored Procedure passing the PersonID and CompanyID.
  • The Load Data Table component can execute a Stored Procedure with context parameters, but it cannot access Entity Field values. 
  • The Value Retriever component can be used but can only load one Entity Field at a time.  The Process Flow would need two separate Value Retrievers, one for each field.

This wizard creates a single component that will load all properties that the Process Flow needs in a single step, simplifying Process Flow development and maintenance.

Follow the steps below to use the Generate Data Mapper Process Component Wizard to generate process components that map data within Aptify.

  1. Go to the Process Components service.
  2. Launch the Aptify Generate Data Mapper Process Component Wizard from the Process Components entity browser toolbar or the toolbar of a view run from the service.
  3. Select one of the following options:
    • New: Generates a new Data Mapper process component.
    • Update: Updates an existing Data Mapper process component.
    • Clone: If you want to copy an existing Data Mapper process component and then modified as needed, select the Clone option.
  4. If you select the Update or Clone options, select the Data Mapper process component you want to update or clone from the Select Process Component drop-down menu.
      • The name of the selected process component is automatically populated in the Name field.
        Generate Data Mapper Process Component Wizard Update Option
  5. If you selected the New option, enter a Name for the new Data Mapper process component.
    • If you selected the Update or Clone option, you can modify the name as desired.

    Generate Data Mapper Process Component Wizard New Option

  6. Select Next.
  7. Select the New Map button on the Object Map tab to define the object that will be used in the data mapping.
  8. Enter the Name for the source/destination object to be mapped. 
    • If this is a property you are using as an Input Property (i.e., it exists in the Process Flow Context Object already), the name must match the name of the property in the Process Flow Context Object.  If this is a property you are using only within the Data Mapper, or will be using for output, you can choose the name as you wish.
  9. Select a Source Type, the available source types are:
    • PROPERTY(DATA TABLE): Indicates that the source of the object is a Data Table property.
    • PROPERTY(GE): Indicates that the source of the object is a generic entity object (normally from a process flow or event handler).
    • PROPERTIES: Indicates that the source of the object is the properties/context object from the process flow other than a generic entity object. If the source is a generic entity object, use the Property (GE) source type.
    • NEW GE OBJECT: Indicates that a new GE Object will be loaded. In this instance, Source Details will include the entity name, and optionally, in parenthesis, the ID of the record to load. If the record ID is not provided, a new record is created.
    • SQL STATEMENT: Indicates the object is will be a Data Table object that contains the results of the SQL query specified and the fields available from this object will be the set of fields from the SQL query. The input property is a SQL Statement to be executed to retrieve data.
    • DATA ROW: Indicates that the object is a single row from a Data Table.
  10. Enter Source Details. The information that goes in this field is determined by the value chosen in the Source Type field.
    • If Source Type is PROPERTY(DATA TABLE): List the columns for the data table, separated by comma.
    • If Source Type is PROPERTY(GE): Enter the name of the existing generic entity object (from a process flow or event handler) which you want to map.
    • If Source Type is PROPERTIES: Enter the name of the input property that you want to provide as an input to the process component or the name of context object if you want to use the property as an output for the process component. This should be the same as the Name value.
    • If Source Type is NEW GE OBJECT: Enter the name of the entity from which you want to map, and optionally, in parenthesis, the ID of the record to load. If the record ID is not provided, a new record is created.
    • If Source Type is SQL STATEMENT: Enter the SQL statement that extracts the required information (set of fields) to use in the data mapping. Note that only the first row of the SQL query will be considered. Use a SELECT query that returns only one row.
    • If Source Type is DATA ROW: Enter the name of the Data Table and the index of the row: DataTableName(RowIndex)
  11. Enter any Comments for the Object Map.

    Object Map Tab
  12. Keep the following in mind as you define your object map:
    • <% %> Syntax is supported to allow access to context properties, including properties defined in the data map.
    • Ordering of these properties is important.  If you are defining dependent properties, the dependencies must be listed first.
      • Provide a RowIndex to identify which DataRow, the Rothe wIndex property must be defined before the DataRow property.  PersonsDataTable(<%RowIndex%>)
      • Provide an EntityID to load a GE object, then EntityID must be defined before the PROPERTY (GE) property.  Persons(<%EntityID%>) 
    • Output Properties must be defined as well. 
  13. Add additional object maps as necessary.
  14. Select the Data Map tab and select the New Map button to define the data mapping steps that correspond to the objects defined on the Object Map tab. Note that the steps are executed in the order in which they appear on the tab.
    • Each row describes how to map Input data to one of the defined Output Properties, GEs, SQL Statements, Data Tables, and Data Rows will be mapped according to their definitions in the Object Map – the Data Map is for specifying how attributes of those complex properties map to Properties. 
  15. Enter the Source Object (name of object from Object Map tab - this is the data source that provides a property. This can be either type of GE, an SQL Statement, or a Data Row.).
  16. Enter the Source Attribute. The information that goes in this field is determined by the Source Type of the object chosen in the Source Object field. The drop-down list shows all possible values.
    • If Source Type is NEW GE OBJECT or PROPERTY(GE): A drop-down list is made available with all fields from the GE Object. Select an appropriate field for the desired results of the mapping.
    • If Source Type is PROPERTIES: Enter the name of the object from the Object Map tab.
    • If Source Type is SQL STATEMENT: Enter the name of the field that is returned from the SQL query.
  17. Enter the Destination Object. This is the property where the value will be stored. The drop down list shows all objects listed on the Object Map.
  18. Enter the Destination Attribute. Repeat the Destination Object value.  The drop-down list will show only the value of the Destination Object.
  19. Enter any Comments for the Data Map.

Data Map Tab
You can view the generated process component by selecting the newly created record from the Process Components service.

Process Component Generated From the Wizard

 

One additional InputProperty XML is defined. The InputProperty does not need to be provided when using the generated component in a Process Flow. The Component is created within the Data Mapper Components category.

When you use the Generated Component In a process flow, remember the following:

  • The Input Properties will be filled out for the component.  These cannot be changed via the component.  Any changes must be done by re-running the wizard to update the component.
  • The Output Properties must be completed to map the Output properties from the Component to the Context properties for the Process Flow. 

 

Using the Web Service Process Component Wizard

 

 

Aptify provides the Web Service Process Component Generator Wizard to create a process component that can send and receive information through one of the web methods defined within a web service. Follow the steps below to use the wizard to generate process components that communicate with third party data sources through a Web Service.

Note that web service methods that require authentication are not supported. Only publicly accessible web methods are supported at this time.

  1. Go to the Process Component service.
  2. Launch the Aptify Web Service Process Component Generator Wizard from the Process Component entity browser toolbar or the toolbar of a view run from the service.
  3. Enter the URL information of the Web Service you want to communicate with in the URL field.

    Web Service ProcessCompent Generator - Step 1
  4. Click Next.
  5. Select the web method you want to use for the process component from the list.
    • Summary, Parameters (Input Properties) and Return Type (Output Properties) information is displayed to the right of the selected method.

    Web Service Process Component Generator - Step 2

    • If you select a Web Method that is already associated with a process component in Aptify, the following message appears alerting the user to update the existing process component or exit to cancel and select a different method.

    Selected Method Alreayd Exists Dialog

  6. Click Next and Finish to generate the process component.
  7. Select Yes to view the generated Process Components record.

Web Service Process Component Generated from the Wizard
Once the process component is generated, a developer can use the process component to create process flows to send and received information through internal or third-party data sources. 

 

Using the Process Flow Compiler

 

 

Process flows allow an organization to configure business functionality within Aptify without the use of custom code. The system interprets each process flow at run time, contacting the database for any required information in order to process the logic. In most cases, simpler process flows that consist of only a few steps will run efficiently using interpreted mode. However, operation in interpreted mode may be less efficient for more complex process flows that consist of numerous process steps or include more complex rule logic or iterative processing.

One method to improve the efficiency of process flows, especially the more complex flows or those that are run often within the system, is to make use of the process flow compiler. Compiling a process flow automatically generates a VB.NET assembly and class, which incorporate all logic included within the process flow into code.

This topic covers the following sub-topics:

Compiling a Process Flow

Follow these steps to compile a process flow:

  1. Open a Process Flows record and select the Details tab.
    • By default, when a Process Flows record is created, the Compile Mode is set to Interpreted, and the Compile Status is set to Incomplete.

      Process Flow Compile Mode

  2. Change the Compile Mode to Compiled and save the record.
    • This starts the Compile process.
    • The system compiles the process flow into a .NET assembly and stores the object on the client computer in the following location: C:\Documents and Settings\<user name>\Local Settings\Application Data.
    • The names of the files generated by this process are in the following format: Aptify_PF[Process Flow ID]{_}.
    • The system also adds to the object to the Aptify Object Repository.
  3. Close and reopen the record to refresh the record's contents. Click the Details tab.
    • The Compile Status field automatically changes to Complete, and the Compiled ObjectCompiled Assembly Name, and Compiled Class fields populate automatically with the name of the object, assembly, and class created to incorporate the logic for the Process Flows record.

      Compiled -Process Flow
  4. Close the record.

    If the Compile Status is set to Error after attempting to compile a process flow, select the Session Exceptions viewer for more information. The Session Exceptions viewer can be accessed from the Aptify > Session Exceptions menu item. See Using the Desktop Client Session Exception Viewer for details.


Recompiling a Process Flow

If you modify a compiled process flow, you should recompile the process flow so that the .NET assembly can be updated to include the changes that you made. Follow these steps to recompile a process flow that has previously been compiled:

  1. Close and reopen the Aptify Desktop client.
    • You cannot compile the same process flow more than once during the same session. Therefore, if in doubt, you should close and reopen Aptify before attempting to recompile a process flow.
  2. Open the Process Flows record and modify the process flow as necessary.
  3. Click the Details tab.
  4. Change the Compile Mode to Interpreted and Compile Status to Incomplete.
  5. Save the record.
  6. Change the Compile Mode to Compiled and save the record.
    • The process flow is recompiled. If you close and reopen the record, the Compile Status will automatically update to Completed (or Error if a problem occurred). If an error occurs during the compile process, select the Session Exceptions viewer for more information. The Session Exceptions viewer can be accessed from the Aptify > Session Exceptions menu item. See Using the Desktop Client Session Exception Viewer for details.

 

Navigating the Process Flow Designer

 

 

The Process Flows record provides a graphical representation of a process flow's individual steps and their corresponding possible results. You can use this designer tool to modify a Process Flow and change its appearance as necessary.


Process Flows Record with Multiple Steps
The process flow designer includes the following features:

 

About the Process Flow Designer Menus

 

 

The Process Flows record includes six menus that include the following options:

File

The following options appear under the File menu:

Button Description 
New Select this option to open a new Process Flows record.
Open Select this option to open a new Process Flows record.
Save Saves the record.
Print Prints the process flow design area. This feature is reserved for future use.
Page Setup Configures the printer for printing the design area.
Exit Closes the record.

View

The following options appear under the View menu:

Button Description

Toolbars

Select a toolbar (Main, Formatting, or View) from the pop-up menu to show a toolbar that is currently hidden or hide a toolbar that is currently shown.

View Property Sheet

If you ever close the Properties area of the Process Flows record, you can click this button to display it again.

Show/Hide Grid

Toggle this option to show or hide the design grid. When enabled, dots appear in the Designer to assist with item placement.

Snap to Grid

When enabled, items in the Designer can only be placed along grid lines. When disabled, you can place an item anywhere in the designer diagram.

Pan

Select this option to enable Pan mode. Then, click within the designer and hold the mouse button down. As you move the mouse, the designer windowpanes to show items that may not be currently visible in the designer window.

Zoom

Select this option and then click within the designer to increase the magnification of the design area.

Magnification Level

Select a magnification level from the drop-down list to resize the design area.

Properties

Select this option to show (if hidden) or hide (if currently shown) the Properties area.

Insert

The following options appear under the Insert menu:

Button Description

Select

Select this option to select an existing item in the Designer. If you selected one of the insert options, you could cancel the insert process by selecting this option.

Insert Component Step

Select this option to insert a component-based step.

Insert Sub-Process

Select this option to insert a sub-process step.

Insert Rule

Select this option to insert a rule-based step.

Insert Label

Select this option to add an informational label to the designer.

Insert Result Code Link

Select this option to insert a Result Code Link between two steps.

Debug

Button Description

Run

Select this option to launch the Debugger tool for this process flow. See Testing Process Flows for details.

Format

The options on this menu correspond to the buttons found on the Formatting toolbar. See About the Process Flow Designer Format Toolbar for details.

Help

This menu is reserved for future use. This option on this button launches the Aptify on-line help. Note that pressing F1 on the keyboard also launches the Aptify on-line help documentation.

The Aptify on-line help is out of date. The product documentation on the Aptify Online Community site is the latest up-to-date information on Aptify.

 
 

About the Process Flow Designer Main Toolbar

 

 

The Main Toolbar of a Process Flows record contains the following buttons:

Main Toolbar Buttons

Button Description
New Opens a new Process Flows record.
Open Opens an existing Process Flows record.
Save Saves the Process Flows record.
Print Prints the Process Flows diagram. This feature is button is reserved for future use.
Undo Click this button to cancel the last action performed in the Process Flow's Design area. You can click this button repeatedly to cancel the actions performed since the record was opened.
Redo Click this button to reapply the last action you cancelled by clicking the Undo button.
Cut Select an item in the Design area and click this button to remove it and place it in the clipboard for pasting. This button is reserved for future use. (You cannot currently paste the items that you cut.)
Copy Select an item in the Design area and click this button to copy it to the clipboard so it can be pasted to another location in the same Process Flow or copied to another Process Flow's Design area. This button is reserved for future use.
Paste Pastes a copied item to the current Process Flow's Design area. This button is reserved for future use.
Delete Deletes the selected item.
Run Launches the Debugger tool for this process flow. See Testing Process Flows for details.
Select Click this button to select an existing item in the Designer. You can select multiple items by holding down the Shift or Ctrl key. Also, if you clicked one of the insert options, you can cancel the insert process by clicking this button.
Insert Component Step Click this button to insert a component-based step.
Insert Sub-Process Click this button to insert a sub-process step.
Insert Rule Click this button to insert a rule-based step.
Insert Label Click this button to add an informational label to the designer.
Insert Result Code Link Click this button to insert a Result Code Link between two steps.
Show/Hide Grid Toggle this button to show or hide the design grid. When enabled, dots appear in the Designer to assist with item placement.

 

About the Process Flow Designer Format Toolbar

 

 

The Process Flow Designer Format Toolbar includes the following buttons:

Process Flow Designer Format Toolbar

Align

Align Buttons

Button Description
Align Left Edges

This button aligns all of the selected items with the left side of the item selected first. You must select two or more items in the Designer before this button becomes enabled.

Align Centers

This button centers the selected items along a horizontal line using the location of the item selected first as the baseline. You must select two or more items in the Designer before this button becomes enabled.

Align Right Edges This button aligns all of the selected items with the right side of the item selected first. You must select two or more items in the Designer before this button becomes enabled.
Align Top Edges This button aligns the top edges of the selected items using the item selected first as the baseline. You must select two or more items in the Designer before this button becomes enabled.
Align Middles This button centers the selected items along a vertical line using the location of the item selected first as the baseline. You must select two or more items in the Designer before this button becomes enabled.
Align Bottom Edges This button aligns the bottom edges of the selected items using the item selected first as the baseline.

 

Make Same Size

Make Same Size Buttons

Button Description
Make Same Width This button resizes the selected items to make them the width of the last selected item.
Make Same Height This button resizes the selected items to make them the height of the last selected item.
Make Same Height & Width This button resizes the selected items to make them the width and height of the last selected item.

Rotate

Rotate Selected Objects Buttons

   
Rotate This button rotates the selected items .
Rotate Left This button is reserved for future use.
Rotate Right This button is reserved for future use.
Flip Horizontal This button is reserved for future use.
Flip Vertical This button is reserved for future use.

Order


Button Description
Bring to Front This button is reserved for future use.
Send to Back This button is reserved for future use.
Bring Forward One Level This button is reserved for future use.
Send Backward One Level This button is reserved for future use.

Nudge

Nudge Selected Objects Buttons

Button Description
Nudge Up This button is reserved for future use.
Nudge Down This button is reserved for future use.
Nudge Left This button is reserved for future use.
Nudge Right This button is reserved for future use.

 

About the Process Flow Designer View Toolbar

 

 

The View Toolbar of a Process Flows record contains the following buttons:

View Toolbar

Button Description
View Property Sheet If you ever close the Properties area of the Process Flows record, you can click this button to display it again.
Show/Hide Grid Toggle this button to show or hide the design grid. When enabled, dots appear in the Designer to assist with item placement.
Snap to Grid When enabled, items in the Designer can only be placed along grid lines. When disabled, you can place an item anywhere in the designer diagram.
Pan Click this button to enable Pan mode. Then, click within the designer and hold the mouse button down. As you move the mouse, the designer window pans to show items that may not be currently visible in the designer window.
Zoom In/Out Click this button and then click within the designer to zoom in. To zoom out and return to the original size, mouse over the button again.
Magnification Level Select a magnification level from the drop-down list to resize the design area.

 

About the Process Flow Designer Design Area

 

 

Using the Process Flow form Design tab, a user can design and document an entire process flow, including adding and configuring steps, adding documentation labels, and formatting the process flow so that other users can understand the possible paths a process flow make take depending on a particular step's result.

When you add a step to the design area, the designer automatically uses a specific shape for the step type (a standard rectangle for Component steps, a rectangle with rounded corners for Rule steps, and a dotted-line rectangle for Sub-process steps) and adds an icon to the step. Rule-based steps all use the same icon. Component and sub-process steps use the icon specified at the Process Component or Sub-Process level.

To move an item in the designer, select an item and hold down the mouse button. Then drag the item to a new location. When finished, release the mouse button. 

To select multiple items, click one item and then hold down the Ctrl key while clicking on additional items.

 

Managing Events

 

 

The Aptify Framework provides administrators with the ability to define any number of events. The system ships with certain pre-defined generic events which are fired at appropriate times. For example, the BeforeSave event is fired by the system before saving a record. The AfterRecordCreated event is fired immediately after a record is saved for the first time.

Administrators can define any number of additional application or entity-specific events. This capability is most frequently used to narrow the scope of a more generic event. An example of a filtered event is an Order Shipped event. This event is based on the AfterSave generic event but is filtered for records in the Orders entity that have just been shipped.

In addition to defining events that are derived from generic events, administrators may define new base events which can be fired in modules designed for specific business needs. An organization can configure the system to trigger process flows in response to fired events. By linking process flows to defined events, it is possible to orchestrate complex business logic through powerful administrative utilities without any programming.

This topic contains the following sub-topics:

 

Setting Up Events

 

 

The Aptify Framework provides a great deal of flexibility without requiring any programming. For instance, a user may define an event and then set up event handlers using only the Aptify Desktop client. (Note that some new events may require additional development to raise an event through code, which would require some programming. The event model in Aptify provides the ability for a developer to raise events explicitly via code.)

This topic covers the following sub-topics:

Creating Event Definitions

The Event Definitions service stores the events that an organization can use to trigger a process flow. Aptify provides a set of events with the standard system; see About the Delivered Event Definitions for information on the set of delivered Event Definitions.

A sample Event Definitions record is shown in the figure below.

Event Definition Record

In addition, an organization can create new Event Definitions by following these steps:

  1. Open a new record from the Event Definitions service.
  2. Enter a Name for the event.
  3. Enter an event category in the Category field. This field links to the Event Categories service (see Creating Event Categories).
  4. Enter a Description for the event (required).
  5. Specify a scope for the event from the Event Scope drop-down list.
    • Select Global if the event is generic and is applicable system wide. For example, the AfterSave event is generic since it is applicable to every record in the system.
    • Select Entity if the event is related to a specific entity. For example, the Order Shipped event definition is set to Entity since it is specific to the Orders entity.
    • Select Application is the event is related to a specific application. 
  6. If this event is based on another event, enter that event in the Base Event field. This field links to another record in the Event Definitions service.
  7. If you specified a Base Event, select a Firing Sequence from the drop-down list.
    • Post-Process: This is the default setting. It specifies that this event fires after its associated Base Event.
    • Pre-Process: This option specifies that this event fires before its associated Base Event. 
  8. If you set Event Scope to Entity, enter the entity to which this event applies in the Entity field.
  9. If you set Event Scope to Application, enter the application to which this event applies in the Application field.
  10. If you specified a Base Event, click the Script tab and enter a script that defines the logic which will trigger this event.
    • The script should be in VB.NET script format; the system uses Aptify's Scripting functionality to execute your script. See Administering Scripts for more information.

      Event Definition Script
  11. Save and close the record.


Creating Event Categories

Event categories allow events to be grouped into logical business-specific categories.

  1. Open a new record from the Event Categories service.
  2. Enter a Name for the category.
  3. If you are creating a sub-category, enter the parent category in the Parent field. This field links to another record in the Event Categories service.
  4. Enter a Description for the category (optional).
  5. Save and close the record. 

    Event Categories Record

 

Linking Process Flows to Events

 

 

 

 

Aptify Process Flow functionality allows an organization to configure the system to execute business-specific logic automatically. Event handlers provide the means by which these process flows may be applied.

An organization can specify event handlers at a Global, Application, or Entity level. For example, an organization can specify a process flow that sends a notification email each time a new Companies record is created in the system. For example, a process flow is configured to send an e-mail to a customer when their order is shipped. This process flow must be linked to the Orders entity. Because it relies on a specific subset of Orders records (those with a status of Shipped), it runs only when the record is saved with a Status value of Shipped.

Because all events are cached for performance reasons, it is recommended that the user close and re-open the Aptify application after modifying existing or configuring new event handlers.

 

This topic covers the following sub-topics:

Setting Up Event Handlers

There are two ways to create, edit, and review Event Handlers:

Setting Up Event Handlers from the Event Handlers Service

This topic describes how to set up event handlers from the Event Handlers service.

  1. Open a new Event Handlers record from the Event Handlers service.
  2. Select the Event Scope of the event by selecting a type from the drop-down list.
  3. If the Event Scope is set to Global, continue on to the next step. Otherwise:
    • If the Entity Scope is set to Entity, enter an entity for the event handler in the Entity field. The grid in the lower portion of the form displays a list of all other event handlers configured for that entity.
    • If the Entity Scope is set to Application, enter an application for the event handler in the Application field. The grid in the lower portion of the form displays a list of all other event handlers configured for that application.  
      Event Handler Record
  4. Enter the event definition in the Event field.
  5. Enter the process flow to fire in the Process Flow field.
    • The input properties flow down from the process flow to the event handler's Input Map.
  6. Specify the event's Sequence if the entity or application has more than one event associated with it.
    • The sequence determines the order in which multiple events are run if more than one event handler exists for the entity or application selected. This may be critical to business-specific functionality.
  7. Configure the Input Map, as described in Configuring Event Handler Input Maps.
    • Note that for Event Handlers with a Global Event Scope, the Input Map populates automatically and cannot be edited by a user.
  8. Save and close the record.

Setting Up Events Handlers Using the Dashboard

This topic describes how to set up event handlers using the Process Pipeline Administration dashboard:

  1. Open the default Process Pipeline Administration dashboard, or another dashboard that includes the Event Handler Management component.
  2. Locate the Event Handler Management window (shown in the figure below).
      Event Handler Management Window
  3. Select an Event Scope (Global, Application, or Entity).
  4. If the Event Scope is set to Global, continue on to the next step. Otherwise:
    • If the Entity Scope is set to Application, enter an application for the event handler. The grid in the lower portion of the form displays a list of all other event handlers configured for that application.
    • If the Entity Scope is set to Entity, enter an entity for the event handler. The grid in the lower portion of the form displays a list of all other event handlers configured for that entity.

      Select Event Scope
  5. Open a new Event Handler Management record by clicking the Add Event Handler button on the Event Handler Management Dashboard.
    • If the Event Scope is set to Entity, the Entity field inherits the entity selected and is read-only.
    • If the Event Scope is set to Application, the Application field inherits the application selected and is read-only. 
  6. Enter the event definition in the Event field.
  7. Enter the process flow to fire in the Process Flow field.
  8. The input properties flow down from the process flow to the event handler's Input Map. 
    Event Handler Form
  9. Specify the event's Sequence if the entity or application has more than one event associated with it.
    • The sequence determines the order in which multiple events are run if more than one event handler exists for the entity or application selected. This may be critical to business-specific functionality. 
  10. Configure the Input Map, as described in Configuring Event Handler Input Maps.
    • Note that for Event Handlers with a Global Event Scope, the Input Map populates automatically and cannot be edited by a user. 
  11. Save and close the record.

Configuring Event Handler Input Maps

The Input Maps tab inherits a list of rows which reflect all input properties configured on the process flow selected. Each input map describes data that is used and may be required for proper functionality of the process flow. Configuration of the input maps tells the system how to access the necessary data.

You can configure the input maps directly in the grid on the Input Maps tab or you can double-click the individual rows to display an Edit Mapping dialog box. Required input properties appear in red. You must provide a source value for these properties.

The Input Map populates automatically for Global Event Handlers and cannot be edited by a user. See Capturing Message Details from a Message Run for Use in a Process Flow for an Example of a Global event handler using the AfterSendMessage Event.

Follow these steps to configure an input map:

  1. Select Source Type for the input map. Available values are:
    • Static Value: The system uses the alphanumeric text entered in the Source field.
    • Entity Field: The system uses the current record's value from a specified field in the entity to which the event handler is attached.
      • For example, if saving a new Entities record fired the Event Handler, this option retrieves the specified field's value from that new record and adds it to the Context Object, so it is available to the Process Flow.
    • SQL Statement: The system obtains a value for the input map by executing a specified SQL statement.
    • GE Object: The system obtains a value for the input map from the Generic Entity (GE) object.
      • For this option, the source is automatically set to the GE Object, and the user may not specify a value for the source.
      • This setting is suitable if a developer has created a Process Component that obtains record information from the Generic Entity interface. 

  2. Enter a Source for the input map. The format of the value for the Source field is dependent on the Source Type selected:

    • Source Type of Static Value: Enter an alphanumeric text statement. To include field data from the entity record that fired the event within the text, surround the field name with field tags (<%field name%>).
    • Source Type of Entity Field: Enter the name of a field within the entity to which the event is linked. The Event Handler retrieves the field value from the current record that fired the event.
    • Source Type of SQL Statement: Enter a SQL statement to derive the data.
    • Source Type of GE Object: The Source field is populated automatically with the GE Object entry.
      Event Handler Input Maps
  3. Enter Comments for each input map as necessary (optional).
  4. After configuring all of the input maps, click OK to save and close the record.

 

Understanding Process Pipelines

 

 

This topic contains reference information related to the Aptify Process Pipeline functionality.

This topic covers the following sub-topics:

 

About the Process Pipeline Services

 

 

This list displays the services related to Process Pipeline functionality as well as the application in which they are located. The applications listed are the default locations for the services. If the service is not available on your system, in the listed application, please contact your system administrator.

A complete listing of services and applications is located in About the Applications and their Services and About the Services and their Applications. Also, see About the Application Server Services and About the Scheduled Task Services for information on the Application Servers and Scheduled Tasks services.

 

Service

Application

Application Servers

Process Pipeline Administration

Event Categories

Process Pipeline Administration
Aptify Framework Administration

Event Definitions

Process Pipeline Administration
Aptify Framework Administration

Event Handlers

Process Pipeline Administration
Aptify Framework Administration

Process Component Categories

Process Pipeline Administration

Process Components

Process Pipeline Administration
Aptify Framework Administration

Process Flow Categories

Process Pipeline Administration
Aptify Framework Administration

Process Flow Runs

Process Pipeline Administration

Process Flow Steps

Process Pipeline Administration
Aptify Framework Administration

Process Flows

Process Pipeline Administration
Aptify Framework Administration

Scheduled Task Categories

Process Pipeline Administration

Scheduled Task Services

Process Pipeline Administration

Scheduled Tasks

Process Pipeline Administration

 

 

About the Process Pipeline Forms

 

 

This topic provides field-by-field information for every form used in or during the configuration of process flows and events. This topic is intended for use as a -reference for the various fields on these forms.

This topic documents the forms in alphabetical order. Within each form, tabs are also addressed in alphabetical order.

Note that the fields marked as required in this topic are required at the entity level. In some cases, a required field may already have a default value so a user does not need to specify a value for these fields before saving the record. To review the list of field required at the entity level, open the appropriate Service Properties dialog (by right-clicking the service in the Navigation Bar and selecting Properties) and click the Fields tab.

See About Application Server Forms for information on forms related to the Application Server and Scheduled Tasks.

 

The following forms are documented in this topic:

 

About the Event Categories Form

 

 

Event Categories records categorize Event Definitions into groups of similar functionalities. An organization creates its own categories as necessary to address specific business purposes.

Event Categories Form

Attachments Tab

The Attachments tab lists any files relevant to the Event Categories record. The tab becomes available after the record is saved for the first time.

General Tab

Name (required)

The name of the event category.

Parent

If the category being described is a sub-category of another, broader category, the parent category is linked in the Parent field. This field links to the Event Categories service.

Description

A description of the event category. 

 

About the Event Definitions Form

 

 

Aptify has a number of functional events available for use when configuring event handlers that trigger process flows. These events may be linked to entities (record events such as creating, updating, saving, or deleting a record), to applications, or may be globally applied to the entire Aptify framework.

Event Definition Form

Attachments Tab

The Attachments tab lists any files relevant to the Event Definitions record. The tab becomes available after the record is saved for the first time.

Event Definitions Tab

This tab displays any Event Definitions that use the current Event Definition as the Base Event.

Event Handlers Tab

This tab displays the list of Event Handlers that use this Event Definitions to fire a process flow.

General Tab

Name (required)

The name of the event.

Category (required)

The category of the event. This field is linked to the Event Categories service.

Description (required)

A description of the event.

Event Scope (required)

Event Scope indicates the availability of the event. By default, Entity is selected. Standard options are Entity, Application, and Global:

  • Entity: Indicates that the event is entity specific.
  • Application: Indicates that the event is specific to only one application.
  • Global: Indicates that the event is applicable to all applications configured within the Aptify system.

Base Event

The Base Event is the event from which this event inherits its functionality. Base Events are only used for Entity- or Application-specific events. This field links to the Event Definitions service.

Firing Sequence (required)

This field is only applicable when Base Event is populated. Firing Sequence determines if this event runs before or after the event selected as the Base Event. By default, post-Process is selected.

  • Pre-Process: Pre-process events fire before the event selected in the Base Event field. An error in this event may prevent the base event from running.
  • Post-Process: Post-process events fire after the event selected in the Base Event field executes successfully.

Entity

This field is applicable only if Event Scope is set to Entity; it stores the entity to which the event applies. This field is linked to the Entities service.

Application

This field is applicable only if Event Scope is set to Application; it stores the application to which the event applies. This field is linked to the Applications service.

Comments

The comments field contains any relevant details concerning the Event Definition.

Script Tab

This tab is only applicable when Base Event is populated. On this tab, you can define a VB.NET filter trigger that determines when the event is to be fired, beyond the conditions met by the base event selected. The script you enter here is saved to a Scripts record. See Administering Scripts for more information.

 

About the Event Handler Form

 

 

The Event Handler form is where event handlers are defined. Event Handlers can be created or updated from the Aptify Event Handler Management dashboard area. In this case, the Event Handler appears as shown in the figure on the left. Event Handlers records can also be opened directly from the Event Handlers service. In this case, the Event Handler appears as shown in the figure on the right.

Event Handler Form (from Dashboard)   Event Handlers Form (from Service)

Top Area

Event Scope (required)

This field is only visible when the Event Handler is opened from the service. It is a series of three radio buttons indicate the scope of the event handlers displayed. By default, Entity is selected. The choices are:

  • Global: The event handler is global in scope.
  • Entity: The event handler is specific to an entity. The Entity field is available when this scope is selected.
  • Application: The event handler is specific to an application. The Application field is available when this scope is selected.

Entity

The entity to which the Event Handler applies. For records opened from the dashboard, this field inherits the value selected on the Event Handler Management dashboard and displays as read-only when the Event Scope field on the Event Handler Management dashboard is set to Entity.

Application

The application to which the Event Handler applies. For records opened from the dashboard, this field inherits the value selected on the Event Handler Management dashboard and displays as read-only when the Event Scope field on the Event Handler Management dashboard is set to Application.

Event (required)

This field links to the Event Definitions service. The event selected determines the system event that triggers this event handler.

Process Flow (required)

The process flow run by the event handler. This field links to the Process Flows service.

Sequence (required)

If more than one event handler is created for the same event, a numerical sequence determines the order the events are called.

Active (required)

If this option is selected, the event is active and will trigger when the event is fired. By default, an event handler is active. To disable the process flow from executing temporarily, clear this option to make the event handler inactive.

Comments Tab

The Comments tab contains any comments relevant to the Event Handlers record.

Input Map Tab

This tab lists all data required for successful execution of the event handler. The tab inherits the input properties set up in the selected Process Flow. The event handler retrieves the specified data based on the Source Type and Source and provides this information to the process flow's context object.

Input Map Tab

Input Property (read-only)

The input property name.

Default Value (read-only)

The input property's default value.

Required (read-only)

Indicates whether or not the input property is required.

Source Type

Source Type indicates the method to use in order to obtain the data necessary to fulfill the input property. The value selected in Source Type drives how the Source field is populated.

Source

This field holds the actual source of the data that is provided to the Process Flow for the specified input property; the source's format is dependent on the value chosen in the Source Type field.

  • Source Type of Static Value: Source is set to an alphanumeric string which indicates a permanent and static value to fulfill the input property. This string may include field tags, as long as the field name is enclosed in <% %>.
  • Source Type of Entity Field: Source is set to a field in the entity on which the event handler is based. Applicable only when Event Scope set to Entity.
  • Source Type of SQL statement: Source is set to an SQL statement to extract the data to fulfill this input property.
  • Source Type of GE Object: Source is set automatically to the Generic Entity (GE) Object. A user may not enter a source for properties that use this source type.Info: If you assigned an input property a static value within a process flow step's Input Map, any value you enter in the event handler will not override the static value specified at the step level.

Comments

This field contains any additional details relevant to the Event Handler's Input Map. 

 

About the Event Handler Management Dashboard

 

 

 

 

 

The Aptify Event Handler Management Dashboard is a summary of all Event Handlers records defined for a specific event or application. Event handlers may be added or updated from this form.

Aptify Event Handler Management Form Dashboard

Event Scope (required)

A series of three radio buttons indicate the scope of the event handlers displayed. By default, Entity is selected. The choices are:

  • Global: Displays all global event handlers in the grid at the bottom of the Event Handler Management form. New event handlers created with this scope are applied globally.
  • Entity: Displays all event handlers associated with the entity selected in the Entity field. Sets new event handlers as specific to this entity.
  • Application: Displays all event handlers associated with the application selected in the Application field. Sets new event handlers as specific to this application.

Entity

The entity specified in this field filters the event handlers listed in the grid. Also, new Event Handlers added from the form are applied to this entity. This field is applicable only when Event Scope is set to Entity.

Application

The application specified in this field filters the event handlers listed in the grid. Also, new Event Handlers added from the form are applied to this application. This field is applicable only when Event Scope is set to Application.

Add Event Handler Button

Clicking this button allows the user to add a new event globally, for the specified entity, or for the specified application (depending on the selected Event Scope). 

 

About the Output Properties Form

 

 

An Output Properties record maintains information about data that is generated by a subprocess or a process component that is required by another step of a process flow. These records may only be created from the Output Properties tab of a Process Flows or Process Components record.

Output Properties Form

General Tab

Name (required)

The name of the output property.

Description

A brief description of the data returned by the process flow.

Type

The data type of the output property. Standard values are String, Integer, Long, Currency, Decimal, Date/Time, Boolean, and Object. By default, String is selected.

Property Page Tab

This tab is used to define a custom property viewer for the specified output property. Note that if a custom property user interface is defined at the process component level, the property viewer defined on this tab will be ignored. See Using the Generate Data Mapper Process Component Wizard for information on defining customer property sheets for a process component as a whole.

Output Prop Page Object

The object containing the custom property viewer for this output property. This field links to a location in the Aptify Object Repository.

Output Prop Page Assembly Name

The Object's .NET assembly name.

Output Prop Page Class

The Class in the Object that contains the customer property view for this output property.

 

About the Process Component Categories Form

 

 

The Process Component Category form creates a category record for a Process Component.

Process Component Categories Form

Attachments Tab

The Attachments tab lists any files relevant to the Process Component Categories record.

General Tab

Name (required)

The name of the category.

Description

A brief description of the category.

Parent

If this category is a child of another category, specify the parent in the Parent field.

Icon

This field specifies the Object Repository location of an icon to associate with this category, if desired. This icon has no associated functionality. The system specifies an entity's icon in this field for categories created automatically for CRUD (Create, Retrieve, Update, and Delete) Components. See About the CRUD Process Components for more information. The icon specified here is also applied to all of the CRUD components.

 

About the Process Components Form

 

 

Process flow components are the building blocks of a process flow that define the actual functionality used and are called by process flow steps.

Process Components Form

Attachments Tab

The Attachments tab lists any files relevant to the Process Flow Components record. The tab becomes available after the record is saved for the first time.

General Tab

Name (required)

The name of the process flow component.

Description

Description of the component.

Object (required)

The Object containing the functionality for this component. This field links to a location in the Aptify Object Repository.

Assembly Name

The Object's .NET assembly name.

Class (required)

The class in the Object that contains the functionality for this component.

Icon Large

This field specifies an icon from the Aptify Object Repository. Note that Icon Large is not currently in use.

Icon Small

An icon from the Aptify Object Repository that displays when the component is used by a process flow step. The chosen image appears as the icon for the associated process flow step in the process flow designer.

Init Data

If the component you have specified is generic in nature, specify any additional initialization information in this field. The CRUD components all use the same generic components. The system uses this field to identify a particular entity for the generic CRUD (Create, Retrieve, Update, and Delete) component. See About the CRUD Process Components for more information.

Allow Custom Result Codes

When selected, the New Map button appears on Action Map tab for steps that use this component. A designer can then add new result codes for this component if needed. When cleared (the default setting), the New Map button is not available.

Input Properties Tab

Input Properties identify data that may be required for steps in the process flow component to correctly execute. This tab provides a list of related Input Properties records for the component. See About the Input Properties Form for details.

Output Properties Tab

This tab lists identifies data produced by the component that can be used by other steps in a process flow. See About the Output Properties Form for details.

Property Page Tab

This tab is used to define a custom property user interface for the input and output properties associated with this component. The figure below is an example of a custom property sheet for the Send email component included with the standard installation of Aptify. If you want to customize the way a single property is viewed, you can define a customer property viewer at the input or output property level. See Using the Generate Data Mapper Process Component Wizard or Defining Process Component Output Properties for details.

Custom Property Sheet for Send Email Component

Prop Page Object

The object containing the custom property user interface for this component. This field links to a location in the Aptify Object Repository.

Prop Page Assembly Name

The object's .NET Assembly name.

Input Prop Page Class

The Class in the Object that contains the custom property sheet for the Input Properties associated with this component.

Output Prop Page Class

The Class in the Object that contains the customer property sheet for the Output Properties associated with this component.

Result Codes Tab

This tab lists the possible outcomes after the component is run. Each possible outcome corresponds to a result code. For example, if the component contains the functionality to send an email, result codes could be Mail Sent and Failed. See About the Result Codes Form.

 

About the Process Flow Categories Form

 

 

Process flow categories provide a means for categorizing process flows in business-specific functional groups.

Process Flow Categories Form

Attachments Tab

The Attachments tab lists any files relevant to the Process Flow Categories record. The tab becomes available after the record is saved for the first time.

General Tab

Name (required)

The name of the process flow category.

Description

A description of the process flow category.

Parent

If the category being described is a sub-category of a broader category, the parent category is linked in the Parent field. This field links to the Process Flow Categories service.  

 

About the Process Flow Runs Form

 

 

The Process Flow Run record captures information about the execution of an asynchronous Process Flow. Aptify automatically creates a Process Flow Run record under the following conditions:

  • Each time an event triggers an asynchronous Process Flow
  • Each time a Scheduled Task is run

Each record contains information about the progress and result for a single execution of a Process Flow. This information includes the time at which the Process Flow was executed, the input properties used to fulfill the Process Flow, and the current status of the run (Complete, In-Progress, Pending, or Error).

See About Application Server Forms for information on the forms related to Application Servers and scheduled tasks.

Aptify automatically creates Process Flow Run records as necessary; you should not create or update these records manually.


Process Flow Runs Form

Attachments Tab

The Attachments tab lists any files relevant to the Process Flow Run record.

General Tab

Process Flow

The process flow that has been or will be executed by this Process Flow Run. This field links to the Process Flows service.

Date Recorded

The date and time at which the Process Flow Run record was created.

Priority

The priority of the Process Flow Run. Options are Low, Medium, and High. By default, this value is set to Medium for Process Flow Runs that are triggered by an Event Handler. For Scheduled Tasks, you can assign a priority. Application servers process pending runs with the highest priority first.

Status

The status of the Process Flow Run. The options are:

  • Pending: The Process Flow Run is ready to execute. During the polling process, an Application Server looks for Pending Process Flow Runs to execute.
  • In-Progress: The Process Flow Run has started but is not yet complete.
  • Complete: The Process Flow Run has completed.
  • Error: The Process Flow Run failed to execute due to an error.

Error Message

Any error messages received during the execution of the Process Flow appears in this field.

Error Status

The status of the error, if an error was received. The options are:

  • No Error: The Process Flow Run completed without error.
  • Pending: The Process Flow Run encountered an error during execution. The Status changes to Error and the Error Status changes to Pending.
  • Resolved: For tracking purposes, an administrator can manually change this status to Resolved after the cause of the error has been identified.

Application Server

The Application Server that has been assigned to execute this Process Flow Run. An Application Server that has Process Untargeted Runs disabled will only execute Process Flow Runs that are assigned to it. This links to the Application Servers service.

Scheduled Task

The scheduled task that created this Process Flow Run, if applicable. This links to the Scheduled Tasks service.

Job Type

This field is reserved for future use.

Process Flow Run Time

This field contains the data and time at which the Process Flow Run became available for processing by an Application Server.

Process Flow Start Time

The date and time at which an Application Server downloaded this Process Flow Run for execution.

Process Flow End Time

The date and time at which an Application Server completed this Process Flow Run and reported the results to the Aptify system.

Task Sent to Server

A check mark in this field indicates that an Application Server has downloaded this Process Flow Run.

Client Machine Name

The name of the Application Server that ran (or is running) the asynchronous Process Flow. This field is automatically populated with the server's name at the time that the task is sent to a server.

Process Flow Result Code

The result code returned by the Application Server after it has run the Process Flow.

Success

When selected, this check box indicates that the Result Code supplied by the server means that the Process Flow executed successfully. When a Process Flow Result Code is present and this check box is cleared, this indicates that the Process Flow execution failed.

Input Map Tab

The Input Map tab lists the values used to fulfill the input maps for the specified Process Flow. This information flows down from the Event Handler or Scheduled Task that triggered the run.

 

About the Process Flows Form

 

 

Process flows describe a discrete piece of functionality within Aptify, including process steps, data required, and data retrieved.

See Managing Process Flows for information on using a Process Flows record. Note that your computer must have at least one printer installed to open a Process Flows record.

Process Flows Form

Menu & Toolbars

See Navigating the Process Flow Designer for details.

Top Area

Name (required)

The name of the process flow.

Description

The description of the process flow.

Category (required)

The category for the process flow. This field links to the Process Flow Categories service.

Attachments Tab

The Attachments tab lists any files relevant to the Process Flows record.

Comments Tab

The Comments tab contains any comments relevant to the Process Flows record.

Design Tab

This tab displays the Process Flow Designer. See Setting Up Process Flow Steps and Navigating the Process Flow Designer for information on using this tab.

Details Tab

Execution Mode (required)

Execution Mode determines the timing of the process flow when it is run. The default value is Synchronous.

  • Synchronous: Requires that the process flow complete successfully prior to returning control to the calling event. In other words, the process flow is run immediately following the event that triggered it, and all other processing is put on hold until this flow has ended without error.
  • Asynchronous: Allows all other processing for the application to continue while the process flow runs, despite success or failure of the flow.

Execution Location (required)

Execution Location defines where execution of the process flow takes place. Options available are:

  • Local: Selected by default. Indicates that processing for the process flow takes places on the local client machine.
  • Server: Indicates that processing for the process flow takes place on an application server and not on the client machine.

Compile Mode (required)

This field specifies the process flow's compile type. If this field is set to Compiled, the process flow is compiled upon saving, and the Compile Object, Compiled Assembly Name, and Compile Class fields are automatically populated with the names of the compiled files. By default, the field is set to Interpreted, and the process flow is not compiled.

Compile Status (required)

The status of the process flow defaults to Incomplete but is set automatically to Complete when the process flow record is saved with a Compile Mode of Compiled. If there is a problem with the compile process, the status changes to Error.

Compiled Object

When the process flow is compiled, the system automatically populates this field with the name of the object created by the compiler that defines the functionality for the process flow.

Compiled Assembly Name

When the process flow is compiled, the system automatically populates this field with the .NET assembly name of the object created by the compiler that defines the functionality for the process flow.

Compiled Class

When the process flow is compiled, the system automatically populates this field with the name of the class created by the compiler that defines the functionality for the process flow.

Icon Small

An icon from the Aptify Object Repository that displays when this process flow is used as a sub-process within another process flow. The chosen icon appears in the visual diagram of the Parent process flow.

Icon Large

This field specifies a pixel icon from the Aptify Object Repository. Note that Icon Large is not currently in use.

Connection State Options

This field is reserved for future use. It should be set to AlwaysAvailable for all Process Flows records.

Failover Process Flow

This field is reserved for future use.

Execution Rules Object

This field is reserved for future use.

Execution Rules Assembly

This field is reserved for future use.

Execution Rules Class

This field is reserved for future use.

Input Properties Tab

Input Properties identify data that may be required for steps in the process flow to correctly execute. This tab provides a list of related Input Properties records for the Process Flow. The properties specified on this tab populate the process flow's Context Object. See About the Input Properties Form for more information.

Output Properties Tab

Output Properties identify data that may be produced as a result of a successful run of this process flow. This tab lists all Output Properties records associated with the process flow. See About the Output Properties Form for more information.

Process Flow Tab

The Process Flow tab shows a visual representation of the steps associated with this process flow. See Navigating the Process Flow Designer for more information.

Properties Area

This area of the form displays the properties of the item (including a Process Flow Step, Result Code Link, or Label) currently selected in the Process Flow Designer.

Result Codes Tab

This tab lists all the possible results that could be expected from execution of the process flow. Each result corresponds to a Result Code. For example, if the process flow contains the functionality to send an email, result codes could be Mail Sent and Failed.

Also, these result codes automatically flow down to any steps that use this process flow as a sub-process. See About the Result Codes Form for more information on Result Codes.

Security Tab

A Process Flow's security settings are reserved for future use. All users can exist a Process Flow, regardless of its security settings.

 

About the Process Flow Steps Form

 

 

Each step in a process flow contains detailed information that defines the step's functionality. Each step may be based upon an existing process component within Aptify, based on a subprocess, or built from a code-based rule. Note that each step can only be associated with one process flow.

Also, in general, a user does not need to open individual Process Flow Steps records. All of the step configuration can be performed using the Process Flow Designer.

Process Flow Steps Form

Top Section

Name (required)

The name of the process flow step.

Description

The description of the process flow step.

Process Flow (required)

The process flow associated with this step. This field is linked to the Process Flows service.

Action Map Tab

Each process component within Aptify is built so that execution may result in one or more results. For example, a Send email component may have two expected outcomes: Mail Sent or Failed. These results are listed in the Result Codes tab on Process Components and Process Flows records.

The Action Map tab inherits a list of all the result codes specified for the component or subprocess selected on the step's General tab.

Typically, you configure a step's Action Map tab directly within the Process Flow Designer.

Action Map Tab

Result Code (read-only)

The name of the action. This value is inherited from the result codes defined for the component or sub-process selected on the step's General tab.

Description (read-only)

The description of the result code.

Action

Each Result code can either end the process flow or continue the processing to another process flow step. The value selected in the Action field determines which course to take. Standard values are:

  • Go to Step: The process flow continues to the step selected in the Go To Step field if this result is achieved.
  • End Process: The process flow ends once this result is achieved.

Go to Step

This field is only applicable if Action is set to Go to Step. An ellipsis (...) button displayed on the field allows the user to select the next Process Flow Steps record to run if this result code is the result returned by the current step. Note that only steps that are associated with the same Process Flows record appear in the Next Step link box.

Process Flow Result Code

This field is only applicable if Action is set to End Process. Enter a corresponding result code from the associated Process Flow's Result Codes tab in this field.

Attachments Tab

The Attachments tab lists any files relevant to the Process Flow Steps record. The tab becomes available after the record is saved for the first time.

General Tab

Type (required)

This field indicates the type of step created. Steps may be based on Components, Rules, or Sub-Processes. The default value is Component.

Process Component

This field is applicable only when Type is set to Component. It links to the Process Components service.

Sub Process Flow

This field is applicable only when Type is set to Sub-Process. This links to the Process Flows service, linking the step to an existing process flow. This step calls an existing process flow instead of a component, allowing more complicated process flows to take advantage of simpler process flows already created.

(Rule) Textbox

This unlabeled field is applicable only when Type is set to Rule. A user enters the text of the step's rule in this field.

Rule Type (required)

The type of rule used. Choices are VBScript or SQL. The default is VBScript. This field is applicable only when Type is set to Rule. See Administering Scripts for information on writing scripts in Aptify.

Input Map Tab

The Input Map lists the data that the step expects to receive from the system so it can function as expected.

If either Component or Sub-Process are chosen on the General tab, the Input Maps tab inherits a list which mirrors the Input Properties defined on the component or sub-process selected. If the Type field on the General tab is set to Rule, input maps may only be manually defined.

Double-click an input map to open the Edit Mapping dialog.

Input Map Tab

Input Property

The name of the input property. Typically, this field is read-only and inherited from the input properties defined on the component or sub-process selected on the General tab. For rule-based steps, a user manually can manually create a new input map and specify an input property name.

Required

Indicates whether the input property is required. Values are True or False.

Source Type

Source Type indicates where the Input map data comes from. The available values are Static Value, Context Object, and Formula.

Source

This field holds the actual source of the data for the Input Map. The information that goes in this field is determined by the value chosen in the Source Type field.

  • Source Type of Context Object: The Source field automatically populates with the list of input properties defined on the Process Flow's Input Properties Tab. Select the appropriate input property from the list. Note that an error message appears if you have either not assigned a Process Flow to this step or if the specified Process Flow does not have any Input Properties configured.
  • Source Type of Static Value: The source is set to an alphanumeric string. This value takes precedence over any value entered for this Input Property later in the process flow.
  • Source Type of Formula: The source is a SQL statement that extracts the required information from the database to fulfill this Input Map.

Comments

The Comments field contains any additional details relevant to the input map.

Output Map Tab

This tab lists all data returned by the step and where it is to be stored. The behavior varies depending on the step's type:

  • Type of Component: The tab inherits a list which mirrors all the output properties defined for the process component specified on the step's General tab.
  • Type of Sub-Process: The tab inherits a list which mirrors all the output properties defined on the Process Flows record chosen in the Sub-Process field on the General tab.
  • Type of Rule: No output properties are inherited, and none may be manually created.

While no Output properties may be added or deleted, each individual Output Property record may be modified directly in the grid.

Output Map

Output Property (read-only)

The name of the Output Property record.

Destination Type

The destination type determines how data returned is to be processed. Available options are:

  • Context Object: Indicates that the data returned is added to the process flow's context object for use by another step later in the process flow.
  • Log: Indicates that the data returned is captured in a log, and not used for further processing.

Destination

The destination for data returned:

  • Destination Type of Context Object: The name of the data as it is stored in the Context Object.
  • Destination Type of Log: The network mapping of the log location.

Comments

The Comments field contains any additional details relevant to the output property.

 

About the Result Codes Form

 

 

Results Codes describe the possible outcomes of a process flow or process component. Result Codes records may only be created from the Result Codes tab of a Process Flows or Process Components record.

Result Codes Record

Code (required)

The name of the result code.

Description (required)

The description of the result code.

Success

If this option is selected, the result corresponds to the successful execution of the component or process flow. If the option is not selected, the result code indicates a process failure, and an error log is generated when this result is obtained. 

 

About the Process Pipeline Standard Configuration Items

 

 

This topic briefly describes the Process Pipeline configuration items that are delivered with the standard Aptify application. This includes process components, event definitions, for information on organization-specific components or event definitions, please contact your system administrator.

This topic includes the following sub-topics:

 

About the Delivered Process Components

 

 

The process components available with the standard installation of Aptify are listed below by Process Component Category. This topic also provides information on the CRUD (Create, Read, Update, and Delete) components that are automatically created during an entity save.

 

About the CRUD Process Components

 

 

Each time you save a new entity (including sub-types), Aptify automatically generates four Process Components that create, read/load, update, and delete records for that entity. Since each component is tailored for a specific entity, developers can quickly and easily incorporate these components as steps in process flows.

Each component corresponds to a piece of generic system functionality that accepts the entity's name as an initialization parameter (specified in the Init Data field). In addition, Aptify automatically populates the Input Properties for the Create and Update components to include all of the fields in that entity.

If an entity does not have these components already generated, you can regenerate the entity, which will then generate these components. See Regenerating an Entity for information on how to regenerate an entity.

The following is an overview of the four components:

  • Create [Entity Name] Record: This component creates a new record for the designated entity. The Input Properties Tab specifies all of the fields in that entity and a SaveRecord flag (which you set to Yes to save the record immediately and No to defer the save function). Fields required to successfully save a new record are marked as Required properties. For sub-type entities, the parent entity's GE object is also included as an Input Property. The Output Properties Tab specifies a GE object and Record ID that can be passed into other steps/processes.

  • Load [Entity Name] Record: This component loads/reads an existing record for the designated entity. The only Input Property for this type of component is RecordID. For subtype entities, the Input Properties are the parent entity's GE object and the sub-type record's Sequence. A developer can use this component to load a specific record into the Process Flow's context object. The Output for this type of component is a GE object.

  • Update [Entity Name] Record: This component updates an existing record in the designated entity. The Input Properties Tab specifies all of the fields in the entity, the RecordID, a SaveRecord flag, and a GEObject. For sub-type entities, the Input Properties include the fields in the sub-type, the parent entity's GE object and the sub-type record's Sequence. The Output Properties Tab specifies a GE object and Record ID that can be passed into other steps/processes.

  • Delete [Entity Name] Record: This component deletes an existing record for the designated entity. The Input Properties Tab specifies a RecordID and a GEObject. For sub-type entities, the Input Properties are the parent entity's GE object and the sub-type record's Sequence. There are no Output Properties for this type of component.

CRUD Best Practices

  • When designing a process flow that operates on a sub-type entity using one of the CRUD components, you need to pass in the GEObject for the sub-type record's parent via the Context Object to the sub-type component's step. You can do this in one of two ways:
    • If an event from the parent record fires the process flow, you can specify the GEObject as an Input Property for the Process Flow. Then, pass in the parent record's GEObject as part of the Event Handler.
    • If an event in an unrelated entity fires the process flow, use the top-level entity's Load component to load the desired record and then pass its GEObject into the Context Object (GEObject is an Output Property for the Load component). Once in the Context Object, you can specify the parent GEObject as an Input Property for the sub-type component's step.

  • When designing a process flow that uses CRUD components, consider the frequency and impact of save operations, and try to minimize the number of save operations for best performance.

  • For example, If a process flow creates a subtype record in a top-level record based on a change in that top-level record, use a before save event as the basis for the Event Handler. Then, within the sub-type component step, set the SaveRecord input property to No for a deferred save. In this case, the toplevel record, with any applicable sub-type record changes, is saved after the process flow has executed.

  • Continuing from the example above, consider the ramification of the following designs for a process flow that creates a new sub-type record when a new top-level record is saved:
    • Event: BeforeRecordCreated 
      Step SaveRecord Input Value: No 
      Result: Process Flow fires before record is saved and creates a sub-type record. The Save is deferred until after the process flow completes. There is one save operation and one Record History entry associated with this transaction.

    • Event: BeforeRecordCreated 
      Step SaveRecord Input Value: Yes 
      Result: Process Flow fires before record is saved and creates a sub-type record. The process flow attempts to save the sub-type record to a top-level record that doesn't exist yet, creating an invalid state and an error.

    • Event: AfterRecordCreated 
      Step SaveRecord Input Value: Yes 
      Result: Process Flow fires after record is saved and creates a sub-type record, followed by another save operation to save the sub-type record. This operation is successful but two save operations occur (and two Record History entries) when one would have sufficed. Also, if the designer used the AfterRecordUpdated event in place of AfterRecordCreated in this scenario, Aptify would enter an infinite loop since each sub-type save would fire the process flow, which would create another sub-type record, etc.

    • Event: AfterRecordCreated 
      Step SaveRecord Input Value: No 
      Result: Process Flow fires after record is saved and creates a sub-type record. At some point, another save would be required to save the sub-type record, typically by another step in the process flow.

 

About the Standard Process Components by Category

 

 

This toic lists the process components, broken down by category is as follows: 

Entity Operations

The process components in this category primarily corresponds to the CRUD (Create, Read, Update, and Delete) components created automatically when an administrator saves an entity. See About the CRUD Process Components for details. Note that the items in the (Not Categorized) category are also CRUD components.

In addition to the CRUD components, the following components are in an entity-specific sub-category for this category:

  • Company Abbreviated Name Flowdown: This object handles the flow-down of a company name from the Companies entity's Name field into the AbbreviatedName field which is used to store the short/acronym version of a company name. The default functionality in the component automatically populates this field from the Company Name as long as the Abbreviated Name has not previously been manually overridden by the user (this is tested by checking the old value of the Name field of the Company against the value of AbbreviatedName using the same Abbreviated Name generation).

  • Company Directory Sort Flowdown: This object handles the flow-down of a name from the Companies entity's Name field into the DirSort field which is used to handle sorting and searching without special characters. The default functionality in the component automatically populates this field from the Company Name as long as the DirSort has not previously been manually overridden by the user (this is tested by checking the old value of the Name field of the Company against the value of DirSort). In addition, this object will also auto-populate the DirLetter field with the first character in the Name, using the same logic as described above.

  • Scheduled Transaction Group Expansion By Product: This component expands the Scheduled Transaction Groups in a specified View into Scheduled Transactions record based on a supplied Product ID. An administrator can create a Process Flow that uses this component to automatically expand Scheduled Transaction Groups on a pre-determined schedule (as specified in a Scheduled Tasks record). The Scheduled Task fires the Process Flow at the specified time, and an Application Server then expands the scheduled transactions. This process component accepts the following Input Properties to configure its behavior:

    • SQLWorkingSet: A SQL Statement that returns the IDs of the Scheduled Transaction Groups to expand. If configured, this parameter takes precedence over the ViewID input property. Note that if this parameter is an empty string and the ViewID property is less than or equal to 0, the process component expands all of the pending Scheduled Transaction Groups that have not yet been expanded and that match the specified ProductID (see below).

    • ViewID: The ID of a View of the Scheduled Transaction Groups service that defines the working set of Scheduled Transaction Groups to expand. Note that if the ViewID is less than or equal to 0 and the SQLWorkingSet property is an empty string, the process component expands all of the pending Scheduled Transaction Groups that have not yet been expanded and that match the specified ProductID (see below).

    • ProductID: When specified, the process component expands only the Scheduled Transaction Groups whose ProductID equals the ID specified for this Input Property. Note that if the ProductID is less than or equal to 0, the process component expands all of the pending Scheduled Transaction Groups returned by the SQLWorkingSet or ViewID.

Accounting

  • Cash Control Batch Demo Import Object: This component provides a default/demo implementation of cash control batch imports from a lock box or other file.

  • Cash Control Batch Match Object: This component is responsible for matching items in an existing cash control batch and will match items that have not previously been matched and update the information in the Cash Control Batch Detail.

  • Cash Control Batch Post Object: This component is responsible for posting an existing cash control batch and posts line items that have been matched or have resolved exceptions.

  • Create GL Export Batch: This component creates a GL Export Batch for Orders, Payments or Scheduled Transactions.

  • Mark A/R to Market: This component corresponds to Aptify's Mark to Market object used to record gains and losses due to foreign currency fluctuations.

Calendar

  • vCalendar Writer: This component can automatically generate a vCalendar (VCS) file that contains meeting information that a customer/member can import into Microsoft Outlook to create an Outlook Appointment.
    • Used in conjunction with a process flow, this component can automatically send meeting registrants a vCalendar item that corresponds to an event's date and time so registrants can easily add the appointment to their Outlook Calendars.
    • This component supports several Input Properties, including properties that correspond to the calendar item's Start Date/Time, End Date/Time, and Summary (appointment title). Note that if you want to specify a file name for the calendar file using the OutputFilename property, you must enter the full path for the file, not just the file name (for example, enter C:\TEMP\vCalendar.vcs rather than vCalendar.vcs). Note that if OutputFilename is left blank, Aptify automatically generates a .vcs file for you.
    • The component also supports two Output Properties to pass the vCalendar file (the OutputFileName property) or the text of the vCalendar item (vCalendarText property) to another step in a process flow. For example, you can pass a generated vCalendar file as an attachment to an email by passing the OutputFileName output object to the Attachments input property for the Send Email component.
    • Note that Aptify has included the vCalendar standards document as an attachment to the vCalendar Writer Process Components record to assist developers who will utilize vCalendar functionality.

Campaign Management

  • Campaign List Builder Component: This component runs the Campaign List Builder process to add persons from campaign segments as campaign prospects.

  • Campaign List Import File Process: This component imports items from a Campaign import file into a specified Import Runs record.

  • Campaign List Match Process: This component is responsible for matching items in a Campaign import list with records that may already exist in the database.

  • Campaign List Post Process: This component is responsible for posting items in the Campaign import list and for creating new records as necessary for unmatched records.

Chapter Management

  • Get Chapter ID: Used in conjunction with the Chapter Management add-on application for Aptify e-Business, this component can execute a Chapter Proximity Rule to identify the nearest chapter for a particular person or company.

Committee Management

  • Add Persons to Committees: This component adds persons to committee terms.

Contact Management

  • Outlook Contact Log Import: This component imports emails from Microsoft Outlook into Aptify as Contact Log records.

General

  • Aptify FTP Upload Component: This component is used to upload a file to an FTP site and can use an Aptify user account's username and password for authentication. Note that your Aptify installation and user account (if using authentication) must have access to a configured FTP site to use this component. This component supports the following input and output properties.
    • FTP Site URI: This input property specifies the location of the FTP site, for example ftp.ABCCompany.com.
    • FTP Folder: This input property specifies the folder on the FTP site where the file needs to be uploaded.
    • FTP User Account: This input property specifies the user account for authentication into the FTP site. If the FTP site does not require authentication, this property can be left blank.
    • FTP Password: The password associated with the FTP User Account. If the FTP site does not require authentication, this property can be left blank.
    • Local Folder: This input property specifies the local location of the file to be uploaded. For example, c:\FTPUpload
    • Local File Name: This input property specifies the name of the local file to be uploaded.
    • Upload Results: This output property contains the result message string of the upload process and can be used by other steps of the process flow.

  • Aptify FTP Download Component: This component is used to download a file from an FTP site and can use an Aptify user account's username and password for authentication. Note that your Aptify installation and user account (if using authentication) must have access to a configured FTP site to use this component. This component supports the following input and output properties.
    • FTP Site URI: This input property specifies the location of the FTP site, for example ftp.ABCCompany.com.
    • FTP Folder: This input property specifies the folder on the FTP site where the file needs to be downloaded from.
    • FTP User Account: This input property specifies the user account for authentication into the FTP site. If the FTP site does not require authentication, this property can be left blank.
    • FTP Password: The password associated with the FTP User Account. If the FTP site does not require authentication, this property can be left blank.
    • Local Folder: This input property specifies the local location where the file should be downloaded to. For example, c:\FTPDownloads.
    • Download Results: This output property contains the result message string of the download process and can be used by other steps of the process flow.

  • Input Box: This component displays a message to the user and allows the user to type in a text field to respond.

  • Load Data Table: Using the SQL input provided by a developer, this component loads a data table into the process flow. This component supports the following input and output properties:
    • SQL: This input property specifies a SQL statement to run to populate a data table. This can be a SELECT statement or execute a stored procedure.

    • CacheSetting: Depending on the design of the process flow, it is possible that the same Load Data Table step may execute multiple times in a single run. In this case, a developer can set this input property to determine how to re-run this step:
      • ByPassCache: This is the default setting for this input property. The component passes the SQL statement to the server without checking the cache, and the results of the SQL statement are not stored in the cache.
      • UseCache: If the data table already exists within the process flow's context object, the process flow uses the existing cache and does not rerun the SQL input.
      • Refresh Cache: If the data table already exists within the process flow's context object, the process flow refreshes the cache but does not rerun the SQL statement.
      • DataTable: This output property passes the generated .NET Data Table Object to other steps in the process flow (typically to a step using the Get Data Table Value or Move Data Table component).

  • Get Data Table: Once you have loaded a Data Table into the process flow (typically using a Load Data Table step), you can use this component to retrieve a value from a particular field for a particular row in the data table. This component supports the following input and output properties:
    • DataTable: This input property specifies a .NET Data Table Object. Typically, you pass the DataTable object into the Context Object using a Load Data Table step. This Input Property allows the Get Data Table Value step to use that Data Table you previously load.
    • Field: This input property identifies a particular field in the data table. In conjunction with CurrentRow, this component retrieves a value for this field from a particular row in the Data Table.
    • CurrentRow: This input property identifies the row in the Data Table from which the value should be retrieved (note that Row 0 is the first row in a Data Table). If you store the CurrentRow in the context object, you can set it initially via an Event Handler or Scheduled Task and then dynamically update it using the Move Data Table component.
    • Value: This output property passes the retrieved value into the context object for use by other steps in the process flow.

  • Move Data Table: This component moves to a new row in the Data Table based on the input properties provided. Using this component, you can create a series of repeatable steps that retrieve a value from a row, process that value, move to the next row in the table, and then repeat the previous steps to retrieve and process the value. This would continue until the end of the table is reached. (While this component supports the standard SUCCESS and FAILED result code, it also includes result codes for EOF (End of File) and BOF (Beginning of File) so you can determine a course of action (such as End Process) when the start or end of the table is reached.) This component supports the following input and output properties:
    • DataTable: This input property specifies a .NET Data Table Object. Typically, you pass the DataTable object into the Context Object using a Load Data Table step. This component moves to a new row in that table.

    • CurrentRow (Input): This input property identifies the current row in the Data Table that serves as the starting point for this component. Depending on the Type selected (described below), the component can move up one row or down one row from this current row.

    • Type: This input property identifies the movement within the Data Table:
      • MoveNext: Move to the next row in the table.
      • MoveFirst: Move to the first row in the table.
      • MoveLast: Move to the last row in the table.
      • MovePrevious: Move back one row in the table.
      • CurrentRow (Output): This output property specifies the new row position after the Move Data Table operation. This value can then be passed to other steps within the process flow to process information from that particular row.

  • Message Box: This component displays a message box to the user and captures the response from the user.

  • Run Entity Bulk Operation: This component automates the execution of entity bulk operations. It operates on the set of records defined by the ViewSQL, ViewID, or SelectionList input property. The component reviews the provided input values in order from ViewSQL, to ViewID, and finally to SelectionList, and uses the first value that is not blank to generate the recordset for the entity bulk operation. For example, if a developer provides a value for all three input properties, then the component will use the ViewSQL input since it is evaluated first. This component supports the following input properties:
    • EntityBulkOperationID: This specifies the ID of the Entity Bulk Operation to execute.
    • ViewSQL: This input specifies a SQL Statement that returns the set of records to which the Entity Bulk Operation is applied.
    • ViewID: This input specifies the ID of a Views record within Aptify that returns the set of records to which the Entity Bulk Operation is applied. This property is only used when the ViewSQL property is blank.
    • SelectionList: This input specifies a comma-delimited list of Record IDs to which the Entity Bulk Operation is applied. This property is only used if both the ViewSQL and ViewID properties are blank.

  • Value Retriever: This component is used to retrieve values from a GE object, from an entity in the database, or from the context object. Simply provide the Entity Object or Entity Name and Record ID and provide the field name to be retrieved and the value will be returned as the RESULT CODE for the component. Alternatively, specify the Value property which will be used directly for a value comparison which can allow for simple branch conditions based on the result code of this component.

  • Value Tester: This component is capable of testing any value against another value. It is useful for doing quick checks against database, GE Object, and context object values to determine workflow logic and other business rule processing.

Generic Wizard

  • Set Wizard Result: This component is used to specify a next step for a metadata wizard based on a previous result. It provides administrators and developers with the ability to define conditional logic in wizards.

Housing

  • Housing Import: Imports Housing/Hotel Information from file(s) provided by a hotel, including confirmation numbers for each reservation processed.
  • Housing Transfer: Transfers (exports) Housing reservation information from the Aptify to a file or files that can be sent to a hotel for processing.

Messaging

  • Message Engine: Provides the functionality to send a Message Run for the Aptify Messaging system. Accepts the specified Message Run ID and then sends the messages associated with that ID.
  • Send Email: Provides functionality to send an email (including attachments), allowing the user to define the sender and recipient, as well as the text included.
    • The Send Email component that is included in the standard installation of Aptify uses a customized property user interface as shown in the figure below. See Using the Generate Data Mapper Process Component Wizard for information on how to define customer property sheets for process components.

Send Email Component Custom Properties Sheet

Order Entry

  • Order Credit Check: This component checks to see if a Person's or Company's credit is approved or declined for a given Order.
  • PaymentGenGL: This component generates GL entries for Payments records.
  • Standing Order Fulfillment: This component fulfills standing orders.

Process Flow Engine

  • Compile Process Flow Component: This is the component that compiles a process flow into a .NET assembly after you save a Process Flows record with Compile Mode set to Compiled. See Using the Process Flow Compiler for details.

Scheduling Components

  • RemoteSchedulerDelete: The system uses this component to delete a Scheduled Tasks whose Service is set to Remote Scheduler. This allows non-administrative users to indirectly delete Scheduled Tasks on an Application Server.

  • RemoteSchedulerUpdate: The system uses this component to update a Scheduled Task's Service from Remote Scheduler to Windows Scheduler. This allows non-administrative users to indirectly create or modify Scheduled Tasks on an Application Server.

Subscription Processing

  • Renew Subscriptions: This component invokes the Aptify.Applications.Subscriptions.SubscriptionRenewal class to renew subscriptions based on the provided Input Properties, including specifying a due date.

Viewing System

  • Execute View with No UI: This component is used by the system's View Scheduling functionality to execute views at the time scheduled by the user without requiring any user intervention.

 

About the Delivered Event Definitions

 

 

The following Process Pipeline event definitions are delivered with the standard installation of Aptify. They appear in ID order based on ID assignments in a standard Aptify installation.

  • BeforeSave: Called when a user creates a new record or updates an existing record and clicks one of the Save buttons. Event executes prior to a record save's validation routine and the data being inserted/updated in the database. Typically, this event definition is only useful if validation occurs within the Process Flow. Otherwise, you may want to consider using the BeforeCommitTransaction event (described below) instead.

  • AfterSave: Event executes when user creates a new record or updates an existing record and clicks one of the Save buttons. Event only executes after data is successfully inserted/updated in the database. If the Insert/Save commands fail, this Event does not execute.

  • BeforeValidate: In some cases, an organization may want to use Aptify's Process Pipeline functionality to impose validation logic to the system rather than having to write an organization-specific entity object or a validation script for one or more Entity Fields. In order to support these types of process flows, Aptify provides the BeforeValidate and AfterValidate event definitions. These are Entity-scoped events tied to the Aptify Generic Entity. The Before Validate event is fired before an entity's standard validation logic is process and the After Validate event is fired after an entity's standard validation logic is processed. When a process flow is tied to one of these events, the Process Flow Engine determines if a record passes or fails validation based on the process flow's result: Success or Failed. Note that this differs from other types of events where a Failed result typically indicates that the process flow failed to execute. Keep in mind the following important points when working with validation process flows that fire using the BeforeValidate or AfterValidate event:

    • The validation events support a ValidationMessage property so a process flow designer can specify the text of the error message that appears when validation fails (the system uses the ValidationMessage as the LastError and LastUserError in the Aptify Generic Entity). A validation process flow can support the following outcomes:
      • If the process flow's result is a Success result code and the ValidationMessage property is empty, the validation was successful.
      • If the process flow's result is a Failed result code and the ValidationMessage property has a value specified, a message box appears to the end user displaying the ValidationMessage text.
      • If the process flow's result is a Failed result code and the ValidationMessage property is empty, the following generic message is displayed when validation fails: Validation has failed but no information about the failure has been provided.
      • Note that the fourth option where a process flow's result is a Success result code and the ValidationMessage property is not empty will result in a validation failure and the validation message is displayed. However, this is not an expected outcome since a validation failure is expected to correspond to a process flow failure.

    • The validation in the Aptify Generic Entity will not proceed if the BeforeValidate Event fails (ResultCode of false or Failed). Therefore, the AfterValidate Event will not be fired if the BeforeValidate Event fails.

    • Unlike other Aptify delivered events that only fire for top-level entities, the BeforeValidate and AfterValidate events fire for Sub-Type entities. In these cases, the system validates sub-type records (and fires the event) twice: once when the record is closed (for example, when a user clicks the OK button) and a second time when the top-level entity record is saved.

  • AfterValidate: See the description for the BeforeValidate event definition earlier in this section for details.

  • BeforeRecordCreated: Event executes when user creates a new record (but not when user updates an existing record) and clicks one of the Save buttons. Event executes prior to the data being inserted/updated in the database.

  • AfterRecordCreated: Event executes when user creates a new record (but not when user updates an existing record) and clicks one of the Save buttons. Event only executes after data is successfully inserted into the database. If the record creation fails, this Event does not execute.

  • BeforeRecordDeleted: Event executes when user chooses to delete a record, but prior to actual removal of data from the database.

  • AfterRecordDeleted: Event executes after the record is successfully deleted. If record deletion fails, this Event does not execute.

  • BeforeRecordUpdated: Event executes when user updates an existing record (but not when a new record is created) and clicks one of the Save buttons. Event executes prior to the data being inserted/updated in the database.

  • AfterRecordUpdated: Event executes when user updates an existing record (but not when a new record is created), after data is successfully updated in the database. If the update to the record fails, this Event does not execute.

  • BeforeAsyncTaskRun: Event is triggered before the Process Flow in a Process Flow Runs record is executed.

  • AfterAsyncTaskRun: Event is triggered after the Process Flow in a Process Flow Runs record is executed.

  • BeforeCommitTransaction: Event is triggered before committing a transaction to the database. If a process flow responding to this event returns False (fail), the transaction rolls back. If a process flow responding to this event returns True (success), the transaction commits to the database, barring any other errors that would cause a rollback. This Event executes after the spCreate stored procedure has run for a top-level record but before the transaction is closed and before sub-types records are committed to the database.

  • Order Shipped: Event is triggered after the Order Status of an Orders record is changed to Shipped and the record is saved. Specific to the Orders entity.

  • BeforeLoad: Event executes just before a record is loaded into the Generic Entity Object.

  • AfterLoad: Event executes after a record is loaded into the Generic Entity Object.

  • After Process Flow Saved: Event is triggered after a Process Flows record that has Compile Mode set to Compiled and Status set to Incomplete is saved. Specific to the Process Flow entity.

  • BeforeConflictSaved: This event fires just before a Pending Changes record with Type set to Replication Conflict is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterConflictSaved: This event fires just after a Pending Changes record with Type set to Replication Conflict is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • BeforeConflictPosted: This event fires just before a Pending Changes record with Type set to Replication Conflict is posted. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterApprovalRequestSaved: This event fires just after a Pending Changes record with Type set to Approval Request is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterConflictPosted:This event fires just after a Pending Changes record with Type set to Replication Conflict is posted. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • BeforeApprovalRequestSaved: This event fires just before a Pending Changes record with Type set to Approval Request is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • CampaignListStatusChanged: This event fires whenever a Campaign List Detail record has its status changed (for existing records only).

  • CampaignDocStatusChanged: This event fires whenever a Campaign Documents record had its status changed. This will be fired for both new and existing records.

  • CampaignStatusChanged: This event fires whenever a Campaigns record had its status changed. This will be fired for both new and existing records.

  • Expo Order Shipped: This event fires whenever an Order that contains an Order Line for one or more Expo products is shipped. It is based on the Order Shipped Event Definition, and it is only applicable to the Orders entity.

  • BeforeSendMessage: This event fires before a message is sent via the Messaging Engine. See Capturing Message Details from a Message Run for Use in a Process Flow for information how an organization can use this event to fire a process flow.

  • AfterSendMessage: This event fires after a message is sent via the Messaging Engine. See Capturing Message Details from a Message Run for Use in a Process Flow for information how an organization can use this event to fire a process flow.

  • AfterOrderSaveCompleted: This event fires after an order has completely saved. This event is only applicable to the Orders service.

  • AfterOrderCreateCompleted: This event fires after a new order has completely saved. This is only fired for new orders. This event is only applicable to the Orders service.

  • AfterOrderUpdateCompleted: This event fires after an existing order has completely saved. This event is not fired for new records. This event is only applicable to the Orders service.

 

About the Delivered Event Handlers

 

 

Aptify includes the following standard event handlers, which are provided either for demonstration purposes or as part of the system's standard functionality. See each individual description for more information. The event handlers appear in ID order based on ID assignments in a standard Aptify installation.

  • Send Message Run After Save (Message Runs entity): This Event Handler automatically fires the Send Message Run process flow to generate and send email messages each time a user saves a Message Runs record. This Event Handler is Active by default.

  • Compile Process Flow After Process Flow Saved (Process Flows entity): This Event Handler automatically fires the Compile Process Flow process flow to compile and recompile process flows into VB.NET objects. See Using the Process Flow Compiler for details. This Event Handler is Active by default.

  • Expand Single Scheduled Transaction Group After Record Created (Scheduled Transaction Groups entity): When a user performs an operation that generates a new Scheduled Transaction Group (such as saving an order that includes a deferred income product), this Event Handler fires the Expand Single Scheduled Transaction Group process flow to automatically expand the group into its corresponding Scheduled Transactions records. Note that this Event Handler is not Active by default. For testing and demonstration environments, you can mark this Event Handler as Active to enable it. Aptify recommends that you do not enable this Event Handler in a production environment (as it defaults the purpose of creating a Scheduled Transaction Group in the first place, which is to provide greater efficiency during the order save process).

  • Populate Company Directory Sort, Directory Letter, and Abbreviated Name Before Save (Companies entity): This Event Handler automatically fires the Company DirSort & Abbreviated Name Flowdown process flow before a user saves a new Companies record or before a user saves an existing Companies record with a modified Name field. This Event Handler is Active by default.

  • Send Order Confirmation After Order Create Completed (Orders entity): This Event Handler automatically fires the Send Order Confirmation process flow to send out an email confirmation and order summary to the Ship To person after a user saves a new Orders record. Note that this Event Handler is not Active by default, so this functionality is disabled.

  • Send Shipment Confirmation Email When Order Shipped (Orders entity): This Event Handler automatically fires the Send Shipment Confirmation Email process flow after a user saves an order as shipped to send out a shipping notice via email to the Ship To person. Note that this Event Handler is not Active by default, so this functionality is disabled.

  • Generate Opportunity History Before Save (Opportunities entity): This Event Handler automatically fires the Generate Opportunity History process flow before an Opportunities record is saved. This Event Handler is Active by default.

  • Populate Referral Request Vendors Before Save (Referral Requests entity): This Event Handler automatically fires the Populate Referral Request Vendors process flow before a Referral Requests record is saved. This Event Handler is Active by default.

  • Expo Create Priority Points When Expo Orders Ship (Orders entity): This Event Handler automatically fires the Expo Create Priority Points process flow when an order that has one or more order lines for an Expo product ship. Note that this Event Handler is not Active by default. An organization should only enable it if it uses Priority Points and wants the system to automatically calculate a vendor's accumulated points for the Expo Management application.

  • Sync Floorplan with Booth Change After Order Save Completed (Orders entity): This Event Handler automatically fires the Sync Floorplan with Booth Change process flow when an order has been saved. Note that this Event Handler is not Active by default. An organization should only enable it if it integrates Aptify with a third-party Floorplan System (such as ExpoCAD) for booth management.

  • Send Mail to Contact Before Committing a Save Transaction for a Cases Record (Cases entity): This Event Handler automatically fires the Send Mail to Contact process flow during the save process for a Cases record. Note that this Event Handler is not Active by default.

  • Send Mail to Primary Assignee Before Committing a Save Transaction for a Cases Record (Cases entity): This Event Handler automatically fires the Send Mail to PrimaryAssignee process flow during the save process for a Cases record. Note that this Event Handler is not Active by default.

 

About the Process Pipeline Standard Configuration Items

 

 

This topic briefly describes the Process Pipeline configuration items that are delivered with the standard Aptify application. This includes process components, event definitions, for information on organization-specific components or event definitions, please contact your system administrator.

This topic includes the following sub-topics:

 

About the Delivered Process Components

 

 

The process components available with the standard installation of Aptify are listed below by Process Component Category. This topic also provides information on the CRUD (Create, Read, Update, and Delete) components that are automatically created during an entity save.

 

About the CRUD Process Components

 

 

Each time you save a new entity (including sub-types), Aptify automatically generates four Process Components that create, read/load, update, and delete records for that entity. Since each component is tailored for a specific entity, developers can quickly and easily incorporate these components as steps in process flows.

Each component corresponds to a piece of generic system functionality that accepts the entity's name as an initialization parameter (specified in the Init Data field). In addition, Aptify automatically populates the Input Properties for the Create and Update components to include all of the fields in that entity.

If an entity does not have these components already generated, you can regenerate the entity, which will then generate these components. See Regenerating an Entity for information on how to regenerate an entity.

The following is an overview of the four components:

  • Create [Entity Name] Record: This component creates a new record for the designated entity. The Input Properties Tab specifies all of the fields in that entity and a SaveRecord flag (which you set to Yes to save the record immediately and No to defer the save function). Fields required to successfully save a new record are marked as Required properties. For sub-type entities, the parent entity's GE object is also included as an Input Property. The Output Properties Tab specifies a GE object and Record ID that can be passed into other steps/processes.

  • Load [Entity Name] Record: This component loads/reads an existing record for the designated entity. The only Input Property for this type of component is RecordID. For subtype entities, the Input Properties are the parent entity's GE object and the sub-type record's Sequence. A developer can use this component to load a specific record into the Process Flow's context object. The Output for this type of component is a GE object.

  • Update [Entity Name] Record: This component updates an existing record in the designated entity. The Input Properties Tab specifies all of the fields in the entity, the RecordID, a SaveRecord flag, and a GEObject. For sub-type entities, the Input Properties include the fields in the sub-type, the parent entity's GE object and the sub-type record's Sequence. The Output Properties Tab specifies a GE object and Record ID that can be passed into other steps/processes.

  • Delete [Entity Name] Record: This component deletes an existing record for the designated entity. The Input Properties Tab specifies a RecordID and a GEObject. For sub-type entities, the Input Properties are the parent entity's GE object and the sub-type record's Sequence. There are no Output Properties for this type of component.

CRUD Best Practices

  • When designing a process flow that operates on a sub-type entity using one of the CRUD components, you need to pass in the GEObject for the sub-type record's parent via the Context Object to the sub-type component's step. You can do this in one of two ways:
    • If an event from the parent record fires the process flow, you can specify the GEObject as an Input Property for the Process Flow. Then, pass in the parent record's GEObject as part of the Event Handler.
    • If an event in an unrelated entity fires the process flow, use the top-level entity's Load component to load the desired record and then pass its GEObject into the Context Object (GEObject is an Output Property for the Load component). Once in the Context Object, you can specify the parent GEObject as an Input Property for the sub-type component's step.

  • When designing a process flow that uses CRUD components, consider the frequency and impact of save operations, and try to minimize the number of save operations for best performance.

  • For example, If a process flow creates a subtype record in a top-level record based on a change in that top-level record, use a before save event as the basis for the Event Handler. Then, within the sub-type component step, set the SaveRecord input property to No for a deferred save. In this case, the toplevel record, with any applicable sub-type record changes, is saved after the process flow has executed.

  • Continuing from the example above, consider the ramification of the following designs for a process flow that creates a new sub-type record when a new top-level record is saved:
    • Event: BeforeRecordCreated 
      Step SaveRecord Input Value: No 
      Result: Process Flow fires before record is saved and creates a sub-type record. The Save is deferred until after the process flow completes. There is one save operation and one Record History entry associated with this transaction.

    • Event: BeforeRecordCreated 
      Step SaveRecord Input Value: Yes 
      Result: Process Flow fires before record is saved and creates a sub-type record. The process flow attempts to save the sub-type record to a top-level record that doesn't exist yet, creating an invalid state and an error.

    • Event: AfterRecordCreated 
      Step SaveRecord Input Value: Yes 
      Result: Process Flow fires after record is saved and creates a sub-type record, followed by another save operation to save the sub-type record. This operation is successful but two save operations occur (and two Record History entries) when one would have sufficed. Also, if the designer used the AfterRecordUpdated event in place of AfterRecordCreated in this scenario, Aptify would enter an infinite loop since each sub-type save would fire the process flow, which would create another sub-type record, etc.

    • Event: AfterRecordCreated 
      Step SaveRecord Input Value: No 
      Result: Process Flow fires after record is saved and creates a sub-type record. At some point, another save would be required to save the sub-type record, typically by another step in the process flow.

 

About the Standard Process Components by Category

 

 

This toic lists the process components, broken down by category is as follows: 

Entity Operations

The process components in this category primarily corresponds to the CRUD (Create, Read, Update, and Delete) components created automatically when an administrator saves an entity. See About the CRUD Process Components for details. Note that the items in the (Not Categorized) category are also CRUD components.

In addition to the CRUD components, the following components are in an entity-specific sub-category for this category:

  • Company Abbreviated Name Flowdown: This object handles the flow-down of a company name from the Companies entity's Name field into the AbbreviatedName field which is used to store the short/acronym version of a company name. The default functionality in the component automatically populates this field from the Company Name as long as the Abbreviated Name has not previously been manually overridden by the user (this is tested by checking the old value of the Name field of the Company against the value of AbbreviatedName using the same Abbreviated Name generation).

  • Company Directory Sort Flowdown: This object handles the flow-down of a name from the Companies entity's Name field into the DirSort field which is used to handle sorting and searching without special characters. The default functionality in the component automatically populates this field from the Company Name as long as the DirSort has not previously been manually overridden by the user (this is tested by checking the old value of the Name field of the Company against the value of DirSort). In addition, this object will also auto-populate the DirLetter field with the first character in the Name, using the same logic as described above.

  • Scheduled Transaction Group Expansion By Product: This component expands the Scheduled Transaction Groups in a specified View into Scheduled Transactions record based on a supplied Product ID. An administrator can create a Process Flow that uses this component to automatically expand Scheduled Transaction Groups on a pre-determined schedule (as specified in a Scheduled Tasks record). The Scheduled Task fires the Process Flow at the specified time, and an Application Server then expands the scheduled transactions. This process component accepts the following Input Properties to configure its behavior:

    • SQLWorkingSet: A SQL Statement that returns the IDs of the Scheduled Transaction Groups to expand. If configured, this parameter takes precedence over the ViewID input property. Note that if this parameter is an empty string and the ViewID property is less than or equal to 0, the process component expands all of the pending Scheduled Transaction Groups that have not yet been expanded and that match the specified ProductID (see below).

    • ViewID: The ID of a View of the Scheduled Transaction Groups service that defines the working set of Scheduled Transaction Groups to expand. Note that if the ViewID is less than or equal to 0 and the SQLWorkingSet property is an empty string, the process component expands all of the pending Scheduled Transaction Groups that have not yet been expanded and that match the specified ProductID (see below).

    • ProductID: When specified, the process component expands only the Scheduled Transaction Groups whose ProductID equals the ID specified for this Input Property. Note that if the ProductID is less than or equal to 0, the process component expands all of the pending Scheduled Transaction Groups returned by the SQLWorkingSet or ViewID.

Accounting

  • Cash Control Batch Demo Import Object: This component provides a default/demo implementation of cash control batch imports from a lock box or other file.

  • Cash Control Batch Match Object: This component is responsible for matching items in an existing cash control batch and will match items that have not previously been matched and update the information in the Cash Control Batch Detail.

  • Cash Control Batch Post Object: This component is responsible for posting an existing cash control batch and posts line items that have been matched or have resolved exceptions.

  • Create GL Export Batch: This component creates a GL Export Batch for Orders, Payments or Scheduled Transactions.

  • Mark A/R to Market: This component corresponds to Aptify's Mark to Market object used to record gains and losses due to foreign currency fluctuations.

Calendar

  • vCalendar Writer: This component can automatically generate a vCalendar (VCS) file that contains meeting information that a customer/member can import into Microsoft Outlook to create an Outlook Appointment.
    • Used in conjunction with a process flow, this component can automatically send meeting registrants a vCalendar item that corresponds to an event's date and time so registrants can easily add the appointment to their Outlook Calendars.
    • This component supports several Input Properties, including properties that correspond to the calendar item's Start Date/Time, End Date/Time, and Summary (appointment title). Note that if you want to specify a file name for the calendar file using the OutputFilename property, you must enter the full path for the file, not just the file name (for example, enter C:\TEMP\vCalendar.vcs rather than vCalendar.vcs). Note that if OutputFilename is left blank, Aptify automatically generates a .vcs file for you.
    • The component also supports two Output Properties to pass the vCalendar file (the OutputFileName property) or the text of the vCalendar item (vCalendarText property) to another step in a process flow. For example, you can pass a generated vCalendar file as an attachment to an email by passing the OutputFileName output object to the Attachments input property for the Send Email component.
    • Note that Aptify has included the vCalendar standards document as an attachment to the vCalendar Writer Process Components record to assist developers who will utilize vCalendar functionality.

Campaign Management

  • Campaign List Builder Component: This component runs the Campaign List Builder process to add persons from campaign segments as campaign prospects.

  • Campaign List Import File Process: This component imports items from a Campaign import file into a specified Import Runs record.

  • Campaign List Match Process: This component is responsible for matching items in a Campaign import list with records that may already exist in the database.

  • Campaign List Post Process: This component is responsible for posting items in the Campaign import list and for creating new records as necessary for unmatched records.

Chapter Management

  • Get Chapter ID: Used in conjunction with the Chapter Management add-on application for Aptify e-Business, this component can execute a Chapter Proximity Rule to identify the nearest chapter for a particular person or company.

Committee Management

  • Add Persons to Committees: This component adds persons to committee terms.

Contact Management

  • Outlook Contact Log Import: This component imports emails from Microsoft Outlook into Aptify as Contact Log records.

General

  • Aptify FTP Upload Component: This component is used to upload a file to an FTP site and can use an Aptify user account's username and password for authentication. Note that your Aptify installation and user account (if using authentication) must have access to a configured FTP site to use this component. This component supports the following input and output properties.
    • FTP Site URI: This input property specifies the location of the FTP site, for example ftp.ABCCompany.com.
    • FTP Folder: This input property specifies the folder on the FTP site where the file needs to be uploaded.
    • FTP User Account: This input property specifies the user account for authentication into the FTP site. If the FTP site does not require authentication, this property can be left blank.
    • FTP Password: The password associated with the FTP User Account. If the FTP site does not require authentication, this property can be left blank.
    • Local Folder: This input property specifies the local location of the file to be uploaded. For example, c:\FTPUpload
    • Local File Name: This input property specifies the name of the local file to be uploaded.
    • Upload Results: This output property contains the result message string of the upload process and can be used by other steps of the process flow.

  • Aptify FTP Download Component: This component is used to download a file from an FTP site and can use an Aptify user account's username and password for authentication. Note that your Aptify installation and user account (if using authentication) must have access to a configured FTP site to use this component. This component supports the following input and output properties.
    • FTP Site URI: This input property specifies the location of the FTP site, for example ftp.ABCCompany.com.
    • FTP Folder: This input property specifies the folder on the FTP site where the file needs to be downloaded from.
    • FTP User Account: This input property specifies the user account for authentication into the FTP site. If the FTP site does not require authentication, this property can be left blank.
    • FTP Password: The password associated with the FTP User Account. If the FTP site does not require authentication, this property can be left blank.
    • Local Folder: This input property specifies the local location where the file should be downloaded to. For example, c:\FTPDownloads.
    • Download Results: This output property contains the result message string of the download process and can be used by other steps of the process flow.

  • Input Box: This component displays a message to the user and allows the user to type in a text field to respond.

  • Load Data Table: Using the SQL input provided by a developer, this component loads a data table into the process flow. This component supports the following input and output properties:
    • SQL: This input property specifies a SQL statement to run to populate a data table. This can be a SELECT statement or execute a stored procedure.

    • CacheSetting: Depending on the design of the process flow, it is possible that the same Load Data Table step may execute multiple times in a single run. In this case, a developer can set this input property to determine how to re-run this step:
      • ByPassCache: This is the default setting for this input property. The component passes the SQL statement to the server without checking the cache, and the results of the SQL statement are not stored in the cache.
      • UseCache: If the data table already exists within the process flow's context object, the process flow uses the existing cache and does not rerun the SQL input.
      • Refresh Cache: If the data table already exists within the process flow's context object, the process flow refreshes the cache but does not rerun the SQL statement.
      • DataTable: This output property passes the generated .NET Data Table Object to other steps in the process flow (typically to a step using the Get Data Table Value or Move Data Table component).

  • Get Data Table: Once you have loaded a Data Table into the process flow (typically using a Load Data Table step), you can use this component to retrieve a value from a particular field for a particular row in the data table. This component supports the following input and output properties:
    • DataTable: This input property specifies a .NET Data Table Object. Typically, you pass the DataTable object into the Context Object using a Load Data Table step. This Input Property allows the Get Data Table Value step to use that Data Table you previously load.
    • Field: This input property identifies a particular field in the data table. In conjunction with CurrentRow, this component retrieves a value for this field from a particular row in the Data Table.
    • CurrentRow: This input property identifies the row in the Data Table from which the value should be retrieved (note that Row 0 is the first row in a Data Table). If you store the CurrentRow in the context object, you can set it initially via an Event Handler or Scheduled Task and then dynamically update it using the Move Data Table component.
    • Value: This output property passes the retrieved value into the context object for use by other steps in the process flow.

  • Move Data Table: This component moves to a new row in the Data Table based on the input properties provided. Using this component, you can create a series of repeatable steps that retrieve a value from a row, process that value, move to the next row in the table, and then repeat the previous steps to retrieve and process the value. This would continue until the end of the table is reached. (While this component supports the standard SUCCESS and FAILED result code, it also includes result codes for EOF (End of File) and BOF (Beginning of File) so you can determine a course of action (such as End Process) when the start or end of the table is reached.) This component supports the following input and output properties:
    • DataTable: This input property specifies a .NET Data Table Object. Typically, you pass the DataTable object into the Context Object using a Load Data Table step. This component moves to a new row in that table.

    • CurrentRow (Input): This input property identifies the current row in the Data Table that serves as the starting point for this component. Depending on the Type selected (described below), the component can move up one row or down one row from this current row.

    • Type: This input property identifies the movement within the Data Table:
      • MoveNext: Move to the next row in the table.
      • MoveFirst: Move to the first row in the table.
      • MoveLast: Move to the last row in the table.
      • MovePrevious: Move back one row in the table.
      • CurrentRow (Output): This output property specifies the new row position after the Move Data Table operation. This value can then be passed to other steps within the process flow to process information from that particular row.

  • Message Box: This component displays a message box to the user and captures the response from the user.

  • Run Entity Bulk Operation: This component automates the execution of entity bulk operations. It operates on the set of records defined by the ViewSQL, ViewID, or SelectionList input property. The component reviews the provided input values in order from ViewSQL, to ViewID, and finally to SelectionList, and uses the first value that is not blank to generate the recordset for the entity bulk operation. For example, if a developer provides a value for all three input properties, then the component will use the ViewSQL input since it is evaluated first. This component supports the following input properties:
    • EntityBulkOperationID: This specifies the ID of the Entity Bulk Operation to execute.
    • ViewSQL: This input specifies a SQL Statement that returns the set of records to which the Entity Bulk Operation is applied.
    • ViewID: This input specifies the ID of a Views record within Aptify that returns the set of records to which the Entity Bulk Operation is applied. This property is only used when the ViewSQL property is blank.
    • SelectionList: This input specifies a comma-delimited list of Record IDs to which the Entity Bulk Operation is applied. This property is only used if both the ViewSQL and ViewID properties are blank.

  • Value Retriever: This component is used to retrieve values from a GE object, from an entity in the database, or from the context object. Simply provide the Entity Object or Entity Name and Record ID and provide the field name to be retrieved and the value will be returned as the RESULT CODE for the component. Alternatively, specify the Value property which will be used directly for a value comparison which can allow for simple branch conditions based on the result code of this component.

  • Value Tester: This component is capable of testing any value against another value. It is useful for doing quick checks against database, GE Object, and context object values to determine workflow logic and other business rule processing.

Generic Wizard

  • Set Wizard Result: This component is used to specify a next step for a metadata wizard based on a previous result. It provides administrators and developers with the ability to define conditional logic in wizards.

Housing

  • Housing Import: Imports Housing/Hotel Information from file(s) provided by a hotel, including confirmation numbers for each reservation processed.
  • Housing Transfer: Transfers (exports) Housing reservation information from the Aptify to a file or files that can be sent to a hotel for processing.

Messaging

  • Message Engine: Provides the functionality to send a Message Run for the Aptify Messaging system. Accepts the specified Message Run ID and then sends the messages associated with that ID.
  • Send Email: Provides functionality to send an email (including attachments), allowing the user to define the sender and recipient, as well as the text included.
    • The Send Email component that is included in the standard installation of Aptify uses a customized property user interface as shown in the figure below. See Using the Generate Data Mapper Process Component Wizard for information on how to define customer property sheets for process components.

Send Email Component Custom Properties Sheet

Order Entry

  • Order Credit Check: This component checks to see if a Person's or Company's credit is approved or declined for a given Order.
  • PaymentGenGL: This component generates GL entries for Payments records.
  • Standing Order Fulfillment: This component fulfills standing orders.

Process Flow Engine

  • Compile Process Flow Component: This is the component that compiles a process flow into a .NET assembly after you save a Process Flows record with Compile Mode set to Compiled. See Using the Process Flow Compiler for details.

Scheduling Components

  • RemoteSchedulerDelete: The system uses this component to delete a Scheduled Tasks whose Service is set to Remote Scheduler. This allows non-administrative users to indirectly delete Scheduled Tasks on an Application Server.

  • RemoteSchedulerUpdate: The system uses this component to update a Scheduled Task's Service from Remote Scheduler to Windows Scheduler. This allows non-administrative users to indirectly create or modify Scheduled Tasks on an Application Server.

Subscription Processing

  • Renew Subscriptions: This component invokes the Aptify.Applications.Subscriptions.SubscriptionRenewal class to renew subscriptions based on the provided Input Properties, including specifying a due date.

Viewing System

  • Execute View with No UI: This component is used by the system's View Scheduling functionality to execute views at the time scheduled by the user without requiring any user intervention.

 

About the Delivered Event Definitions

 

 

The following Process Pipeline event definitions are delivered with the standard installation of Aptify. They appear in ID order based on ID assignments in a standard Aptify installation.

  • BeforeSave: Called when a user creates a new record or updates an existing record and clicks one of the Save buttons. Event executes prior to a record save's validation routine and the data being inserted/updated in the database. Typically, this event definition is only useful if validation occurs within the Process Flow. Otherwise, you may want to consider using the BeforeCommitTransaction event (described below) instead.

  • AfterSave: Event executes when user creates a new record or updates an existing record and clicks one of the Save buttons. Event only executes after data is successfully inserted/updated in the database. If the Insert/Save commands fail, this Event does not execute.

  • BeforeValidate: In some cases, an organization may want to use Aptify's Process Pipeline functionality to impose validation logic to the system rather than having to write an organization-specific entity object or a validation script for one or more Entity Fields. In order to support these types of process flows, Aptify provides the BeforeValidate and AfterValidate event definitions. These are Entity-scoped events tied to the Aptify Generic Entity. The Before Validate event is fired before an entity's standard validation logic is process and the After Validate event is fired after an entity's standard validation logic is processed. When a process flow is tied to one of these events, the Process Flow Engine determines if a record passes or fails validation based on the process flow's result: Success or Failed. Note that this differs from other types of events where a Failed result typically indicates that the process flow failed to execute. Keep in mind the following important points when working with validation process flows that fire using the BeforeValidate or AfterValidate event:

    • The validation events support a ValidationMessage property so a process flow designer can specify the text of the error message that appears when validation fails (the system uses the ValidationMessage as the LastError and LastUserError in the Aptify Generic Entity). A validation process flow can support the following outcomes:
      • If the process flow's result is a Success result code and the ValidationMessage property is empty, the validation was successful.
      • If the process flow's result is a Failed result code and the ValidationMessage property has a value specified, a message box appears to the end user displaying the ValidationMessage text.
      • If the process flow's result is a Failed result code and the ValidationMessage property is empty, the following generic message is displayed when validation fails: Validation has failed but no information about the failure has been provided.
      • Note that the fourth option where a process flow's result is a Success result code and the ValidationMessage property is not empty will result in a validation failure and the validation message is displayed. However, this is not an expected outcome since a validation failure is expected to correspond to a process flow failure.

    • The validation in the Aptify Generic Entity will not proceed if the BeforeValidate Event fails (ResultCode of false or Failed). Therefore, the AfterValidate Event will not be fired if the BeforeValidate Event fails.

    • Unlike other Aptify delivered events that only fire for top-level entities, the BeforeValidate and AfterValidate events fire for Sub-Type entities. In these cases, the system validates sub-type records (and fires the event) twice: once when the record is closed (for example, when a user clicks the OK button) and a second time when the top-level entity record is saved.

  • AfterValidate: See the description for the BeforeValidate event definition earlier in this section for details.

  • BeforeRecordCreated: Event executes when user creates a new record (but not when user updates an existing record) and clicks one of the Save buttons. Event executes prior to the data being inserted/updated in the database.

  • AfterRecordCreated: Event executes when user creates a new record (but not when user updates an existing record) and clicks one of the Save buttons. Event only executes after data is successfully inserted into the database. If the record creation fails, this Event does not execute.

  • BeforeRecordDeleted: Event executes when user chooses to delete a record, but prior to actual removal of data from the database.

  • AfterRecordDeleted: Event executes after the record is successfully deleted. If record deletion fails, this Event does not execute.

  • BeforeRecordUpdated: Event executes when user updates an existing record (but not when a new record is created) and clicks one of the Save buttons. Event executes prior to the data being inserted/updated in the database.

  • AfterRecordUpdated: Event executes when user updates an existing record (but not when a new record is created), after data is successfully updated in the database. If the update to the record fails, this Event does not execute.

  • BeforeAsyncTaskRun: Event is triggered before the Process Flow in a Process Flow Runs record is executed.

  • AfterAsyncTaskRun: Event is triggered after the Process Flow in a Process Flow Runs record is executed.

  • BeforeCommitTransaction: Event is triggered before committing a transaction to the database. If a process flow responding to this event returns False (fail), the transaction rolls back. If a process flow responding to this event returns True (success), the transaction commits to the database, barring any other errors that would cause a rollback. This Event executes after the spCreate stored procedure has run for a top-level record but before the transaction is closed and before sub-types records are committed to the database.

  • Order Shipped: Event is triggered after the Order Status of an Orders record is changed to Shipped and the record is saved. Specific to the Orders entity.

  • BeforeLoad: Event executes just before a record is loaded into the Generic Entity Object.

  • AfterLoad: Event executes after a record is loaded into the Generic Entity Object.

  • After Process Flow Saved: Event is triggered after a Process Flows record that has Compile Mode set to Compiled and Status set to Incomplete is saved. Specific to the Process Flow entity.

  • BeforeConflictSaved: This event fires just before a Pending Changes record with Type set to Replication Conflict is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterConflictSaved: This event fires just after a Pending Changes record with Type set to Replication Conflict is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • BeforeConflictPosted: This event fires just before a Pending Changes record with Type set to Replication Conflict is posted. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterApprovalRequestSaved: This event fires just after a Pending Changes record with Type set to Approval Request is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • AfterConflictPosted:This event fires just after a Pending Changes record with Type set to Replication Conflict is posted. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • BeforeApprovalRequestSaved: This event fires just before a Pending Changes record with Type set to Approval Request is saved. This event is only applicable to the Pending Changes service. This definition is reserved for future use.

  • CampaignListStatusChanged: This event fires whenever a Campaign List Detail record has its status changed (for existing records only).

  • CampaignDocStatusChanged: This event fires whenever a Campaign Documents record had its status changed. This will be fired for both new and existing records.

  • CampaignStatusChanged: This event fires whenever a Campaigns record had its status changed. This will be fired for both new and existing records.

  • Expo Order Shipped: This event fires whenever an Order that contains an Order Line for one or more Expo products is shipped. It is based on the Order Shipped Event Definition, and it is only applicable to the Orders entity.

  • BeforeSendMessage: This event fires before a message is sent via the Messaging Engine. See Capturing Message Details from a Message Run for Use in a Process Flow for information how an organization can use this event to fire a process flow.

  • AfterSendMessage: This event fires after a message is sent via the Messaging Engine. See Capturing Message Details from a Message Run for Use in a Process Flow for information how an organization can use this event to fire a process flow.

  • AfterOrderSaveCompleted: This event fires after an order has completely saved. This event is only applicable to the Orders service.

  • AfterOrderCreateCompleted: This event fires after a new order has completely saved. This is only fired for new orders. This event is only applicable to the Orders service.

  • AfterOrderUpdateCompleted: This event fires after an existing order has completely saved. This event is not fired for new records. This event is only applicable to the Orders service.

 

About the Delivered Event Handlers

 

 

Aptify includes the following standard event handlers, which are provided either for demonstration purposes or as part of the system's standard functionality. See each individual description for more information. The event handlers appear in ID order based on ID assignments in a standard Aptify installation.

  • Send Message Run After Save (Message Runs entity): This Event Handler automatically fires the Send Message Run process flow to generate and send email messages each time a user saves a Message Runs record. This Event Handler is Active by default.

  • Compile Process Flow After Process Flow Saved (Process Flows entity): This Event Handler automatically fires the Compile Process Flow process flow to compile and recompile process flows into VB.NET objects. See Using the Process Flow Compiler for details. This Event Handler is Active by default.

  • Expand Single Scheduled Transaction Group After Record Created (Scheduled Transaction Groups entity): When a user performs an operation that generates a new Scheduled Transaction Group (such as saving an order that includes a deferred income product), this Event Handler fires the Expand Single Scheduled Transaction Group process flow to automatically expand the group into its corresponding Scheduled Transactions records. Note that this Event Handler is not Active by default. For testing and demonstration environments, you can mark this Event Handler as Active to enable it. Aptify recommends that you do not enable this Event Handler in a production environment (as it defaults the purpose of creating a Scheduled Transaction Group in the first place, which is to provide greater efficiency during the order save process).

  • Populate Company Directory Sort, Directory Letter, and Abbreviated Name Before Save (Companies entity): This Event Handler automatically fires the Company DirSort & Abbreviated Name Flowdown process flow before a user saves a new Companies record or before a user saves an existing Companies record with a modified Name field. This Event Handler is Active by default.

  • Send Order Confirmation After Order Create Completed (Orders entity): This Event Handler automatically fires the Send Order Confirmation process flow to send out an email confirmation and order summary to the Ship To person after a user saves a new Orders record. Note that this Event Handler is not Active by default, so this functionality is disabled.

  • Send Shipment Confirmation Email When Order Shipped (Orders entity): This Event Handler automatically fires the Send Shipment Confirmation Email process flow after a user saves an order as shipped to send out a shipping notice via email to the Ship To person. Note that this Event Handler is not Active by default, so this functionality is disabled.

  • Generate Opportunity History Before Save (Opportunities entity): This Event Handler automatically fires the Generate Opportunity History process flow before an Opportunities record is saved. This Event Handler is Active by default.

  • Populate Referral Request Vendors Before Save (Referral Requests entity): This Event Handler automatically fires the Populate Referral Request Vendors process flow before a Referral Requests record is saved. This Event Handler is Active by default.

  • Expo Create Priority Points When Expo Orders Ship (Orders entity): This Event Handler automatically fires the Expo Create Priority Points process flow when an order that has one or more order lines for an Expo product ship. Note that this Event Handler is not Active by default. An organization should only enable it if it uses Priority Points and wants the system to automatically calculate a vendor's accumulated points for the Expo Management application.

  • Sync Floorplan with Booth Change After Order Save Completed (Orders entity): This Event Handler automatically fires the Sync Floorplan with Booth Change process flow when an order has been saved. Note that this Event Handler is not Active by default. An organization should only enable it if it integrates Aptify with a third-party Floorplan System (such as ExpoCAD) for booth management.

  • Send Mail to Contact Before Committing a Save Transaction for a Cases Record (Cases entity): This Event Handler automatically fires the Send Mail to Contact process flow during the save process for a Cases record. Note that this Event Handler is not Active by default.

  • Send Mail to Primary Assignee Before Committing a Save Transaction for a Cases Record (Cases entity): This Event Handler automatically fires the Send Mail to PrimaryAssignee process flow during the save process for a Cases record. Note that this Event Handler is not Active by default.

 

About the Delivered Process Flows

 

 

Aptify includes the following standard process flows, which are provided either for demonstration purposes or as part of the system's standard functionality. See each individual description for more information. The process flows appear in ID order based on ID assignments in a standard Aptify installation.

  • Send Message Run: Aptify uses this process flow to send email messages associated with a Message Runs record. (The system automatically generates a Message Runs record each time a user clicks the Send Messages button in the Aptify Messaging dialog.)

  • Compile Process Flow: Aptify uses this process flow to compile and recompile process flows into VB.NET objects.

  • Sample BeforeValidate Process Flow: This process flow provides an example of how to utilize the BeforeValidate Event.This can be used to test the functionality of the BeforeValidate Event.

  • Sample After Validate Process Flow: This process flow provides an example of how to utilize the AfterValidate Event. This can be used to test the functionality of the AfterValidate Event.

  • Execute View with No UI: Aptify uses this process flow in conjunction with a Scheduled Tasks record to implement the View Scheduling functionality that allows a user to automatically run a view and generate reports on a pre-defined schedule.

  • Update With Remote Scheduler: Aptify uses this process flow in conjunction with the View Scheduling functionality to allow users to create Scheduled Tasks when they do not have the necessary access privileges on an Application Server.

  • Delete With Remote Scheduler: Aptify uses this process flow in conjunction with the View Scheduling functionality to allow users to delete Scheduled Tasks when they do not have the necessary access privileges on an Application Server.

  • Schedule Pending Changes Post Process: This process flow is reserved for future use.

  • GeneratePaymentGL: This process flow generates Payment General Ledger entries. It is reserved for future use.

  • Company DirSort & Abbreviated Name Flowdown: This process flow automatically populates a Companies record's Directory Sort (for sorting the company within a directory) Abbreviated Name (if an organization abbreviates company names), and Directory Letter for new Companies records or when the name changes for an existing Companies record.

  • Expand Single Scheduled Transaction Group: This process flow can expand a Scheduled Transaction Group into its corresponding Scheduled Transactions immediately after a new Scheduled Transaction Group is created.
    • Note that this process flow is useful for testing and demonstration environments but it is not recommended for use in a production environment. Instead, an administrator can create a new Process Flow that uses the Scheduled Transaction Group Expansion By Product process component to automatically expand scheduled transaction groups periodically (such as nightly) using a Scheduled Task based on the groups that appear in a qualifying view.

    • Aptify provides an inactive Event Handler for this process flow. A user can mark this Event Handler as Active in testing and demonstration environments to use this process flow to expand scheduled transaction groups automatically after they are created.

  • Demo Multi-Step Process Flow: This demonstration process flow is visual only and does not have any underlying functionality. It is designed simply to illustrate the concept of being able to visualize a process flow with many steps, conditional branching with sub-processes, component steps, and rule steps.

  • Status Check Example: This process flow checks a status value in the database and displays a message box based on the status.

  • Example Value Tester: This example process flow shows how to use the Value Tester component. It checks the value provided and displays a message box based on the value.

  • Example Message Box: This process flow provides an example of how to use the message box and input box process components.

  • New Prospect Review & Approval: This sample process flow handles assignment of a new prospective member being entered into the database. The process flow assigns the new prospect to an internal staff member based on region and handles the associated business logic.

  • Send Shipment Confirmation Email: This process flow sends an email when an order is shipped.
    • Aptify provides an inactive Event Handler for this process flow so this functionality is disabled by default but can be enabled if desired.

  • Get Order Summary: This process flow provides an example of how to generate a text string that contains the summary of an order. This process flow contains a single script-based step that iterates through the lines of an order and generates a plain text output stream that shows the order lines.
    • In Aptify this process flow provides support for multiple currencies so that money fields associated with the order summary are formatted based on the order's Currency Type.

  • Send Order Confirmation Email: This process flow sends an order confirmation email using the order summary information from the Get Order Summary sub-process.
    • In Aptify this process flow uses the Confirmation message template to send the order summary information. See About the Delivered Message Templates for details.
    • Aptify provides an inactive Event Handler for this process flow so this functionality is disabled by default but can be enabled if desired.

  • Generate Opportunity History: Aptify's Sales Force Automation application uses this process flow to automatically generate history details when a user modifies an Opportunities record. This process flow is reserved for future use.

  • Populate Referral Request Vendors: Aptify's Sales Force Automation application uses this process flow to automatically match participating vendors to referral requests from prospective customers.

  • Expo Create Priority Points: Aptify's Expo Management application uses this process flow to calculate an exhibitor's priority points when an order for an Expo product ships.

  • Send eBusiness Order Confirmation Email: If your organization has Aptify e-Business installed, this process flow is used by the e-Business sample site to generate an order confirmation email when a Web User completes an order over the website.

  • Test Process Flow: This process flow is used in the sample New Company Wizard to illustrate how a metadata wizard can use process flows to define logic and perform actions.

  • Sync Floorplan with Booth Changes: Aptify's Expo Management application uses this process to automatically synchronize a booth's information with an integrated Floorplan System (such as ExpoCAD) after a booth is ordered or cancelled.

  • Send Mail to Contact: Aptify's Case Management application uses this process flow to illustrate how the system can be configured to send an email to the appropriate customer automatically after a Cases record has been created or modified.

  • Send Mail to PrimaryAssignee: Aptify's Case Management application uses this process flow to illustrate how the system can be configured to send an email to the assigned employee automatically after a Cases record has been created or modified.

  • Test Process Flow fired by BeforeSendMessage Event: This example illustrates a process flow that can be used to test the BeforeSendMessage and AfterSendMessage global Event Definition (see About the Delivered Event Definitions for details).

  • Execute Message Schedule: This process flow is responsible for executing scheduled messages on a recurring basis. See Scheduling Messages for Future Delivery for Information on Message Schedules.

  • Sample BeforeValidate/After Validate Process Flows: Sample process flows for illustrating the use of the BeforeValidate and AfterValidate Events. See Writing a Process Flow to Impose Validation Logic Example for more information on these events.

  • AcctMgmrTransferFinish: Process flow used by the Account Manager Transfer metadata wizard.

  • Create Bulk Write Off: Process flow used by the Bulk Write Off metadata wizard.

  • Membership Enrollment Wizard Process Flows: A set of process flows used by the Membership Enrollment metadata wizards.

  • Generate GE Strongly Typed Sub-classes: This process flow includes a single process component responsible for generating GE strongly typed sub classes for a specific entity. It can be associated with an Event Handler on the Entities entity in order to automate the process.

  • Update Pending Change PF: Process flow used to apply pending changes to records. See Administering Pending Changes for information on creating a Scheduled Task to fire this process flow.

 

Process Pipeline Tutorial

 

 

To help clarify the concept of process flows and event handlers, the following tutorial is provided to allow the user to experience how this functionality works within Aptify. The examples included in this topic walk the user through creating both simple and complex process flows and creating process flows that use some of the specific process components. These process flows are then linked to event handlers. Methods to test the sample events are also provided.

This topic is written with the assumption that the reader has read and understood the Managing Process Flows and Managing Events topics, which cover the basic processes and functionality of the Process Pipeline and Event Handler forms and services.

This topic contains the following sub-topics:

 

Simple Process Flow and Event Handler Example

 

 

This example explains how to set up a simple process flow in Aptify. This process flow is then linked to an event handler so the functionality may be tested. It is assumed that the Process Components and Event Definitions records delivered with the standard application have been installed, and that the following services have been added to the user's profile:

  • Process Categories
  • Process Flows
  • Event Handlers
  • Companies

This topic covers the following sub-topics related to setting up a simple process flow:

Keep in mind that in lieu of creating an Event Handler, you can use the Process Flow Debugger tool to test your process flow. However, this tutorial tests the process flow using an Event Handler to illustrate how an Event Handler is created.

 

Business Case and Designing the Simple Process Flow

In this step of the Simple Process Flow tutorial, an organization requests that the system be configured so that an immediate email notification is sent to the sales department any time a new company is added to the database. This configuration is meant to enable them to track not only Companies records created by call takers within their organization, but also any records created from web-based links to their applications.

Outlining the Process Flow

Outlining is one of the most important steps in configuring Aptify Process Flows, no matter how simple the flow may seem.

How Many Steps?

The purpose of the business case stated above is to notify the sales department by email each time a new Companies record is created. This is a very simple process, with only one process step – sending the email message. No further processing is necessary.

Does the Functionality Already Exist?

The next step is to determine the functionality of each step. In the case of this example, there is only one step, and the functionality of this step is to send an email.

Aptify comes with a standard set of Process Components, each of which defines a set piece of functionality. These components are listed in Process Components as Delivered. One of the standard components is named Send Email, indicating that the functionality desired is available within the system. We simply need to configure the system to make use of this existing component.

What Data Will the Process Flow Use?

When a process flow starts, all required data is gathered at one time. This data is then placed in a temporary storage place, called the Context Object. This data might come from fields on a form, be derived from the database using a SQL statement, or be hard coded in the system.

Regardless of the source, it is important to remember that once the process flow starts and the Context Object is populated, it cannot go outside the Context Object to retrieve any more data. The process flow is, in a sense, surrounded by a bubble. The Context Object data is inside the bubble, and everything else is outside. For this reason, it is critical that all data which may be used by all steps within the flow be determined in advance.

Determining the data used by a process flow can be a challenging task and is yet another reason why it is important to outline the entire process flow before beginning any configuration within Aptify. This is because once all the steps in the process flow are defined in the outline, the underlying functionality of each step is known. Basic knowledge of the delivered Process Components records will help a developer or administrator determine the data required by each step in a process flow.

However, it is also possible to determine some of the data required simply by looking at the Process Flow outline. For this tutorial, we need to ask ourselves what we know so far. We know that:

  • There is only one step.
  • The functionality to send an email exists within Aptify.

Required Data

In order to send an email message, an email system requires specific data elements from the user. Some of these data elements are:

  • The message system that will send the email (this tutorial uses Microsoft Outlook; therefore, you must have Microsoft Outlook installed and operational on your computer to successfully create and test this process flow)
  • The recipient of the message
  • The sender of the message
  • The subject of the message
  • The text of the message

email messages may be sent in a variety of formats, such as plain text or HTML. Most email programs require that the format be determined before the message is sent. Thus, the following may be added to the list of required data:

  • The type of message format

To verify that the list includes all required data elements, review the items found on the Input Properties tab of all process components used in the process flow. In this case, the flow only calls the Send Email process component.

Other Data

There are other data values which could be useful for this process flow but are not required. These include:

  • email addresses for the carbon copy (CC) list
  • email addresses for the blind carbon copy (BCC) list

Based on what we've gathered so far, we now have a list of data which may be used by the process flow.

Is Any Data Returned?

Now that we know what data the process flow uses, the next question to ask is whether the process flow returns any data. Let's look at the requirement again: send an email notification when a new Companies record is created in the system. Remember, we already determined that no further processing is necessary after the email is sent. Therefore, the answer to this question is no.

Completing the Outline

We have determined the number of steps in our process flow and the functionality for each of them, the data to provide, and whether the functionality exists within the system. Now we are ready to actually create the process flow in Aptify.


Creating a Simple Process Flow Category

In this step of the Simple Process Flow tutorial, it is assumed that more than one process flow will be set up in the system over time to send email notifications. These email notifications may be sent to customers, managers, or suppliers, depending on how the application is configured. To enable these process flows to be grouped together, you should create a Process Flow Category. Follow these steps:

  1. Open a new record from the Process Flow Categories service.
  2. Enter email Notifications in the Name field. If desired, enter a description.
  3. Enter the Messaging record as the Parent category (assuming that your system already has a Messaging category).

    email Notifications Category
  4. Save and close the Process Flow Categories record.

Creating the Simple Process Flow

In this step of the Simple Process Flow Tutorial, follow this procedure to create the simple Process Flow to send an email message when a new company is added to the system:

  1. Open a new record from the Process Flows service.
  2. In the Name field, enter XY Send email where XY are your initials. If desired, enter a description.
  3. Enter email Notifications in the Category field. This links the record to the Process Flow Categories record we created earlier in the example.

    Creating the Process Flow
  4. Click the Input Properties tab and enter the properties listed below.
    • During the outlining process for the business case, we determined a list of data that may be used by the process flow we are generating. To tell the system which data elements to capture and store in the Context Object, the list must be created as Input Properties. 

    Name

    Type

    Default Value

    Required

    Value List Type

    To

    String

     

    Yes

    None

    Subject

    String

     

    Yes

    None

    TextBody

    String

     

    Yes

    None


    Configured Input Properties

  5. Click the Result Codes tab.
  6. Create two Result Codes records: one for SUCCESS and one for FAILED, as shown in the following figure.

    Add Process Flow Result Codes
  7. Save the Process Flows record.
  8. Click the Design tab.
  9. Select the Insert Component Step button in the toolbar.
  10. Move the cursor to the design area and click the mouse button to drop the component step in the selected location.

    Adding a Component based Step

    • A new step appears in the Design area. The step's details load in the Properties area on the right-side of the Process Flows record.
    • Resize the form as necessary so you can read all of the fields in the Properties area.
  11. Within the step's Properties area, select the Send Email component from the Component drop-down list.
    • The Send Email component is located under the Messaging category.

    Select Send Email Component

    • Each Process Component set up in Aptify is configured with a list of Input Properties which detail all data elements used by that component. Components are also set up with a list of data returned by the component (if any), and all expected results when the component is run.
    • Once a component is selected in the Component field, several tabs on the Properties dialog automatically inherit information which reflects that defined at the component level: Input Maps, Output Maps, and Action Maps tabs. These must all be configured before the step is completed. Note that for this business case, no output maps are configured.
  12. Modify the Step Name to read XY Send E Mail, where XY are your initials.
    • When you select a component, the system automatically updates the step's Name to match the name of that component.
  13. Click the Description tab and replace the placeholder text with This step sends an email message.
  14. Click the Properties tab and configure the step's input properties. Note that this type of interface is known as an Input Map.
    • On each step of any process flow, we must tell the system where the data is to be found. Do we expect the system to derive the data from the database? Do we expect it to be stored within that Context Object bubble? Or are we going to provide a value that remains constant, no matter how and when that process step is called?
    • Only certain Input Maps are required for this step, so for the purposes of this tutorial, only those Input Maps are configured.
    • Each input map may be edited directly within the grid. You may also double-click on the line item in the grid to display an Edit Mapping dialog box. Note that you can select a value from a Source drop-down list for Context Object inputs. The drop-down list displays the items you specified for the Process Flow's Input Properties tab.
    • Note that this tutorial uses Microsoft Outlook; therefore, you must have Microsoft Outlook installed and operational on your computer to successfully create and test this process flow.
    • Configure the following Input Maps as follows:

    Name

    Source Type

    Source

    MessageSystemName

    Static

    Outlook Mail

    To

    Context Object

    To

    Subject

    Context Object

    Subject

    TextBody

    Context Object

    TextBody

     

    Step's Input Map

  15. Save the record.
  16. Click the Action Map tab.
    • The Action Map tells the system what to do once the step has finished. Should it trigger another step, or should it tell the system that the process flow has ended?
    • Remember, we determined in the process flow outline that this process flow has only one step. This means that no more steps are called upon completion of the XY Send Email step, no matter what happens.
  17. By default, the Send Email component has one outcome, SUCCESS. For this item, select End Process from the Action drop-down list.

    Configure Action Map
  18. Enter the corresponding SUCCESS process flow result code (which you previously specified on the Process Flows record's Result Codes tab) in the Process Flow Result Code field for this outcome.

    Specify Process Flow Result Code
  19. Close the Process Flows record. When prompted, click Yes to save the record.

At this point you can use the Process Flow Debugger tool to test your process flow without having to create an Event Handler. See Using the Process Flow Debugger for details.

Linking the Simple Process Flow to an Event

In this step of the Simple Process Flow tutorial, the business case developed for this example specifies that the email must be sent when a new Companies record is added to the system. This indicates that the XY Send Email process flow must be somehow connected to the Companies service, so that the system knows why and when to send a notification.

There are several events that occur within the normal life cycle of a record in a database. These include when the record is created, saved, updated, and deleted. The standard Event Definitions are listed and defined in Event Definitions as Delivered. The appropriate event must be determined to allow the functionality we are implementing in this example to work correctly.

Examine what is known about the business case. The email will be sent only when a new Companies record is created, not when existing Companies records are updated. We also make the assumption that this email will only be sent after the record has been saved in the database. This information indicates that the AfterRecordCreated event is the most appropriate event to use for the process flow.

Perform these steps to link the simple process flow to an event:

  1. Open a new record from the Event Handlers service.
    • You can also review Event Handlers using the Aptify Event Handler Management dashboard component. See Using the Event Handler Management Dashboard for details.
  2. Leave Event Scope set to Entity.
  3. Enter Companies in the Entity field.
  4. In the Event field, enter AfterRecordCreated.
  5. In the Process Flow field, enter your XY Send email process flow.
    • Once the process flow is specified, the Input Map tab populates with the Context Object input properties defined in the process flow. In this case, this corresponds to the To, Subject, and TextBody input properties.
      New Event Handler Form
  6. Leave the Active option selected.
  7. Fill out the input map as described below:

    Input Property

    Source Type

    Source

    To

    Static Value

    <<enter your email address>>

    Subject

    Static Value

    New Company Created: <%Name%>

    Body

    Static Value

    A new Company record has been entered for <%Name%>. The assigned ID is <%ID%>.

     

    • Each row may be configured directly in the grid. You may also double-click on the row, or click on the ellipsis (...) button in the Source field to display an Edit Mapping dialog box.
    • While the business case indicates that the notifications are to go to the Sales department, for the purposes of testing, enter your own email address instead of <<your email address>> in the To row.
    • Aptify will automatically insert field data from the new Companies record in the placeholders surrounded by the brackets and percent signs.

    Complete the Input Map

  8. Save and close the record.
  9. Close and reopen Aptify before continuing.

Testing the Simple Process Flow Event

In the final step of the Simple Process Flow tutorial, the process flow has been created and linked to the Companies entity. All that remains now is to test the functionality. Follow these steps:

  1. Open a new record from the Companies service.
  2. Enter XY Test Only in the Name field, where XY are your initials.
  3. Save the record.

Depending on the version and settings of your Microsoft Outlook installation, you may receive a message stating that an outside source is attempting to send an email. Click the OK button to allow this to occur.

If the configuration is successful, an email message soon appears in your Inbox, with the subject and body text set up in the Input Maps for the event handler, as illustrated below:

Sample email Message

Cleaning Up

Unless you make the Event Handler inactive, you will continue to receive email messages each time anyone creates a new Companies record in the system.

  1. Open the Event Handler created in this example.
  2. Clear the Active option.
  3. Save and close the record.
  4. Close Aptify and re-open before performing any more configuration within the system.

 

Complex Process Flow and Event Handler Example

 

 

 

 

 

Now that we have walked through the basics of creating a process flow and attaching it to an event within the application, we are ready to take on something a bit more complex. For this example, it is assumed that the Process Components and Event Definitions records delivered with the standard application exist, and that the following services have been added to the user's application:

  • Process Categories
  • Process Flows
  • Event Handlers
  • Orders
  • Persons
  • Products

The Aptify user must also have a linked Employees record.

This topic covers the following sub-topics related to setting up a complex process flow:

Business Case and Designing the Complex Process Flow

In the first step in the Complex Process Flow tutorial, an organization decides to send promotional literature to every new contact and notify the Sales department so that they may follow up once the literature has been received. The promotional literature should be sent, and the Sales department notified, however, only if the individual is not associated with a company.

Outlining the Process Flow

The first step in any process flow configuration is to outline the process.

How Many Steps?

Look closely at the business case. When new Persons records are created within Aptify, we must first determine whether that person is associated with a company. This may be done simply by noting whether the Company field on the Persons form is populated.

The next step in the process is to send the product literature (but only if the person is not associated with a company). This is implemented in Aptify by creating a new Orders record and adding an Order Line for the literature. This constitutes two steps.

The final step in the process is to send an email notification to the Sales department. This is similar to the XY Send email process flow built earlier in this tutorial and constitutes a single step in the process flow.

Putting these steps in logical order, the process flow to build is defined as follows:

  • Step 1: Determine whether to send the literature.
  • Step 2: Create an Orders record for the Person.
  • Step 3: Create an Order Line for the literature and save the order.
  • Step 4: Send an email notification to the Sales department.

Does the Functionality Already Exist?

Let's look at the four steps:

  • Step 1: Determine whether to send the literature — Aptify provides a Value Tester component that can be used to branch logic based on the value of a particular field. In this case, you could use the Value Tester to check the value of the CompanyID field. However, this tutorial uses a rule-based step to illustrate how this type of step is used.
  • Step 2: Create an Orders record — A Create Orders Record process component is delivered with the standard Aptify application. This step may take advantage of this existing functionality.
  • Step 3: Create an Order Lines record — A Create Order Lines Record process component is delivered with the standard Aptify application. This step may take advantage of this existing functionality.
  • Step 4: Send an email notification — Making use of a previously defined process flow (the XY Send email process flow created in the first part of this tutorial) reduces the amount of work necessary. This is done by basing the step on a Sub-Process.

What Data Will the Process Flow Use?

Setting up the XY Send email process flow earlier in the tutorial generated the following list of required data elements:

  • The recipient of the message
  • The sender of the message
  • The subject of the message
  • The text of the message
  • The format of the email
  • The email addresses for the CC list
  • The email addresses for the BCC list

Additional Data

To satisfy this business case, additional data elements are necessary. Creating an Orders record within Aptify requires the following information:

  • The Ship-To person and address
  • The Bill-To person and address
  • The product to order

Completing the Outline

Now that the number and sequence of the process flow steps, data required, and data returned have been determined, the process flow may be set up in Aptify.


Creating the Complex Process Flow Literature Product

In this step of the Complex Process Flow tutorial, because the business case developed in this example requires Orders records to be created, the product to be ordered must be determined. For the purposes of this tutorial, a new Products record must be created.

  1. Open a new record from the Products service.
  2. Enter XY Product Literature in the Name field, where XY are your initials.
  3. Continue setting up the product.
    • Select the Allow Free option on the product's Prices > Settings tab. In this example, the literature is sent free of charge.
    • For simplicity, it is recommended that no inventory be required.
    • For more information on setting up products, see Using Product Setup and Maintenance.

Write down the ID of the product once it is saved. This ID is used in configuring the input properties of the Event Handler later in this example.


Creating the Complex Process Flow

In this step of the Complex Process Flow tutorial, you perform the procedures necessary to create a complex process flow, as described in the sections below:

Creating the Process Flows Record

follow these steps to create the Process Flows record:

  1. Open a new record from the Process Flows service.
  2. In the Name field, enter XY Send Product Literature where XY are your initials. If desired, enter a description.
  3. Enter email Notifications in the Category field. This links the record to the Process Flow Categories record created in the first example of this tutorial.
  4. Save the record.

Defining the Input Properties

The list of necessary input properties is based on the list of data used by the process flow generated during the Outlining process. This list is a combination of all data required by all steps within the process flow.

A few additional Input Properties have been added to this list, beyond what was deemed necessary during the Outlining process. These were determined by reviewing the Input Properties tab of the Create Order process components and the Input Properties tab of the XY Send email process flow. This underscores the importance of understanding how the components are configured within the application.

 

Enter the following rows into the Input Properties tab. When all rows are entered, save the Process Flows record.

Name

Type

Default Value

Required

Value List Type

To

String

 

Yes

None

Subject

String

 

Yes

None

TextBody

String

 

Yes

None

PersonID

Integer

 

Yes

None

EmployeeID

Integer

 

Yes

None

ProductID

Integer

 

Yes

None

Defining the Result Codes

Create the following result codes for the Process Flows record on the Result Codes tab and save the record:

Code

Description

Success

EMAIL_SENT

Order created and email sent.

Yes

AFFILIATED

Person affiliated with company.

Yes

FAILED

Failure encountered.

No

Defining the Process Flow Steps

This section describes how to create the four steps in this process flow:

Step 1: Determining Whether to Send the Product Literature

Follow these steps to create the first step (which is rule-based):

  1. Click the Design tab.
  2. Select the Insert Rule Step button in the toolbar.
  3. Move the cursor to the design area and click the mouse button to drop the rule step in the selected location.
    • A new step appears in the Design area. The step's details load in the Properties area on the right-side of the Process Flows record.
    • Resize the form as necessary so you can read all of the fields in the Properties area.
  4. Within the step's Properties area, Enter XY Determine Company Link in the Name field. Enter a description if desired on the Description tab.
  5. Click the Rule tab.
    • Because this is a rule-based step, either SQL or VBScript may be used to extract the correct information. The functionality of this step is to determine whether to send the product literature by finding out whether or not the person is associated with a company. SQL provides the best method of determining this information.
  6. Select SQL in the Rule Type list and enter the following into the text box:

    Select ID = 
    CASE
    WHEN CompanyID IS NULL 
    THEN 'Unlinked'
    ELSE 'Linked'
    END
    FROM APTIFY.dbo.vwPersons WHERE ID=<%PersonID%>


    SQL Rule Step

  7. Save the process flow.

Step 2: Creating the Orders Record

Once the rule step determines that the product literature should be sent, the next step is to create an order for that literature. This step makes use of the existing Create Orders Record process component.

  1. Select the Insert Component Step button in the toolbar.
  2. Move the cursor to the design area so it is to the right of the rule-based step. Click the mouse button to drop the component step in the selected location.
    • A new step appears in the Design area. The step's details load in the Properties area on the right-side of the Process Flows record.

    Add Component Step

  3. In the step's Properties area, enter XY Create Literature Order in the Name field. Enter a description on the Description tab, if desired.
  4. Under the Properties tab, select the drown arrow to the right of the Component field to display the available component categories.
  5. Expand the (Entity Operations) > Orders category.

    Select Component
  6. Select the Create Orders Record component from the list.
    • The component's input properties automatically flow down to the step's Properties tab.
  7. Populate the rows on the Properties tab as specified below. Not all rows on the tab are configured, as not all of the input properties are required or necessary for the purposes of this example. The figure provides an illustration of how some of the inputs from the table below should appear in the Process Flows record.

    Input Property

    Source Type

    Source

    Notes

    SaveRecord

    Static Value

    No

    For this process flow, you do not want to save the Orders record until after you have added the Order Line in Step 3, so set this to No.

    ID

    Static Value

    -1

    The ID will be assigned automatically when the Order is saved. Set this to -1 as a placeholder since this is a required field.

    OrderDate

    Formula

    GetDate()

    Change the Source Type from Static Value to Formula since GetDate() is a SQL Expression. The order will use the current date and time as the Order Date.

    ShipToID

    Context Object

    PersonID

     

    ShipToCountryCodeID

    Static Value
    See Notes column

    222
    See Notes column

    If the Person does not have an address, then you need to specify the Country Code ID to save the record. This tutorial sets this property to minimize user error. You can use a different Source Type as needed.

    BillToID

    Context Object

    PersonID

     

    BillToCountryCodeID

    Static Value
    See Notes column

    222
    See Notes column

    If the Person does not have an address, then you need to specify the Country Code ID to save the record. This tutorial sets this property to minimize user error. You can use a different Source Type as needed.

    EmployeeID

    Context Object

    EmployeeID

     

    OrganizationID

    Static Value

    1

    Enter the ID of an Organization's record. For the sake of simplicity, this tutorial sets it to 1 but you could use another source type as necessary.

    PayTypeID

    Static Value

    1

    Set the pay type to Purchase Order since there will be no charge for this literature order.

    PONumber

    Static Value

    N/A

     

    OrderLevelID

    Static Value

    1

    Enter the ID of the application OrderLevel record. For the sake of simplicity, this tutorial sets it to 1 but you could use another source type as necessary.

     

    Create Order Record Inputs

  8. Save the record.
  9. Click the Output Map tab.
  10. Configure the following settings for the GEObject output property so the Orders GE object can be passed to the Create OrderLines Record component in the next step of the Process Flow:
    • Destination Type: Context Object
    • Destination: GEObject

      Step's Output Map
  11. Save the record.

Step 3: Creating the Order Lines Record

After adding the Create Orders Record component, you need to add the Create Order Lines component that adds the order line for the literature to the order.

  1. Select the Insert Component Step button in the toolbar.
  2. Move the cursor to the design area so it is below the Create Orders Record step. Click the mouse button to drop the component step in the selected location.
    • A new step appears in the Design area. The step's details load in the Properties area on the right-side of the Process Flows record.
  3. In the step's Properties area, enter XY Create Literature Order Line in the Name field. Enter a description on the Description tab, if desired.
  4. Under the Properties tab, select the drown arrow to the right of the Component field to display the available component categories.
  5. Expand the (Entity Operations) > OrderLines category.
  6. Select the Create OrderLines Record component from the list.
    • The component's input properties automatically flow down to the step's Properties tab.
  7. Populate the rows on the Properties tab as specified below. Not all rows on the tab are configured, as not all of the input properties are required or necessary for the purposes of this example.

    Input Property

    Source Type

    Source

    Notes

    SaveRecord

    Static Value

    Yes

    After adding the Order Line, this will save the OrderLines sub-type record and the Orders record.

    ParentGEObject

    Context Object

    GEObject

    The GEObject option will not appear in the Source drop-down list since it is not specified as an Input Property on the Process Flow. However, you can manually enter this value in the Source field.

    ProductID

    Context Object

    ProductID

     

    Quantity

    Static Value

    1

    Send 1 unit of the product.

    Price

    Static Value

    0

    The product literature is sent free of charge in this example.

  8. Save the record.

Step 4: Notifying the Sales department

The final step in the process sends an email notification to the Sales department. This step may make use of an existing process flow.

  1. Select the Insert Sub-Process Step button in the toolbar.
  2. Move the cursor to the design area so it is to right of the Create OrderLines Record step. Click the mouse button to drop the step in the selected location.
    • A new step appears in the Design area. The step's details load in the Properties area on the right-side of the Process Flows record.
  3. In the step's Properties area, enter XY Send Email SubProcess Step in the Name field. Enter a description on the Description tab, if desired.
  4. Select the XY Send email process flow from the Sub-Process drop-down list.
    • The process flow's input properties appear in the Properties area.
  5. Set the value of Source on each input map to Context Object.
  6. In the Source field, select from the list the corresponding input property you previously specified on the process flow's Input Properties tab.
  7. Save the record.

Linking the Process Flow Steps

Once the steps are created, they must be linked together to form the complete process flow. Perform the steps in the following sections:

Linking Step 1 to Step 2

Follow this procedure to link step 1 to step 2:

  1. Click the Insert Result Code Link icon in the toolbar.
  2. Place the cursor over one of the handles of step 1's box until it becomes a target symbol. Click the mouse button.

    Adding a Link Between Steps
  3. Drag the cursor over a handle of step 2's box. Click the mouse button.
    • The Create New Result Code dialog appears.
  4. Enter Unlinked in the Result Code field. Leave Is Success selected.

    Specify Result Code
  5. Click OK to close the dialog.
    • A link labeled Unlinked is added between steps 1 and 2 in the diagram.
  6. Select Step 1 in the diagram to load its properties.
  7. Click the Action Map tab.
    • The Unlinked action already appears on this tab.
  8. Click the New Map button to open the Create New Result Code dialog.
  9. Enter Linked in the Result Code field and leave Is Success selected. Click OK to save and close the dialog.
    • A Linked action appears in the Action Map.
  10. For the Linked action, select End Process as the Action and enter AFFILIATED in the Process Flow Result Code field.

    Specify Action Map Properties
  11. Save the record.

Linking Step 2 to Step 3

Follow this procedure to link step 2 to step 3:

  1. Click the Insert Result Code Link icon in the toolbar.
  2. Place the cursor over one of the handles of step 2's box until it becomes a target symbol. Click the mouse button.
  3. Drag the cursor over a handle of step 3's box. Click the mouse button.
    • The Create New Result Code dialog appears.
  4. Select Success as the result code and click OK.
  5. Select Step 2 in the diagram to load its properties.
  6. Click the Action Map tab.
  7. For the Failed action, select End Process as the Action and enter FAILED in the Process Flow Result Code field.
  8. Save the record.

Linking Step 3 to Step 4

Follow this procedure to link step 3 to step 4:

  1. Click the Insert Result Code Link icon in the toolbar.
  2. Place the cursor over one of the handles of step 3's box until it becomes a target symbol. Click the mouse button.
  3. Drag the cursor over a handle of step 4's box. Click the mouse button.
    • The Create New Result Code dialog appears.
  4. Select Success as the result code and click OK.
  5. Select Step 3 in the diagram to load its properties.
  6. Click the Action Map tab.
  7. For the Failed action, select End Process as the Action and enter FAILED in the Process Flow Result Code field.
  8. Save the record.

Ending the Process Flow

For the last step in the process flow, you need to mark all of its actions as End Process. Follow this procedure:

  1. Select Step 4 in the diagram to load its properties.
  2. Click the Action Map tab.
  3. For both actions, select End Process as the Action.
  4. For the SUCCESS action, enter EMAIL_SENT in the Process Flow Result Code field.
  5. For the FAILED action, enter FAILED in the Process Flow Result Code field.
  6. Save the record.

The following figure illustrates the process flow when all steps are linked.

Linked -Process Flow Steps

At this point, you can use the Process Flow Debugger tool to test your process flow. See Using the Process Flow Debugger for details.

Linking the Complex Process Flow to an Entity

In this step of the Complex Process Flow tutorial, Event Handlers are used to link process flows to entities or applications. As discussed in the first example in this tutorial, it is important to determine the appropriate event to use for any configuration of a service's functionality.

For the business case used in this part of the tutorial, we know that whenever a new Persons record is created for a person who is not associated with a company, a new Orders record is created and an email is sent. Once again, we make the assumption that this functionality should run only after the record has been saved in the database. Based on this assumption, the process flow must be linked to the AfterRecordCreated event on the Persons entity.

Perform the following steps to set up the event handler:

  1. Select the Process Pipeline Administration application to load its dashboard.
  2. In the Event Handler Management area, select Entities as the Event Scope.
  3. Enter Persons in the Entity field. Upon tabbing out of the field, the grid below displays with a list of all other Event Handlers attached to the Persons entity, if any.

    Event Handler Management Dashboard
  4. Click Add Event. The Event Handler form now displays.
  5. In the Event field, enter AfterRecordCreated.
  6. In the Process Flow field, enter the XY Send Product Literature process flow.
    • Once the Process Flow field is filled, the Input Map tab populates with a list of records inherited from the input properties defined on the process flow selected.
  7. Follow the information listed below to configure each Input Map.
    • Each row may be configured directly in the grid, or by double-clicking on the row or clicking the ellipsis (...) button in the Source field to display an Edit Mapping dialog box.

      Input Property

      Source Type

      Source

      To

      Static Value

      <<your email address>>

      Subject

      Static Value

      Product Literature Sent

      TextBody

      Static Value

      Product literature has been sent to <%FirstName%> <%LastName%>. Please follow up once literature has been received.

      PersonID

      Entity Field

      ID

      EmployeeID

      Entity Field

      MainAccountManager[For the sake of simplicity, this example uses the Person's Account Manager as the Employee]

      ProductList

      Static Value

      <<ID of the product you created>>


      Configure Event Handler

  8. Click OK to save the record.
  9. Close the Aptify application and restart before continuing.

Testing the Complex Process Flow Event

In the final step of the Complex Process Flow tutorial, the process flow has been created and linked to the Persons entity. All that remains now is to test the functionality. To do this:

  1. Open a new record from the Persons service.
  2. Enter first and last name, putting XY at the beginning of the last name entered, where XY are your initials.
  3. Save the record.
  4. Check your email for the notification that the product literature was sent, including the name of the person whose record you just created. Open this Persons record in Aptify and click on the Orders tab to validate that an order was created. Open the Orders record to validate that the order was placed for the correct product.
    • Depending on the email system used, you may receive a message stating that an outside source is attempting to send an email. Click the OK button to allow this to occur.

Next, make sure that the filter created in the rule-based step is functioning correctly. We know that the order was created automatically when the Persons record created is not associated with a company. The next step is to make sure that the product literature is not sent when a person is associated with a company.

  1. Open a new record from the Persons service.
  2. Enter first and last name, putting XY at the beginning of the last name entered, where XY are your initials.
  3. Enter or select a company.
  4. Save the record.
  5. Check to see if an email notification was sent.
  6. Create a view in the Orders service for all orders made by the Persons record created in this test. If the process flow functioned correctly, the view does not include any records.

Cleaning Up

Unless you make the Event Handler inactive, you will continue to receive email messages every time anyone creates a new Persons record without a linked company in the system.

  1. Open the Event Handler created in this example.
  2. Clear the Active option.
  3. Click OK to save the record, then exit the Event Handler Management form.

Close Aptify and reopen the application before performing any more processing within the system.

 

Writing a Process Flow to Impose Validation Logic Example

In some cases, an organization may want to use Aptify's Process Pipeline functionality to impose validation logic to the system rather than having to write an organization-specific entity object or a validation script for one or more Entity Fields.

In order to support these types of process flows, Aptify provides the BeforeValidate and AfterValidate event definitions (see About the Delivered Event Definitions). These are Entity-scoped events tied to the Aptify Generic Entity. When a process flow is tied to one of these events, the Process Flow Engine determines if a record passes or fails validation based on the process flow's result: Success or Failed. Note that this differs from other types of events where a Failed result typically indicates that the process flow failed to execute.

Keep in mind the following important points when working with validation process flows that fire using the BeforeValidate or AfterValidate event:

  • The validation events support a ValidationMessage property so a process flow designer can specify the text of the error message that appears when validation fails (the system uses the ValidationMessage as the LastError and LastUserError in the Aptify Generic Entity). A validation process flow can support the following outcomes:
    • If the process flow's result is a Success result code and the ValidationMessage property is empty, the validation was successful.
    • If the process flow's result is a Failed result code and the ValidationMessage property has a value specified, a message box appears to the end user displaying the ValidationMessage text.
    • If the process flow's result is a Failed result code and the ValidationMessage property is empty, the following generic message is displayed when validation fails: Validation has failed but no information about the failure has been provided.
    • Note that the fourth option where a process flow's result is a Success result code and the ValidationMessage property is not empty will result in a validation failure and the validation message is displayed. However, this is not an expected outcome since a validation failure is expected to correspond to a process flow failure.
  • The validation in the Aptify Generic Entity will not proceed if the BeforeValidate Event fails (Result Code of false or Failed). Therefore, the AfterValidate Event will not be fired if the BeforeValidate Event fails.

  • Unlike other Aptify delivered events that only fire for top-level entities, the BeforeValidate and AfterValidate events fire for Sub-Type entities. In these cases, the system validates sub-type records (and fires the event) twice: once when the record is closed (for example, when a user clicks the OK button) and a second time when the top-level entity record is saved.

This topic provides an example of how to write a simple validation process flow and tie it to the AfterValidate event. Note that this tutorial references records found in Aptify's sample dataset.

Business Case and Designing the Validation Process Flow

In the first step of the Validation Process Flow tutorial, the Human Resources director at Sampco Holdings, Inc. requires that all Sampco employees be linked either to the parent organization or one of its subsidiaries but not to any inventory warehouses, which also appear as Organizations records. The director has requested validation logic to prevent users from linking any employee to an inventory warehouse.

In the data, Organization records 1 to 6 correspond to the parent company and its subsidiary while records 7 to 10 corresponds to warehouses.

Sample Organizations

Rather than write a field validation script for Employees. OrganizationID, the Sampco implementation team has decided to write a validation process flow to check that new employees are not linked to organizations record that corresponds to a warehouse location.

Outlining the Validation Process Flow

The first step in any process flow configuration is to outline the process.

How Many Steps?

To add this validation logic to Aptify as a process flow, you need to create a two-step process flow. When Employees records are saved within Aptify, the process flow must validate that the employee is not linked to a warehouse organization. So, the first step in the process flow will be to retrieve and test the value returned for the employee's organization.

The second step in the process is to display an appropriate Validation Message if the employee is linked to an inappropriate organization. (If linked to an appropriate organization, the process flow would end after step 1).

What Data Will the Process Flow Use?

The process flow will need to retrieve the Organization ID from the current GE object for the Employees record that is being saved.


Linking the Validation Process Flow to an Entity

Event Handlers are used to link process flows to entities or applications. In this case, since the process flow is executing validation logic for the Employees entity, we need to create an Event Handler for the Employees entity using either the BeforeValidate or AfterValidate event definition. For BeforeValidate, the system will run the process flow before executing the standard Generic Entity (GE) validation. For AfterValidate, the system will run the process flow after executing the standard GE validation. We can link the event handler to either event but for the sake of this example, we will link it to the AfterValidate event (so it occurs after the standard validation).

Perform the following steps to set up the event handler:

  1. Select the Process Pipeline Administration application to load its dashboard.
  2. In the Event Handler Management area, select Entities as the Event Scope.
  3. Enter Employees in the Entity field. Upon tabbing out of the field, the grid below displays with a list of all other Event Handlers attached to the Employees entity, if any.
  4. Click Add Event. The Event Handler form now displays.
  5. In the Event field, enter AfterValidate.
  6. In the Process Flow field, enter the XY Validate Organization process flow.
    • Once the Process Flow field is filled, the Input Map tab populates with the input property defined on the process flow selected.
  7. For the GEObject input property, select GE Object as the Source TypeGEObject will then automatically populate in the Source field.

    Configuring the Event Handler
  8. Click OK to save the record.
  9. Close the Aptify application and restart before continuing.


Testing the Validation Process Flow Event

In the final step in the Validation Process Flow tutorial, the process flow has been created and linked to the Employees entity. All that remains now is to test the functionality. To do this:

  1. Open a new record from the Employee service.
  2. Enter a first and last name.
  3. Enter a warehouse in the Organization field (that is, enter an Organizations record with an ID greater than 6).
  4. Save the record.
    • The validation message specified in the process flow's Rule step appears. This message is also logged to the Aptify Session Exceptions viewer.

      Sample Validation Logic Imposed
  5. Click OK to close the validation message.
  6. Change the new employee's affiliation to a non-warehouse organization (such as ID 5).
  7. Save the record.
    • The record saves successfully.
  8. Try to change an existing employee to associate with a warehouse Organization. You should get the same results as above for a new Employees record.

Cleaning Up

Unless you make the Event Handler inactive, you will continue to impose the validation logic on your test system.

  1. Open the Event Handler created in this example.
  2. Clear the Active option.
  3. Click OK to save the record, then exit the Event Handler Management form.

For best results, close Aptify and reopen the application before performing any more processing within the system.

 

 

 

 
 
 
 
Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.