特定のビジネス・オブジェクト統合の構成
この最後のセクションでは、特定のOracle Sales and Serviceアプリケーション・ビジネス・オブジェクト内にOCM埋込み資産リポジトリUIを追加するために必要なステップを実行します。
この項では、サービス・リクエストを再度使用しますが、ビジネス・オブジェクトは商談、キャンペーン、イベントなどのステップを使用して更新できます。これには、OCMベース資産リポジトリIDおよび一意のOCMコレクションIDを格納するためのサービス・リクエスト内のカスタム・フィールドが含まれます。これらのステップでは、サービス・リクエストに固有のOCMコレクションIDを使用してMashupを介してOCM埋込み資産リポジトリUIを公開する「資産」タブをサービス・リクエスト詳細ページにも追加します。また、サービス・リクエストが解決されると、関連するOCMドキュメントもOCMアセット・リポジトリ・コレクションにコピーされます。
カスタム・フィールドの作成
カスタム・フィールドは、作成されるビジネス・オブジェクトに固有です。これらの変数は、ビジネス・オブジェクトからアクセス可能であり、作成されたビジネス・オブジェクトの各インスタンスに対して一意にすることができます。
OCMコレクションID
カスタム・フィールドは、作成されるビジネス・オブジェクトに固有です。これらの変数は、ビジネス・オブジェクトからアクセス可能であり、作成されたビジネス・オブジェクトの各インスタンスに対して一意にすることができます。
- アプリケーション・コンポーザを再入力するには、ページの左上隅にある「ツール」をクリックし、ドロップダウン・リストから「アプリケーション・コンポーザ」を選択します。
- 左側のナビゲーション・メニューから、「オブジェクト」、「Standardオブジェクト」、「サービス・リクエスト」、「フィールド」の順に選択します。
- 「フィールド」ページで、「カスタム」タブを選択し、「カスタム・フィールドの作成」アイコンをクリックします。
- 「フィールド・タイプの選択」ダイアログで、「テキスト」オプションを選択して「OK」をクリックします。
- 「テキスト・フィールドの作成」ページで、次のフィールドに入力します。
- 「表示ラベル」フィールドで、OCMCollectionIdという名前を指定します。[名前]フィールドは、[表示ラベル]フィールドで指定した値に基づいて自動的に入力されます。
- 「摘要」フィールドに、「OCM Asset Repository Records Management統合で使用されている一意の資産リポジトリ収集IDを格納するための特定のサービス・リクエスト・オブジェクトのカスタム変数」というテキストを入力します。
- 「保存」と「閉じる」をクリックします。
OCMベース・リポジトリID
- 「表示ラベル」フィールドで、OCMBaseRepositoryIdという名前を指定します。[名前]フィールドは、[表示ラベル]フィールドで指定した値に基づいて自動的に入力されます。
- 「摘要」フィールドに、「OCM資産リポジトリ・レコード管理統合用に回収が作成される場所として使用されるOCMベース・リポジトリIDを含むカスタム変数」というテキストを入力します。
- 「制約」セクションで、「更新可能」の選択を解除します。
- 「固定値」フィールドに、上で保存されたOCMベース資産リポジトリIDの値を入力します(12424F28875F405FB2144A6FD4DD9FCなど)。
- 「保存して閉じる」をクリックします。
ビジネス・オブジェクトの拡張
ビジネス・オブジェクトは、マッシュアップ(前述で作成したものなど)を使用して拡張し、ビジネス・オブジェクトUI内のOCMなどの外部アプリケーションを公開できます。
- 左側のナビゲーション・メニューから、「オブジェクト」、「Standardオブジェクト」、「サービス・リクエスト」、「ページ」の順に選択します。
- 「サービス・リクエスト: ページ」ページの「詳細ページ・レイアウト」セクションで、「重複詳細ページ・レイアウト」アイコンをクリックします。
ノート:
カスタム・ページがすでに作成されている場合は、新しいページを作成してステップ3をスキップするかわりに、そのページをOCM資産統合に使用できます。 - 「レイアウトの複製」ダイアログで、次のフィールドに入力します。
- 「新規レイアウト名」フィールドで、名前をOCMEmbeddedUIIntegrationと指定します。
- 「ソース・レイアウト」フィールドで、ドロップダウン・メニューから「Standardレイアウト」を選択します。
- 「保存して編集」をクリックします。
- 「詳細レイアウト」ページで、「サブタブ・リージョン」セクションの左側のナビゲーション・メニューの下部から「追加」アイコンを選択し、OCM埋込みUIを追加します。
- 「マッシュアップ・コンテンツ」オプションを選択します。「次」をクリックします。
- 次のページで、前に作成したOCMEmbeddedAssetsUIMashupオプションを選択し、「挿入」をクリックします。
- 次のページで、次のフィールドに入力します。
- 「表示ラベル」フィールドに、Assetsと入力します。
- 「表示アイコン」で、サービス・リクエストUIに表示されるデフォルト・アイコンをタブとして変更する場合は、「アイコンの変更」をクリックします。
- 「スクリプトの編集」フィールドに、次のスクリプトを貼り付けます。
println("Service Request Assets Tab Selected: " + SrNumber) // Get the current user security context def secCtx = adf.context.getSecurityContext() // Check to see if the OCM user has been shared to this Repository Collection // NOTE: The user must already be manually shared as at least a contributor to the Base Repository either directly or indirectly through a group for this integration to work boolean isCollectionShared = adf.util.OCMIsRepositoryCollectionSharedAsContributorFunction(OCMBaseRepositoryId_c, OCMCollectionId_c, secCtx.getUserName()) if (!isCollectionShared) { // If not then share the current user as a Contributor to the OCM Collection associated to this item adf.util.OCMShareCollectionFunction(OCMCollectionId_c, secCtx.getUserName(), "contributor") } println("Loading OCM Embedded Assets UI") return '?options={"assetsView":{"select":"single","layout":"grid","sort":"relevance","header":{"add":{"upload":true,"documents":true},"collections":true},"filter":{"bar":{"capsules":false},"repositories":["' + OCMBaseRepositoryId_c + '"],"collections":["' + OCMCollectionId_c + '"]},"filterValue":{"repositoryId":"' + OCMBaseRepositoryId_c + '","collectionId":"' + OCMCollectionId_c + '","includeChildCategories":false},"sidebar":{"categories":true,"conversation":true,"properties":true},"actions":{"open":true,"download":true,"uploadNewVersion":true,"delete":true},"card":{"status":false}},"assetViewer":{"header":{"annotate":true,"fullScreen":true,"close":true},"actions":{"download":true,"uploadNewVersion":true,"makeCurrent":true},"sidebar":{"categories":true,"conversation":true,"properties":true,"renditions":true}},"dialogs":{"addToRepository":{"sidebar":{"categories":true},"default":{"collections":["' + OCMCollectionId_c + '"]}}}}'
ノート:
このスクリプトは、特定のアセット・リポジトリ・コレクションにアクセスする各ユーザーにコントリビュータ・ロールを自動的に割り当てます。これは、サービス・リクエスト所有者にマネージャ・ロールを付与し、他のユーザーにコントリビュータ・ロールを付与するために、さらに調整される可能性があります。 - 「次へ」ボタンをクリックします。
- 「保存して閉じる」をクリックします。
イベント・トリガーの追加
イベント・トリガーは、イベントをチェックし、そのイベントが発生すると、トリガーに関連付けられているコードを実行します。
OCMCreateCollectionTrigger
サーバー・スクリプト・オブジェクト・トリガーを追加して、サービス・リクエストの作成時に関連するOCMアセット・リポジトリ・コレクションを作成するには:
- 左側のナビゲーション・ペインから、「オブジェクト」、「Standardオブジェクト」、「サービス・リクエスト」、「サーバー・スクリプト」の順に選択します。
- サーバー・スクリプトのサービス・リクエスト・ページで、「トリガー」タブを選択します。
- 「オブジェクト・トリガー」セクションで、「新規トリガーの追加」をクリックします。
- 「オブジェクト・トリガーの作成」ページで、次のフィールドに入力します。
- 「トリガー」ドロップダウン・メニューから、「データベースに挿入する前に」を選択します。
- 「トリガー名」フィールドで、トリガー名をOCMCreateCollectionTriggerと指定します。
- 「説明」フィールドに、「作成するServiceRequestに関連付けられているOCMアセット・リポジトリ・コレクションの作成」というテキストを入力します。
- 「スクリプトの編集」フィールドに、次のスクリプトを貼り付けます。
println("ServiceRequest.BeforeInsert(OCMCreateCollectionTrigger): " + SrNumber); // Create a new Collection within the specified Asset Repository Id based off the item SrNumber def OCMCollectionId = adf.util.OCMCreateRepositoryCollectionFunction(OCMBaseRepositoryId_c, SrNumber); setAttribute("OCMCollectionId_c", OCMCollectionId);
- 「保存して閉じる」をクリックします。
OCMCopyDocumentsToCollectionTrigger
新しい「オブジェクト・トリガーの作成」ページでサーバー・スクリプト・オブジェクト・トリガーを追加して、サービス・リクエストの解決時に関連するOCMフォルダとその子フォルダ内のドキュメントをOCMリポジトリ・コレクションにコピーするには、次のフィールドに入力します。
ノート:
このトリガーは、Oracle Sales and Serviceビジネス・オブジェクトに解決オプションがあり、OCM文書統合で構成されている場合にのみ必要です。ドキュメント統合の詳細は、ドキュメント・コラボレーションによるOracle Sales and Serviceビジネス・オブジェクトの拡張方法について学習を参照してください。- 「トリガー」ドロップダウン・メニューから、「データベースでの更新前」を選択します。
- 「トリガー名」フィールドで、トリガー名をOCMCopyDocumentsToCollectionTriggerと指定します。
- 「摘要」フィールドに、「解決済としてマークされた場合、関連するOCMフォルダとその子フォルダ内の文書をレコード管理の関連コレクションにコピーします。」というテキストを入力します。
- 「スクリプトの編集」フィールドに、次のスクリプトを貼り付けます。
// If the status has been changed then copy all the associated documents to the associated repository collection if (isAttributeChanged('StatusCd')) { println("ServiceRequest.BeforeUpdate(OCMCopyDocumentsToCollectionTrigger): " + SrNumber + ":" + StatusCd + "(" + OCMFolderId_c + ":" + OCMCollectionId_c + ")") if (OCMFolderId_c == null) { println("WARNING: Associated OCM Folder for this Service Request (" + SrNumber + ") does not exist.") return false } if (OCMCollectionId_c == null) { println("WARNING: Unable to copy OCM Documents as there is no associated OCM Collection for this Service Request(" + SrNumber + ").") return false } // Get the Documents from the associated OCM Folder that need to be copied to the Collection def documents = (java.util.List)adf.util.OCMGetDocumentsByFolderIdFunction(OCMFolderId_c) if (documents.size() > 0) { // Copy the documents adf.util.OCMCopyDocumentsToRepositoryCollectionFunction(OCMBaseRepositoryId_c, OCMCollectionId_c, documents) } return true }
- 「保存して閉じる」をクリックします。