Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

...

Property Name

Property Code

Required

Description

Oracle SQLcl Home

FD_SQLCL_HOME

Yes

Folder where SQLcl is installed.

Make sure that the endpoint Java Home is a high enough version for your SQLcl version.

APEX User

FDAPEX_USER

Yes

Provide database user APEX_xxxxx (APEX user requires INHERIT Privilege) 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:

  • jdbc:oracle:thin:@HOSTNAME:PORT:SID or

  • jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICENAME.

Include Page
Using wallet with oracle database
Using wallet with oracle database

...

Export and commit to Git
Code Block
languagexml
<?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>
 name: Export Apex Applications
description: ''
steps:
- id: '1'
  name: exportAPEXApplications
  type: INVOKE_PLUGIN
  data:
    pluginName: FlexagonOracleAPEXPlugin
    pluginOperation: exportAPEXApplications
    endpointInstanceOverride:
      isExpression: false
    consumesArtifacts: false
    producesArtifacts: false
    endpointSelection:
      choice: All
    endpointExecution:
      choice: Any
      stopOnError: false
    inputs:
    - name: FDAPEX_INP_WORKSPACE_NAME
      value:
        isExpression: false
      isEncrypted: false
    - name: FDAPEX_INP_APPLICATION_NAME
      value:
        isExpression: false
      isEncrypted: false
    - name: FDAPEX_INP_EXPORT_FOLDER
      value:
        value: apexexport
<ns0:PluginInputs>        isExpression: false
      <ns0isEncrypted:PluginInput> false
    outputs: []
    userInputs: []
    userOutputs: []
 <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name>
- id: '2'
  name: Git Clone
  type: INVOKE_PLUGIN
  data:
     <ns0:ValueType>Text</ns0:ValueType>
pluginName: FlexagonGITPlugin
    pluginOperation: clone
    endpointInstanceOverride:
      <ns0isExpression:Encrypted>false</ns0:Encrypted> false
    consumesArtifacts: false
    producesArtifacts: false
     <ns1:Type>String</ns1:Type>endpointSelection:
      choice: All
    endpointExecution:
      <ns0choice:Text>GITDEMO</ns0:Text> Any
      stopOnError: false
      </ns0inputs:PluginInput>
    -   name: FDGIT_INP_INSTANCE_CODE
       <ns0value:PluginInput>
        value: GITDEMO
        <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name>
isExpression: false
      isEncrypted: false
    - name: FDGIT_INP_DEST_SUBFOLDER
  <ns0:ValueType>Text</ns0:ValueType>    value:
        value: apexgitrepo
    <ns0:Encrypted>false</ns0:Encrypted>    isExpression: false
      isEncrypted: false
    - <ns1:Type>String</ns1name:Type> FDGIT_INP_BRANCH
      value:
        value: master
<ns0:Text>apexgitrepo</ns0:Text>        isExpression: false
      </ns0isEncrypted:PluginInput> false
    - name: FDGIT_INP_DEPTH
       <ns0value:PluginInput>
        value: '1'
        <ns0:Name>FDGIT_INP_NAME</ns0:Name>
isExpression: false
      isEncrypted: false
    -     <ns0:ValueType>Expression</ns0:ValueType>name: FDGIT_INP_SPARSE_CHECKOUT_FOLDERS
      value:
        value: APEXV2
 <ns0:Encrypted>false</ns0:Encrypted>       isExpression: false
      isEncrypted: false
  <ns1:Type>String</ns1:Type>
  outputs: []
    userInputs: []
    userOutputs: []
- id: '3'
  <ns0name:Value> Copy exported files to local Git repo
  type: INVOKE_PLUGIN
     data:
    <ns0:Expression>FD_WF_USER</ns0:Expression>
pluginName: FlexagonFilePlugin
    pluginOperation: copy
    endpointInstanceOverride:
      </ns0isExpression:Value> false
    consumesArtifacts: false
    producesArtifacts: false
  </ns0:PluginInput>  endpointSelection:
      choice: All
    endpointExecution:
  <ns0:PluginInput>    choice: Any
      stopOnError: false
     <ns0:Name>FDGIT_INP_EMAIL</ns0:Name>inputs:
    - name: FDFILE_INP_FILE_FILTER
      value:
    <ns0:ValueType>Expression</ns0:ValueType>     value: '*.sql'
        isExpression: false
  <ns0:Encrypted>false</ns0:Encrypted>    isEncrypted: false
    - name: FDFILE_INP_FILE_FILTER_EXCLUDED
      <ns1value:Type>String</ns1:Type>
        isExpression: false
      isEncrypted: false
<ns0:Value>    - name: FDFILE_INP_SOURCE_PATH
      value:
        <ns0value:Expression>FD FD_WF_USER_EMAIL</ns0:Expression>
 TEMP_DIR + "/apexexport"
        isExpression: true
      </ns0isEncrypted:Value> false
    - name: FDFILE_INP_TARGET_PATH
       </ns0value:PluginInput>
        value: FD_TEMP_DIR + "/apexgitrepo/APEXV2"
    <ns0:PluginInput>    isExpression: true
      isEncrypted: false
    - <ns0name:Name>FDGIT FDFILE_INP_REVISION_MESSAGE</ns0:Name>CLEAN_DIRECTORY
      value:
        value: 'true'
        <ns0:ValueType>Text</ns0:ValueType>
isExpression: false
      isEncrypted: false
    outputs: []
    userInputs: []
     <ns0:Encrypted>false</ns0:Encrypted>userOutputs: []
- id: '4'
  name: Add any new Files
  type: INVOKE_PLUGIN
  data:
    <ns1pluginName:Type>String</ns1:Type> FlexagonGITPlugin
    pluginOperation: add
    endpointInstanceOverride:
      <ns0isExpression:Text>new apexfalse
files</ns0:Text>    consumesArtifacts: false
    producesArtifacts: false
    </ns0endpointSelection:PluginInput>
      choice: All
    </ns0endpointExecution:PluginInputs>
      choice: Any
    <ns0:UserInputs/>  stopOnError: false
    inputs:
    - name: FDGIT_INP_INSTANCE_CODE
  <ns0:PluginOutputs/>    value:
        <ns0:UserOutputs/>
value: GITDEMO
        </ns0:InvokePlugin>isExpression: false
      </ns0isEncrypted:Step> false
    - <ns0:Step>name: FDGIT_INP_DEST_SUBFOLDER
      value:
   <ns1:Name>Push   to Central Repository</ns1value:Name> apexgitrepo
        <ns1isExpression:StepId>6</ns1:StepId> false
      isEncrypted: false
<ns0:InvokePlugin>    - name: FDGIT_INP_FILELIST
      <ns0:PluginName>FlexagonGITPlugin</ns0:PluginName>value:
        value: --all .
   <ns0:PluginOperation>push</ns0:PluginOperation>     isExpression: false
      <ns0isEncrypted:consumesArtifacts>false</ns0:consumesArtifacts> false
    outputs: []
     <ns0:producesArtifacts>false</ns0:producesArtifacts>
userInputs: []
    userOutputs: []
- id: '5'
  <ns0name:PluginInputs> Commit to Git
  type: INVOKE_PLUGIN
  data:
     <ns0pluginName:PluginInput> FlexagonGITPlugin
    pluginOperation: commit
    endpointInstanceOverride:
      <ns0:Name>FDGIT_INP_INSTANCE_CODE</ns0:Name>
isExpression: false
    consumesArtifacts: false
    producesArtifacts: false
     <ns0:ValueType>Text</ns0:ValueType>endpointSelection:
      choice: All
    endpointExecution:
      <ns0:Encrypted>false</ns0:Encrypted>choice: Any
      stopOnError: false
    inputs:
    - <ns1:Type>String</ns1name:Type> FDGIT_INP_INSTANCE_CODE
      value:
          <ns0:Text>GITDEMO</ns0:Text>value: GITDEMO
        isExpression: false
      </ns0isEncrypted:PluginInput> false
    - name: FDGIT_INP_DEST_SUBFOLDER
       <ns0value:PluginInput>
        value: apexgitrepo
        <ns0:Name>FDGIT_INP_DEST_SUBFOLDER</ns0:Name>isExpression: false
      isEncrypted: false
    - name: FDGIT_INP_NAME
      <ns0:ValueType>Text</ns0:ValueType>value:
        value: FD_WF_USER
         <ns0:Encrypted>false</ns0:Encrypted>
isExpression: true
      isEncrypted: false
    -     <ns1:Type>String</ns1:Type>
name: FDGIT_INP_EMAIL
      value:
        value:  <ns0:Text>apexgitrepo</ns0:Text>FD_WF_USER_EMAIL
        isExpression: true
      </ns0isEncrypted:PluginInput> false
    - name: FDGIT_INP_REVISION_MESSAGE
       <ns0:PluginInput>   value:
        value: new apex files
   <ns0:Name>FDGIT_INP_BRANCH</ns0:Name>     isExpression: false
      isEncrypted: false
    <ns0:ValueType>Text</ns0outputs:ValueType> []
    userInputs: []
    userOutputs: []
- id: '6'
  <ns0:Encrypted>false</ns0:Encrypted>
 name: Push to Central Repository
  type: INVOKE_PLUGIN
  data:
    pluginName: FlexagonGITPlugin
   <ns1:Type>String</ns1:Type>
 pluginOperation: push
    endpointInstanceOverride:
      isExpression: false
    <ns0consumesArtifacts:Text>master</ns0:Text> false
    producesArtifacts: false
    endpointSelection:
   </ns0:PluginInput>   choice: All
    endpointExecution:
      <ns0choice:PluginInput> Any
      stopOnError: false
    inputs:
    - <ns0name:Name>FDGIT FDGIT_INP_FOLLOW_TAGS</ns0:Name>INSTANCE_CODE
      value:
        value: GITDEMO
    <ns0:ValueType>Text</ns0:ValueType>    isExpression: false
      isEncrypted: false
    - <ns0name:Encrypted>false</ns0:Encrypted>
 FDGIT_INP_DEST_SUBFOLDER
      value:
        value: apexgitrepo
<ns1:Type>Boolean</ns1:Type>        isExpression: false
      isEncrypted: false
 <ns0:Text>false</ns0:Text>
     - name: FDGIT_INP_BRANCH
      value:
     </ns0:PluginInput>   value: master
        </ns0:PluginInputs>isExpression: false
      isEncrypted: false
    - <ns0:UserInputs/>name: FDGIT_INP_FOLLOW_TAGS
      value:
        <ns0:PluginOutputs/>value: 'false'
        isExpression: false
  <ns0:UserOutputs/>    isEncrypted: false
    </ns0:InvokePlugin>outputs: []
    userInputs: []
</ns0:Step>    </ns0userOutputs:Steps>
</ns0:WorkFlow> []