exportAPEXApplications
Export APEX applications from App Builder environment. One or more Application is exported based on provided inputs. You can use this operation to export applications from development environment and commit to SCM on periodic basis. See example workflow below on this page. Example workflow is exporting applications in apexexport folder and then Git repository is cloned in to apexgitrepo, eventually exported files are copied in to cloned repository and committed.
Environment/Instance Properties
Property Name | Property Code | Required | Description |
---|---|---|---|
Oracle SQLcl Home | FD_SQLCL_HOME | Yes | Folder where SQLcl is installed. Use JDK 8 for Endpoint Java due to SQLcl requirements. |
APEX User | FDAPEX_USER | Yes | Provide database user APEX_xxxxx or owner (parsing schema) of the application for export and import operations. You can use system user as well. |
APEX Password | FDAPEX_PASSWORD | Yes | Password for APEX User. |
Oracle Database URL | FDORA_URL | Yes | JDBC URL for Oracle database. For example:
Connecting to Oracle Autonomous Database Once the Autonomous Database is created on Oracle cloud, download the client credentials zip file. You will need the admin userid and password. Unzip the client credentials zip file on endpoint where it will be used. You can mostly use localhost endpoint for this. For example, /home/flexdeploy/wallets/<wallet zip name>
|
Project Properties
Property Name | Property Code | Required | Description |
---|---|---|---|
Export Supporting Object Definitions |
| No | Specify whether to export supporting object definitions with your application. |
| No | Specify whether to include public reports with your application. | |
| No | Specify whether to include interactive report or interactive grid subscription settings with your application. | |
| No | Specify whether to include Developer Comments in your application export. | |
| No | Check to include Translations with your application export. |
Inputs
Input Name | Input Code | Required | Description |
---|---|---|---|
Workspace Name |
| No | APEX workspace name. If not provided, all applications matching name will be exported. |
Application Name |
| No | APEX application name. If not provided, all applications from workspace will be exported. If both names are not provided then all applications will be exported. |
Export Folder |
| No | Absolute or relative to temp directory path for exported applications. |
Outputs
Output Name | Description |
---|---|
Artifacts
This operation doesn’t consume or produce any artifacts.
Endpoint Selection
This operation will select all available endpoints associated to the environment/instance. You can use any Endpoint where SQLcl is installed and has connectivity to database using JDBC URL. We recommend use of LOCALHOST endpoint if connectivity can be established between FlexDeploy and your APEX database.
Endpoint Execution
This operation will execute on any one of the selected endpoints and will be random in the determination of which one.
Example Workflow
<?xml version="1.0" encoding="UTF-8"?> <ns0:WorkFlow xmlns:ns1="http://flexagon.com/flexdeploy/workflow/common" xmlns:ns0="http://flexagon.com/flexdeploy/workflow"> <ns1:Name>Export Apex Applications</ns1:Name> <ns1:Description></ns1:Description> <ns0:Steps> <ns0:Step> <ns1:Name>exportAPEXApplications</ns1:Name> <ns1:StepId>1</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonOracleAPEXPlugin</ns0:PluginName> <ns0:PluginOperation>exportAPEXApplications</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDAPEX_INP_WORKSPACE_NAME</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDAPEX_INP_APPLICATION_NAME</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDAPEX_INP_EXPORT_FOLDER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>apexexport</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> <ns0:Step> <ns1:Name>Git Clone</ns1:Name> <ns1:StepId>2</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonGITPlugin</ns0:PluginName> <ns0:PluginOperation>clone</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>GITDEMO</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>apexgitrepo</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_BRANCH</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>master</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_DEPTH</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>Integer</ns1:Type> <ns0:Text>1</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_SPARSE_CHECKOUT_FOLDERS</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>APEXV2</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> <ns0:Step> <ns1:Name>Copy exported files to local Git repo</ns1:Name> <ns1:StepId>3</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonFilePlugin</ns0:PluginName> <ns0:PluginOperation>copy</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:EndpointSelection> <ns0:EndpointSelectionChoice>All</ns0:EndpointSelectionChoice> </ns0:EndpointSelection> <ns0:EndpointExecutionChoice>Any</ns0:EndpointExecutionChoice> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDFILE_INP_FILE_FILTER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>*.sql</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDFILE_INP_FILE_FILTER_EXCLUDED</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDFILE_INP_SOURCE_PATH</ns0:Name> <ns0:ValueType>Expression</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Value> <ns0:Expression>FD_TEMP_DIR + "/apexexport"</ns0:Expression> </ns0:Value> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDFILE_INP_TARGET_PATH</ns0:Name> <ns0:ValueType>Expression</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Value> <ns0:Expression>FD_TEMP_DIR + "/apexgitrepo/APEXV2"</ns0:Expression> </ns0:Value> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDFILE_INP_CLEAN_DIRECTORY</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>Boolean</ns1:Type> <ns0:Text>true</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> <ns0:Step> <ns1:Name>Add any new Files</ns1:Name> <ns1:StepId>4</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonGITPlugin</ns0:PluginName> <ns0:PluginOperation>add</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>GITDEMO</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>apexgitrepo</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_FILELIST</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>--all .</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> <ns0:Step> <ns1:Name>Commit to Git</ns1:Name> <ns1:StepId>5</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonGITPlugin</ns0:PluginName> <ns0:PluginOperation>commit</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>GITDEMO</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>apexgitrepo</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_NAME</ns0:Name> <ns0:ValueType>Expression</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Value> <ns0:Expression>FD_WF_USER</ns0:Expression> </ns0:Value> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_EMAIL</ns0:Name> <ns0:ValueType>Expression</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Value> <ns0:Expression>FD_WF_USER_EMAIL</ns0:Expression> </ns0:Value> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_REVISION_MESSAGE</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>new apex files</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> <ns0:Step> <ns1:Name>Push to Central Repository</ns1:Name> <ns1:StepId>6</ns1:StepId> <ns0:InvokePlugin> <ns0:PluginName>FlexagonGITPlugin</ns0:PluginName> <ns0:PluginOperation>push</ns0:PluginOperation> <ns0:consumesArtifacts>false</ns0:consumesArtifacts> <ns0:producesArtifacts>false</ns0:producesArtifacts> <ns0:PluginInputs> <ns0:PluginInput> <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>GITDEMO</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>apexgitrepo</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_BRANCH</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>String</ns1:Type> <ns0:Text>master</ns0:Text> </ns0:PluginInput> <ns0:PluginInput> <ns0:Name>FDGIT_INP_FOLLOW_TAGS</ns0:Name> <ns0:ValueType>Text</ns0:ValueType> <ns0:Encrypted>false</ns0:Encrypted> <ns1:Type>Boolean</ns1:Type> <ns0:Text>false</ns0:Text> </ns0:PluginInput> </ns0:PluginInputs> <ns0:UserInputs/> <ns0:PluginOutputs/> <ns0:UserOutputs/> </ns0:InvokePlugin> </ns0:Step> </ns0:Steps> </ns0:WorkFlow>
- style