Module tool_migrate_tibco
wso2/tool_migrate_tibco Ballerina Tool
Tool Overview
The migrate-tibco
tool helps you migrate existing TIBCO BusinessWorks integrations to Ballerina. It accepts a TIBCO BusinessWorks project directory or a single process file as input and converts it to equivalent Ballerina code.
Installation
Execute the command below to pull the migrate-tibco
tool from Ballerina Central
$ bal tool pull migrate-tibco
Usage
Command Syntax
$ bal migrate-tibco <source-project-directory-or-file> [-o|--out <output-directory>] [-k|--keep-structure] [-v|--verbose] [-d|--dry-run]
Parameters
- source-project-directory-or-file - Required. The TIBCO BusinessWorks project directory or process file to migrate.
- -o or --out - Optional. The directory where the new Ballerina package will be created. If the directory does not exist tool will create it for you. If not provided,
- If source-project-directory-or-file is a directory it will create new directory named ${source-project-directory-or-file}_converted in the root of source-project-directory-or-file
- if source-project-directory-or-file is a file it will create a new directory named ${root}_converted in the parent of the root directory where root is the directory containing the given file.
- -k or --keep-structure - Optional. If specified, preserves the original process structure during migration. By default, this option is disabled.
- -v or --verbose - Optional. Enable verbose output during conversion.
- -d or --dry-run - Optional. Run the parsing and analysis phases and generate the
report.html
file without generating the Ballerina package.
Examples
Convert a TIBCO BusinessWorks project with the default output path
$ bal migrate-tibco path/to/tibco-project
This will create a new Ballerina package inside the root of path/to/tibco-project
Convert a TIBCO BusinessWorks project with a custom output path
$ bal migrate-tibco path/to/tibco-project --out path/to/output-dir
This will create a new Ballerina package inside path/to/output-dir
. If path/to/output-dir
doesn't exist tool will create it for you. If the output path already exists tool will simply overwrite any file as needed without purging the directory.
Convert a standalone process file
$ bal migrate-tibco path/to/process-file
This will create a new Ballerina package in the root directory of directory containing the file.
Convert a standalone process file with a custom output path
$ bal migrate-tibco path/to/process-file --out path/to/output-dir
This will create a new Ballerina package at path/to/bal-file
. If the output path already exists tool will simply overwrite any file as needed without
purging the directory.
Preserve process structure during conversion
$ bal migrate-tibco path/to/tibco-project --keep-structure
or
$ bal migrate-tibco path/to/tibco-project -k
By default, the TIBCO project is converted using the standard Ballerina Integration (BI) file structure. However, if the --keep-structure
or -k
flag is used, each TIBCO process will be converted into a separate .bal
file named after the process, maintaining the original process structure instead of following the standard BI layout.
Convert a TIBCO BusinessWorks project with verbose output
$ bal migrate-tibco path/to/tibco-project --verbose
or
$ bal migrate-tibco path/to/tibco-project -v
This will convert the project with detailed logging during the conversion process.
Convert a TIBCO BusinessWorks project in dry-run mode
$ bal migrate-tibco path/to/tibco-project --dry-run
or
$ bal migrate-tibco path/to/tibco-project -d
This will run the parsing and analysis phases and generate the report.html
file without actually performing Ballerina package generation.
Output
- Creates a new Ballerina package with
_converted
suffix in the parent directory.
Migration summary
- When you run the tool it will generate a
report.html
file in the output directory with migration summary.
Unhandled activities
- If the tool encounters any activity which it does not know how to convert it will generate a placeholder "unhandled" function with a comment containing the relevant part of the process file.
function unhandled(map<xml> context) returns xml|error { //FIXME: [ParseError] : Unknown activity //<bpws:empty name="OnMessageStart" xmlns:tibex="http://www.tibco.com/bpel/2007/extensions" tibex:constructor="onMessageStart" tibex:xpdlId="c266c167-7a80-40cc-9db2-60739386deeb" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"/> //<bpws:empty name="OnMessageStart" xmlns:tibex="http://www.tibco.com/bpel/2007/extensions" tibex:constructor="onMessageStart" tibex:xpdlId="c266c167-7a80-40cc-9db2-60739386deeb" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable"/> return xml `<root></root>`; }
Supported TIBCO BusinessWorks activities
invoke
pick
empty
reply
throw
assign
forEach
extensionActivity
receiveEvent
activityExtension
bw.internal.end
bw.http.sendHTTPRequest
bw.restjson.JsonRender
bw.restjson.JsonParser
bw.http.sendHTTPResponse
bw.file.write
bw.generalactivities.log
bw.xml.renderxml
bw.generalactivities.mapper
bw.internal.accumulateend
extActivity
com.tibco.plugin.mapper.MapperActivity
com.tibco.plugin.http.HTTPEventSource
com.tibco.pe.core.AssignActivity
com.tibco.plugin.http.HTTPResponseActivity
com.tibco.plugin.xml.XMLRendererActivity
com.tibco.plugin.xml.XMLParseActivity
com.tibco.pe.core.LoopGroup
com.tibco.pe.core.WriteToLogActivity
com.tibco.pe.core.CatchActivity
com.tibco.plugin.file.FileReadActivity
com.tibco.plugin.file.FileWriteActivity
com.tibco.plugin.jdbc.JDBCGeneralActivity
com.tibco.plugin.json.activities.RestActivity
com.tibco.pe.core.CallProcessActivity
com.tibco.plugin.soap.SOAPSendReceiveActivity
com.tibco.plugin.json.activities.JSONParserActivity
com.tibco.plugin.json.activities.JSONRenderActivity
com.tibco.plugin.soap.SOAPSendReplyActivity
com.tibco.pe.core.WriteToLogActivity
Limitations
- Currently supports only TIBCO BusinessWorks 5.