Versions Compared

Key

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

...

...

Table of Contents
stylenone

Oracle OTBI projects can either source catalog objects from a source code repository or Development OTBI instances. In your OTBI project used to build and deploy WebCatalog objects you will either have the option to Populate from Git (or other SCM type) or Populate from OTBI Web Catalog on files. Similar to other technologies, FlexDeploy can sync files from a development server to a source code repository. This helps implement DevOps best practices to source control developer code.

...

Here is source code for the build workflow. You will need to update the steps in the workflow according to your Git configuration (e.g. Git Instance, sparse checkout folder, etc.). Also, keep in mind that we are running this build against the master branch (stream), if you want to commit on a different branch then create the stream on the project as appropriate.

Expand
titleSample Workflow
Code Block
languagexml
name: Extract WebCatalog
description: ''
steps:
  - id: '1'
    name: Git Clone
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: clone
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefiles
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_BRANCH
          value:
            value: main
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_DEPTH
          value:
            value: '1'
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_SPARSE_CHECKOUT_FOLDERS
          value:
            value: ''
            isExpression: false
          isEncrypted: false
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '2'
    name: exportWebCatalog
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonOTBIPlugin
      pluginOperation: exportWebCatalog
      inputs:
        - name: FDOTBI_INP_EXPORT_FOLDER
          value:
            value: ../obieefiles/OBIEECatalog
            isExpression: false
          isEncrypted: false
        - name: FDOTBI_INP_COPY_PERMISSIONS
          value:
            value: 'true'
            isExpression: false
          isEncrypted: false
        - name: FDOTBI_INP_PRESERVE_TIMESTAMPS
          value:
            value: 'false'
            isExpression: false
          isEncrypted: false
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '3'
    name: Add any new Files
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: add
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefiles
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_FILELIST
          value:
            value: '--all .'
            isExpression: false
          isEncrypted: false
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '4'
    name: Commit to Git
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: commit
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefiles
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_NAME
          value:
            value: FD_WF_USER
            isExpression: true
          isEncrypted: false
        - name: FDGIT_INP_EMAIL
          value:
            value: FD_WF_USER_EMAIL
            isExpression: true
          isEncrypted: false
        - name: FDGIT_INP_REVISION_MESSAGE
          value:
            value: OBIEE files added from flexdeploy workflow.
            isExpression: false
          isEncrypted: false
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '5'
    name: Push to Central Repository
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: push
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefiles
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_BRANCH
          value:
            value: main
            isExpression: false
          isEncrypted: false
        - name: FDGIT_INP_FOLLOW_TAGS
          value:
            value: 'false'
            isExpression: false
          isEncrypted: false
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
Tip

We are referencing Git in the example above, but plugins exist for many other popular source control management systems as well and a similar workflow can be created to accomplish the same task.

downloadWebCatalog

This operation will also export/download objects from the OTBI WebCatolog.  The difference is that this operation does not require a package-based deployment project and can be called from within a utility workflow.

...

Expand
titleSample Workflow
Code Block
languagexml
name: downloadWebCatalogs
description: ''
stepsinputs:
  - idcode: '1'INPUT_WEB_CATALOG_ITEMS
    namedisplayName: GitWeb Catalog CloneItems
    typedataType: INVOKE_PLUGINString
    datasubDataType: TextField
     pluginNamedefaultValueExpression: FlexagonGITPluginfalse
      pluginOperationlistDataExpression: clonefalse
    multiselect: false
inputs:    required: false
   - nameencrypted: FDGIT_INP_INSTANCE_CODEfalse
    hideWhen:
      valuetype: equals
      negate: false
   value: FLEXTEST   values: []
    disableWhen:
      type: equals
      negate: false
      values: []
steps:
  - id: '1'
    name: Git Clone
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: clone
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../otbifiles
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEST_SUBFOLDERBRANCH
          value:
            value: ../obieefilesmain
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_BRANCHTREELESS_CLONE
          value:
            value: main'false'
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEPTH
          value:
            value: '1'
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_SPARSE_CHECKOUT_FOLDERS
          value:
            value: ''
            isExpression: false
          isEncrypted: 'false'
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '2'
    name: downloadWebCatalog
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonOTBIPlugin
      pluginOperation: downloadWebCatalog
      inputs:
        - name: FDOTBI_INP_OBJECT_PATH
          value:
            value: /shared/CustomINPUT_WEB_CATALOG_ITEMS
            isExpression: falsetrue
          isEncrypted: 'false'
        - name: FDOTBI_INP_DOWNLOAD_FOLDER
          value:
            value: ../obieefilesotbifiles/OBIEECatalogOTBICatalog
            isExpression: false
          isEncrypted: 'false'
        - name: FDOTBI_INP_COPY_PERMISSIONS
          value:
            value: 'true'
            isExpression: false
          isEncrypted: 'false'
        - name: FDOTBI_INP_PRESERVE_TIMESTAMPS
          value:
            value: 'false'
            isExpression: false
          isEncrypted: 'false'
        - name: FDOTBI_INP_DISCOVER_SUB_ITEMS
          value:
            value: Scorecard, Dashboard Group
            isExpression: false
          isEncrypted: 'false'
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '3'
    name: Add any new Files
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: add
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefilesotbifiles
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_FILELIST
          value:
            value: '--all .'
            isExpression: false
          isEncrypted: 'false'
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '4'
    name: Commit to Git
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: commit
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefilesotbifiles
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_NAME
          value:
            value: FD_WF_USER
            isExpression: true
          isEncrypted: 'false'
        - name: FDGIT_INP_EMAIL
          value:
            value: FD_WF_USER_EMAIL
            isExpression: true
          isEncrypted: 'false'
        - name: FDGIT_INP_REVISION_MESSAGE
          value:
            value: OTBI files added from flexdeploy workflow.
            isExpression: false
          isEncrypted: 'false'
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
  - id: '5'
    name: Push to Central Repository
    type: INVOKE_PLUGIN
    data:
      pluginName: FlexagonGITPlugin
      pluginOperation: push
      inputs:
        - name: FDGIT_INP_INSTANCE_CODE
          value:
            value: FLEXTEST
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_DEST_SUBFOLDER
          value:
            value: ../obieefilesotbifiles
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_BRANCH
          value:
            value: main
            isExpression: false
          isEncrypted: 'false'
        - name: FDGIT_INP_FOLLOW_TAGS
          value:
            value: 'false'
            isExpression: false
          isEncrypted: 'false'
      endpointInstanceOverride:
        isExpression: false
      consumesArtifacts: false
      producesArtifacts: false
      endpointSelection:
        choice: All
      endpointExecution:
        choice: Any
      outputs: []
      userInputs: []
      userOutputs: []
Tip

We are referencing Git in the example above, but plugins exist for many other popular source control management systems as well, and a similar workflow can be created to accomplish the same task.

...