特定のビジネス・オブジェクト統合の構成

この最後のセクションでは、特定のOracle Sales and Serviceアプリケーション・ビジネス・オブジェクト内にOCM埋込みフォルダUIを追加するために必要なステップを実行します。

この項では、商談を再度使用しますが、すべてのビジネス・オブジェクトは、サービス・リクエスト、キャンペーン、イベントなどのこれらのステップを使用して更新できます。これには、商談内に一意のOCMフォルダIDを格納するカスタム・フィールドの作成が含まれます。これらのステップでは、商談に固有のOCMフォルダIDを使用して、マッシュアップを介してOCM埋込みフォルダUIを表示する商談詳細ページに「文書」タブも追加します。

カスタム・フィールドの作成

カスタム・フィールドは、作成されるビジネス・オブジェクトに固有です。これらの変数は、作成されるビジネス・オブジェクトの各インスタンスに対して一意です。

特定の商談項目に関連する一意のOCMフォルダIDを含むカスタム・フィールドを作成するには:
  1. アプリケーション・コンポーザを再入力するには、ページの左上隅にある「ツール」をクリックし、ドロップダウン・リストから「アプリケーション・コンポーザ」を選択します。
  2. 左側のナビゲーション・メニューから、「オブジェクト」「Standardオブジェクト」「商談」「フィールド」の順に選択します。
  3. 「フィールド」ページで、「カスタム」タブを選択し、「カスタム・フィールドの作成」アイコンをクリックします。
  4. 「フィールド・タイプの選択」ダイアログで、「テキスト」オプションを選択し、「OK」をクリックします。
  5. 「テキスト・フィールドの作成」ページで、次の手順を実行します。

    1. 「表示ラベル」フィールドで、名前をOCMFolderIdと指定します。[名前]フィールドは、[表示ラベル]フィールドで指定した値に基づいて自動的に入力されます。
    2. 「摘要」フィールドに、「OCM商談コラボレーション統合を使用している一意のフォルダIDを格納するための特定の商談オブジェクトのカスタム変数」というテキストを入力します。
    3. Save and Close」をクリックします。

ビジネス・オブジェクトの拡張

ビジネス・オブジェクトは、マッシュアップ(前述で作成したものなど)を使用して拡張し、ビジネス・オブジェクトUI内のOCMなどの外部アプリケーションを公開できます。

OCM統合を含めるための新しい商談ページ・レイアウトを作成するには:
  1. 左側のナビゲーション・メニューから「Standardオブジェクト」「商談」「ページ」の順に選択します。
  2. 「商談: ページ」ページの「詳細ページ・レイアウト」セクションで、「詳細ページ・レイアウトの複製」をクリックします。

    ノート:

    カスタム・ページがすでに作成されている場合は、そのページを新しいページを作成してステップ3をスキップするかわりにOCM統合に使用できます。
  3. 「レイアウトの複製」ダイアログで、次のフィールドに入力します。

    1. 「新規レイアウト名」フィールドで、名前をOCMEmbeddedUIIntegrationとして指定します。
    2. 「ソース・レイアウト」フィールドで、ドロップダウン・メニューから「Standardレイアウト」を選択します。
    3. 「保存して編集」をクリックします。
  4. 「詳細レイアウト」ページで、「サブタブ・リージョン」セクションの左側のナビゲーション・メニューの下部から「追加」アイコンを選択し、OCM埋込みUIを追加します。
  5. 「マッシュアップ・コンテンツ」オプションを選択します。「次へ」をクリックします。
  6. 次のページで、前に作成したOCMEmbeddedFolderUIMashupオプションを選択し、「挿入」をクリックします。
  7. 次のページで、次のフィールドに入力します。

    1. 「表示ラベル」フィールドに、「ドキュメント」と入力します。
    2. 「表示アイコン」で、「アイコンの変更」をクリックして、ドキュメント表示アイコンが商談UIにタブとして表示されるようにします。
    3. 「スクリプトの編集」フィールドに次のスクリプトを貼り付けます。
      println("Opportunity Documents Tab Selected: " + Name)
      // Get the current user security context
      def secCtx = adf.context.getSecurityContext()
      // Get the current OCM user id based off the current Oracle Sales and Service User
      def OCMUserId = adf.util.OCMSearchUserFunction(secCtx.getUserName())
      // Now check to see if the OCM user has been shared to this folder
      boolean isFolderShared = adf.util.OCMIsFolderSharedFunction(OCMFolderId_c, OCMUserId)
      if (!isFolderShared) {
        // Share the current user as a Manager to the OCM Folder associated to this item
        adf.util.OCMShareFolderFunction(OCMFolderId_c, OCMUserId, "manager")
      }
      println("Loading OCM Embedded Docs UI")
      return OCMFolderId_c +'?options={"documentsView":{"layout":"grid","header":{"create":{"folder":true},"upload":true,"trash":true},"actions":{"open":{"file":true},"uploadNewVersion":true,"download":true,"delete":true,"shareLink":true,"members":true}},"documentViewer":{"actions":{"download":true,"uploadNewVersion":true,"shareLink":true},"sidebar":{"conversation":true}}}'
      

      ノート:

      このスクリプトは、フォルダにアクセスする各ユーザーにマネージャ・ロールを自動的に割り当てます。これは、他のユーザーにコントリビュータ・ロールを付与しながら、商談所有者にマネージャ・ロールを付与するようにさらに調整できます。
    4. 「次へ」ボタンをクリックします。
    5. Save and Close」をクリックします。

イベント・トリガーの追加

イベント・トリガーはイベントをチェックし、そのイベントが発生すると、トリガーに関連付けられたコードを実行します。

OCMCreateFolderTrigger

商談の作成時に関連するOCMフォルダを作成するためのサーバー・スクリプト・オブジェクト・トリガーを追加するには:

  1. 左側のナビゲーション・ペインから、「Standardオブジェクト」「商談」「サーバー・スクリプト」の順に選択します。
  2. サーバー・スクリプトの「商談」ページで、「トリガー」タブを選択します。
  3. 「オブジェクト・トリガー」セクションで、「新規トリガーの追加」をクリックします。
  4. 「オブジェクト・トリガーの作成」ページで、次のフィールドに入力します。

    1. 「トリガー」ドロップダウン・メニューから、「データベースに挿入する前に」を選択します。
    2. 「トリガー名」フィールドで、トリガー名をOCMCreateFolderTriggerとして指定します。
    3. 「説明」フィールドに、「作成する商談に関連付けられたOCMフォルダの作成」というテキストを入力します。
    4. 「スクリプトの編集」フィールドで、次のスクリプトを貼り付けます。<OCMRootFolderId>は、前述の最初のステップ(F572711F9E557436A646AEC295F044A3C39B0など)でOCMで取得された実際のOCMルート・フォルダIDに置き換わります。
      println("Opportunity.BeforeInsert(OCMCreateFolderTrigger): " + Name)
      def OCMParentFolderId = "<OCMRootFolderId>"
      // Create a new OCM folder under the parent folder based off the item name
      println("Create OCM Opportunity Folder under Pararent Folder Id: " + OCMParentFolderId)
      def OCMFolderId = adf.util.OCMCreateFolderFunction(OCMParentFolderId, Name)
      // and assign that new folder id to the OCMFolderId item variables
      setAttribute("OCMFolderId_c", OCMFolderId)
    5. Save and Close」をクリックします。

OCMDeleteFolderTrigger

サーバー・スクリプト・オブジェクト・トリガーを追加するには、新しい「オブジェクト・トリガーの作成」ページで、商談の削除時に関連するOCMフォルダを削除します。

ノート:

実装者は、OCM商談フォルダに配置されたコンテンツを削除した後でも保持する必要があることが判明した場合、このステップを実装しないことを選択できます。


  1. 「トリガー」ドロップダウン・メニューから、「データベースでの削除前」を選択します。
  2. 「トリガー名」フィールドで、トリガー名をOCMDeleteFolderTriggerとして指定します。
  3. 「説明」フィールドに、「削除される商談に関連付けられたOCMフォルダの削除」と入力します。
  4. 「スクリプトの編集」フィールドに次のスクリプトを貼り付けます。
    println("Opportunity.BeforeDelete(OCMDeleteFolderTrigger): " + Name + "(" + OCMFolderId_c + ")")
    // Make sure that we have a folder to delete
    if (OCMFolderId_c != null) {
      adf.util.OCMDeleteFolderFunction(OCMFolderId_c)
    } else {
      println("Warning: No OCMFolderId associated to the Opportunity?")
    }
  5. Save and Close」をクリックします。