This article describes what you need to know to migrate your GXflow Application.
To be able to migrate, you need GXflow 9.0 Upgrade 1.
First, follow the steps provided in the article GeneXus X Knowledge Base Conversion Process to migrate your Knowledge Base.
Note: If you are using data view objects associated with GXflow 9.0 Upgrade 1 tables to access data from the engine, make sure to delete all these references before starting the conversion process. Otherwise, an error similar to the following will occur:
Failed processing object properties
'GXflowTableName' invalid value for property 'DVAssocTable' : Associated table was not found.
It does not exist or it has not been imported (because an error has ocurred or it wasn't exported).
Then, when running the conversion process from the IDE you will see the following dialog after the Knowledge Base Source Analysis:
Through this dialog, you will be able to choose a GXPM Project to be converted or you can skip this step and import your project later. For more information about importing projects, see Workflow Tools.
Once you do it, you will see the following tasks in the Conversion Dialog:
"Convert workflow objects"
The process starts importing the GXflow API, the GXPM project (if you choose one); for each object in the Knowledge Base that uses the old workflow API, its variables and source code are converted to use the new API. In the section below "Considerations," you can see what is not going to be migrated.
"Delete workflow runtime objects"
During this process, the workflow's runtime objects will be deleted if they are not referenced by user objects. If there are objects in this situation, you will see a warning in the output.
The GeneXus standard conversion process will be executed. You can check a detailed description for Errors and Warnings related to GeneXus and GXflow specific warnings: GXFlow Conversion Warning Messages.
Note: It is not recommended to call workflow runtime objects directly.
Some of the following cases will be commented during the conversion process and a warning message will be shown.
- If you have objects that use the workflow API, it is necessary to add a commit when you use them to do an update, because GeneXus doesn't commit automatically.
- Conditional Gateways are automatically converted to Inclusive Gateways, and it may be necessary to change them to another type of gateway.
- If you have objects with call commands that refer to workflow runtime objects, the calls are not going to be migrated and you will see a specification error in those objects.
- For each commands over workflow runtime tables won't be migrated, so you will get an error when specifying these objects.
- Web Panels and Transactions with typical workflow Parm rules will be commented. This parm rule has 3 parameters of types WApiProcessDefinition, WApiProcessInstance, and WApiWorkitem, respectively. It was required in older versions of GXflow for all objects associated with activities. This is no longer used and will be commented because it will cause specification errors. Workflow data types cannot be used as parameters in Transactions and Web Panels. If you have a specific case where a Transaction or Web Panel receives workflow data types as parameters, you need to change it. The alternative is to receive only IDs of the workflow entities as parameters and load the corresponding workflow variables in the Start event. As an example, suppose that you have a Transaction that receives a workitem as a parameter. In this case, you must receive the workitem's ID as a parameter (which is N(10)) and add the following line in the Start event:
where &Workitem is a variable of WorkflowWorkitem type and &WorkItemId is the workitem's ID received as a parameter.
- Procedures with typical workflow parm rules must be commented manually for the same reason as Web Panels and Transactions.
- Properties and methods that are deprecated:
- Find Methods of workflowCollection data type are no longer supported, so they will be commented and you will see a warning in the output.
- WorkflowWebApplication data type it is no longer supported, but the most relevant properties and methods are migrated automatically. They are as follows:
- Active Session Property: a WebSession variable is defined, and the workflow session is obtained by writing: &Activesession = &WebSession.Get(WorkflowSession.SessionHandle)
- Language Property: a WebSession variable is defined, and the workflow session is obtained by writing: &Activesession = &WebSession.Get(WorkflowSession.Language)
- ConnectedUser Property: a WebSession variable and a WorkflowServer variable are defined, and the connected user is obtained with: &WFServer.Load(&WebSession.Get(WorkflowSession.SessionHandle)
&ConnectedUser = &WFServer.ConnectedUser
- Close method changes to "Return"
- CloseAndComplete changes to &Workitem.Complete() followed by "Return"
The other methods are not supported.
- The procedure WFCleanHistory is now a Web Panel, if you have a call to this Procedure like this:
PWFCleanHistory.Call(&Date) will be Link('wfcleanhistory.aspx').
- Disconnected edges will not be imported
- Task Dimension will be converted to Loop type property.
In some cases when a Knowledge Base is migrated, a reorganization of the Workflow Tables is needed. This will happen when new features add changes to the GXflow Engine's database schema.
Reorganization is needed when migrating to the following versions or upgrades:
All the needed reorganizations will be applied successively. For example, when converting a Knowledge Base from GeneXus X Evolution 1 Upgrade 8 to GeneXus X Evolution 2 Upgrade 2, two reorganizations will be applied. First, the one to apply changes made to GeneXus X Evolution 2, and then another to apply changes made to GeneXus X Evolution 2 Upgrade 1.
- If you had deadlines with the zero value assigned now you need to assign a high value instead.
If you import an .xpz file that was exported with a previous GeneXus version, the objects that use the Workflow API will be converted.
In general, to disable the workflow conversion process of a Knowledge Base, you need to create the file “wfignore.conversion” at the root of the Knowledge Base.
To convert an iSeries GXflow application, make sure you have installed GeneXus X Evolution 1 Upgrade 3 or higher; otherwise, the error described in SAC#27320 will occur.
In case the 9.0 workflow tables are truncated (short names), a conversion process must be executed to convert the tables to the Xev1 standard format.
Follow these steps to reorganize the workflow tables within the database (only if your workflow tables are truncated):
- Create a 9.0 Knowledge Base with just the GXFlow tables, and configure design and prototype properties as the production\test environment.
- Modify the following properties:
- Significant attribute name length: 10
- Significant table name length: 8
- Significant object name length: 30
- Execute a Copy Model to synchronize the prototype model.
- Modify the following properties and reorganize; GeneXus will enlarge the GXflow tables in your database.
- Significant attribute name length: 30
- Significant table name length: 30
- Significant object name length: 30
- The reorganization will convert the table to the standard format used in GeneXus Xev1.
- Convert the Knowledge Base to Xev1 and follow the standard process; download the associated GXFlow Client for your platform.
- Continue the conversion process. The first execution of an object will trigger the GXflow process to convert the internal table from 9.0.1 to the Xev1 format definition.
- SAC #28561:"Invalid Workitem" error sending a task that was converted form GXflow 9.0
- SAC #28559: Converting Workflow knowledge bases, conditional values are not available in the history dialog
- SAC #27983: After converting a workflow knowledge base, the "Html Application" activity property is not converted
- SAC #27829: The task property "Take deadline from relevant data" is not converted
- SAC #27640: Error: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
- SAC #27389: The context is not migrated when converting a workflow Knowledge Base to Evolution