Correspondence Management ソリューションでは、「通信を作成」UI にカスタムアクションを追加できます。
このドキュメントのシナリオでは、通信を作成ユーザーインターフェイスでボタンを作成して、レターをレビュー用のPDFとして電子メールに添付して共有する方法を説明します。
このシナリオを完了するには、以下が必要になります。
通信を作成ユーザーインターフェイスにボタンを追加して、ボタンのアクション(ここではレビュー用のレターの送信)を指定するには、次の操作を行います。
https://'[server]:[port]'/[ContextPath]/crx/de
に移動し、管理者としてログインします。
appsフォルダーに、(configフォルダー内の)defaultAppフォルダーに類似したパス/構造でdefaultApp
という名前のフォルダーを作成します。 フォルダーの作成手順は次のとおりです。
次のパスにあるdefaultAppフォルダーを右クリックし、「ノードをオーバーレイ」を選択します。
/libs/fd/cm/config/defaultApp/
ノードをオーバーレイダイアログに次の値が表示されていることを確認します。
パス: /libs/fd/cm/config/defaultApp/
オーバーレイの場所: /apps/
ノードタイプを一致: オン
「OK」をクリックします。
「すべて保存」をクリックします。
acmExtensionsConfig.xml ファイル(/libs branch の下)のコピーを /apps branch の下に作成します。
「/libs/fd/cm/config/defaultApp/acmExtensionsConfig.xml」に移動します。
acmExtensionsConfig.xmlファイルを右クリックし、「コピー」を選択します。
「/apps/fd/cm/config/defaultApp/」にある defaultApp フォルダーを右クリックし、「貼り付け」を選択します。
「すべて保存」をクリックします。
apps フォルダーで新しく作成した acmExtentionsConfig.xml のコピーをダブルクリックします。ファイルが開いて編集可能になります。
次のコードを検索します。
<?xml version="1.0" encoding="utf-8"?>
<extensionsConfig>
<modelExtensions>
<modelExtension type="LetterInstance">
<customAction name="Preview" label="loc.letterInstance.preview.label" tooltip="loc.letterInstance.preview.tooltip" styleName="previewButton"/>
<customAction name="Submit" label="loc.letterInstance.submit.label" tooltip="loc.letterInstance.submit.tooltip" styleName="submitButton" permissionName="forms-users"/>
<customAction name="SaveAsDraft" label="loc.letterInstance.saveAsDraft.label" tooltip="loc.letterInstance.saveAsDraft.tooltip" styleName="submitButton" permissionName="forms-users"/>
<customAction name="Close" label="loc.letterInstance.close.label" tooltip="loc.letterInstance.close.tooltip" styleName="closeButton"/>
</modelExtension>
</modelExtensions>
</extensionsConfig>
レターを電子メールで送信するには、LiveCycle Forms ワークフローを使用します。次のよ追加うに、acmExtensionsConfig.xmlのmodelExtensionタグの下にcustomActionタグがあります。
<customAction name="Letter Review" label="Letter Review" tooltip="Letter Review" styleName="" permissionName="forms-users" actionHandler="CM.domain.CCRCustomActionHandler">
<serviceName>Forms Workflow -> SendLetterForReview/SendLetterForReviewProcess</serviceName>
</customAction>
modelExtension タグには、アクションボタンのアクション、権限、外観を設定する customAction 子タグのセットが含まれています。以下は customAction 設定タグの一覧です。
名前 | 説明 |
---|---|
name | 実行するアクションの英数字による名前。 このタグの値は必須です。modelExtension タグ内で一意であり、アルファベットで始まる必要があります。 |
label | アクションボタンに表示するラベル。 |
tooltip | ボタンのツールチップテキスト。ボタンにカーソルを置くと表示されます。 |
styleName | アクションボタンに適用するカスタムスタイルの名前。 |
permissionName | 対応するアクションは、ユーザーがpermissionNameで指定された権限を持つ場合にのみ表示されます。 permissionNameをforms-users と指定すると、すべてのユーザーがこのオプションにアクセスできます。 |
actionHandler | ユーザーがボタンをクリックしたときに呼び出されるActionHandlerクラスの完全修飾名です。 |
上記のパラメーター以外に、customAction には追加の設定を関連付けることができます。これらの追加の設定は、CustomActionオブジェクトを通じてハンドラーで使用できます。
名前 | 説明 |
---|---|
serviceName | customActionにserviceNameという名前の子タグが含まれている場合、関連するボタンまたはリンクをクリックすると、serviceNameタグで表される名前でプロセスが呼び出されます。 このプロセスの署名がLetter PostProcessと同じであることを確認します。 サービス名に「Forms Workflow ->」プレフィックスを追加します。 |
タグ名にcm_プレフィックスが含まれるパラメーター | customActionに名前cm_で始まる子タグが含まれる場合、後処理(レター後処理またはserviceNameタグで表される特別なプロセス)では、これらのパラメーターは、cm_プレフィックスが削除された関連タグの下の入力XMLコードで使用できます。 |
actionName | クリックが後処理に発生した場合は常に、送信されたXMLには、ユーザーアクションの名前を持つタグの下に、名前の付いた特別なタグが含まれます。 |
「すべて保存」をクリックします。
ACMExtensionsMessages.propertiesファイルには、通信を作成ユーザーインターフェイスの様々なフィールドのラベルとツールチップメッセージが含まれています。 カスタマイズしたアクションやボタンを機能させるために、/apps branch にこのファイルのコピーを作成します。
次のパスにあるlocaleフォルダーを右クリックし、「ノードをオーバーレイ」を選択します。
/libs/fd/cm/config/defaultApp/locale
ノードをオーバーレイダイアログに次の値が表示されていることを確認します。
パス: /libs/fd/cm/config/defaultApp/locale
オーバーレイの場所: /apps/
ノードタイプを一致: オン
「OK」をクリックします。
「すべて保存」をクリックします。
次のファイルを右クリックし、「コピー」を選択します。
/libs/fd/cm/config/defaultApp/locale/ACMExtensionsMessages.properties
次のパスにある locale フォルダーを右クリックし、「貼り付け」を選択します。
/apps/fd/cm/config/defaultApp/locale/
ACMExtensionsMessages.properties ファイルがローカルフォルダーにコピーされます。
新しく追加されたカスタムアクションまたはカスタムボタンのラベルをローカライズするには、関連するロケールのACMExtensionsMessages.propertiesファイルを/apps/fd/cm/config/defaultApp/locale/
に作成します。
たとえば、この記事で作成したカスタムアクションまたはボタンをローカライズするには、次のエントリを使用して ACMExtensionsMessages_fr.properties という名前のファイルを作成します。
loc.letterInstance.letterreview.label=Revue De Lettre
同様に、このファイルにツールチップやスタイルなどのプロパティを追加することもできます。
「すべて保存」をクリックします。
サーバー側の変更をすべて加えた後、Adobe Asset Composer 構築ブロックバンドルを再起動します。このシナリオでは、サーバー側のacmExtensionsConfig.xmlファイルとACMExtensionsMessages.propertiesファイルが編集されるので、AdobeAsset Composer構築ブロックバンドルを再起動する必要があります。
ブラウザーのキャッシュをクリアする必要が生じる場合があります。
https://[host]:'port'/system/console/bundles
にアクセスします。必要に応じて、管理者としてログインします。
Adobe Asset Composer 構築ブロックバンドルを検索します。バンドルを再起動します。「停止」をクリックした後、「開始」をクリックします。
Adobe Asset Composer 構築ブロックバンドルを再起動した後、通信を作成ユーザーインターフェイスにカスタムボタンが表示されます。通信を作成ユーザーインターフェイスでレターを開いて、カスタムボタンをプレビューできます。
通信を作成ユーザーインターフェイスはデフォルトで、次の場所にある cm.domain.js ファイルの ActionHandler を実装します。
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccr/js/cm.domain.js
カスタムのアクション処理の場合は、CRX の /apps branch にある cm.domain.js ファイルのオーバーレイを作成します。
アクションやボタンをクリックしたときのアクションやボタンの処理には、次のロジックが含まれます。
https://'[server]:[port]'/[ContextPath]/crx/de
にアクセスします。必要に応じて、管理者としてログインします。
apps フォルダーに、次のフォルダーに類似した構造で、CRX の /apps branch に js
という名前のフォルダーを作成します。
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
フォルダーの作成手順は次のとおりです。
次のパスにあるjsフォルダーを右クリックし、「ノードをオーバーレイ」を選択します。
/libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
ノードをオーバーレイダイアログに次の値が表示されていることを確認します。
パス: /libs/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
オーバーレイの場所: /apps/
ノードタイプを一致: オン
「OK」をクリックします。
「すべて保存」をクリックします。
次の手順を使用して、ccrcustomization.jsという名前のファイルをjsフォルダーに作成し、ボタンのアクション処理のコードを指定します。
次のパスにあるjsフォルダーを右クリックし、作成/ファイルを作成を選択します。
/apps/fd/cm/ccr/gui/components/admin/clientlibs/ccrui/js
ファイルに ccrcustomization.js という名前を付けます。
ccrcustomization.js ファイルをダブルクリックして、CRX で開きます。
ファイルに次のコードを貼り付けて、「すべて保存」をクリックします。
/* for adding and handling custom actions in Extensible Toolbar.
* One instance of handler will be created for each action.
* CM.domain.CCRCustomActionHandler is actionHandler class.
*/
var CCRCustomActionHandler;
CCRCustomActionHandler = CM.domain.CCRCustomActionHandler = new Class({
className: 'CCRCustomActionHandler',
extend: CCRDefaultActionHandler,
construct : function(action,model){
}
});
/**
* Called when user user click an action
* @param extraParams additional arguments that may be passed to handler (For future use)
*/
CCRCustomActionHandler.prototype.handleAction = function(extraParams){
if (this.action.name == CCRCustomActionHandler.SEND_FOR_REVIEW) {
var sendForReview = function(){
var serviceName = this.action.actionConfig["serviceName"];
var inputParams = {};
inputParams["dataXML"] = this.model.iccData.data;
inputParams["letterId"] = this.letterVO.id;
inputParams["letterName"] = this.letterVO.name;
inputParams["mailId"] = $('#email').val();
/*function to invoke the LivecyleService */
ServiceDelegate.callJSONService(this,"lc.icc.renderlib.serviceInvoker.json","invokeProcess",[serviceName,inputParams],this.onProcessInvokeComplete,this.onProcessInvokeFail);
$('#ccraction').modal("hide");
}
if($('#ccraction').length == 0){
/*For first click adding popup & setting letterName.*/
$("body").append(popUp);
$("input[id*='letterName']").val(this.letterVO.name);
$(document).on('click',"#submitLetter",$.proxy( sendForReview, this ));
}
$('#ccraction').modal("show");
}
};
/**
* Should the action be enabled in toolbar
* @param extraParams additional arguements that may be passed to handler (For future use)
* @return flag indicating whether the action should be enabled
*/
CCRCustomActionHandler.prototype.actionEnabled = function(extraParams){
/*can be customized as per user requirement*/
return true;
};
/**
* Should the action be visible in toolbar
* @param extraParams additional arguments that may be passed to handler (For future use)
* @return flag indicating whether the action should be enabled
*/
CCRCustomActionHandler.prototype.actionVisible = function(extraParams){
/*Check can be enabled for Non-Preview Mode.*/
return true;
};
/*SuccessHandler*/
CCRCustomActionHandler.prototype.onProcessInvokeComplete = function(response) {
ErrorHandler.showSuccess("Letter Sent for Review");
};
/*FaultHandler*/
CCRCustomActionHandler.prototype.onProcessInvokeFail = function(event) {
ErrorHandler.showError(event.message);
};
CCRCustomActionHandler.SEND_FOR_REVIEW = "Letter Review";
/*For PopUp*/
var popUp = '<div class="modal fade" id="ccraction" tabindex="-1" role="dialog" aria-hidden="true">'+
'<div class="modal-dialog modal-sm">'+
'<div class="modal-content">' +
'<div class="modal-header">'+
'<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</code></button>'+
'<h4 class="modal-title"> Send Review </h4>'+
'</div>'+
'<div class="modal-body">'+
'<form>'+
'<div class="form-group">'+
'<label class="control-label">Email Id</label>'+
'<input type="text" class="form-control" id="email">'+
'</div>'+
'<div class="form-group">'+
'<label class="control-label">Letter Name</label>'+
'<input id="letterName" type="text" class="form-control" readonly>'+
'</div>'+
'<div class="form-group">'+
'<input id="letterData" type="text" class="form-control hide" readonly>'+
'</div>'+
'</form>'+
'</div>'+
'<div class="modal-footer">'+
'<button type="button" class="btn btn-default" data-dismiss="modal"> Cancel </button>'+
'<button type="button" class="btn btn-primary" id="submitLetter"> Submit </button>'+
'</div>'+
'</div>'+
'</div>'+
'</div>';
このシナリオでは、次のコンポーネントを有効にします。これらのコンポーネントは、添付されたcomponents.zipファイルの一部です。
components.zipファイルをダウンロードして解凍し、DSCSample.jarファイルとSendLetterForReview.lcaファイルを取得します。 これらのファイルは、次の手順に従って使用します。components.zip
この手順は、OSGI設定を使用し、実装するカスタマイズのタイプにLC統合が必要な場合にのみ必要です。
LCA プロセスは LiveCycle サーバー上で実行され、サーバーアドレスとログイン情報が必要になります。
https://'[server]:[port]'/system/console/configMgr
に移動し、管理者としてログインします。
Adobe LiveCycle Client SDK Configuration を見つけて、「編集」(編集アイコン)をクリックします。「設定」パネルが開きます。
次の詳細を入力し、「保存」をクリックします。
電子メールサービスプロセスを有効にするために必要なLiveCycleプロセス。
このプロセスの処理を表示するか、独自の類似プロセスを作成するには、Workbench が必要になります。
https:/[lc server]/:[lc port]/adminui
で、Livecycleサーバーに管理者としてログインします。
ホーム/サービス/アプリケーションおよびサービス/アプリケーションの管理に移動します。
SendLetterForReviewアプリケーションが既に存在する場合は、この手順の残りの手順をスキップします。存在しない場合は、次の手順に進みます。
「読み込み」をクリックします。
「ファイルを選択」をクリックし、SendLetterForReview.lcaを選択します。
「プレビュー」をクリックします。
「読み込みの完了時にアセットをランタイムにデプロイ」を選択します。
「読み込み」をクリックします。
AEM サーバーにアクセスする必要のある LiveCycle サービスを AEM サーバーで指定します。
https:/[host]:'port'/system/console/configMgr
に管理者としてログインします。
AdobeLiveCycleクライアントSDK設定を探してクリックします。 AdobeLiveCycleのクライアントSDKの設定パネルが表示されます。
サービス名リストで+アイコンをクリックし、serviceName SendLetterForReview/SendLetterForReviewProcessを追加します。
「保存」をクリックします。
このシナリオでは、Correspondence Management で電子メールを送信できるようにするため、LiveCycle サーバーで電子メールサービスを設定します。
https:/[lc server]:[lc port]/adminui
のLivecycleサーバーに管理者の資格情報を使用してログインします。
ホーム/サービス/アプリケーションおよびサービス/サービスの管理に移動します。
「電子メールサービス」を検索してクリックします。
SMTP Hostで、電子メールサービスを設定します。
「保存」をクリックします。
Correspondence Management APIを使用するには、DSCSample.jar(このドキュメントに添付されているcomponents.zipに含まれています)をダウンロードし、LiveCycleサーバーにアップロードします。 DSCSample.jarファイルがLiveCycleサーバーにアップロードされると、AEMサーバーはDSCSample.jarファイルを使用してrenderLetter APIにアクセスします。
詳しくは、AdobeLiveCycleとのAEM Formsの接続を参照してください。
DSCSample.jarのcmsa.propertiesにあるAEMサーバーURLを更新します。次の場所にあります。
DSCSample.jar\com\adobe\livecycle\cmsa.properties
設定ファイルに次のパラメーターを指定します。
サーバー側で変更を加えるたびに LiveCycle サーバーは再起動します。独自の LiveCycle コンポーネントの作成について詳しくは、「カスタムの DSC 開発を通じた LiveCycle ES ソフトウェアの拡張」を参照してください。
DSCSample.jarファイルはrenderLetter APIを使用します。 renderLetter APIについて詳しくは、インターフェイスLetterRenderServiceを参照してください。
DSCSample.jarファイルはrenderLetter APIを使用して、Cが入力として与えたXMLデータからのPDFバイトとしてレターをレンダリングします。 renderLetter およびその他の API について詳しくは、「レターのレンダリングサービス」を参照してください。
Livecycle Workbenchを起動してログインします。
Window/Show表示/Componentsを選択します。 コンポーネント表示がWorkbench ES2に追加されます。
「コンポーネント」を右クリックし、「コンポーネントをインストール」を選択します。
ファイルブラウザーでDSCSample.jarファイルを選択し、「開く」をクリックします。
RenderWrapperを右クリックし、「開始コンポーネント」を選択します。 コンポーネントが起動すると、コンポーネント名の横に緑色の矢印が表示されます。
レビュー用のレターを送信するためのアクションとボタンを設定した後、次の操作を行います。
ブラウザーのキャッシュをクリアします。
通信を作成UIで、「レターのレビュー」をクリックし、レビュー担当者の電子メールIDを指定します。
「送信」をクリックします。
レビュー担当者は、PDF ファイルとして添付されたレターが含まれる電子メールを受信します。