レターインスタンスにアクセスするための API

概要

Correspondence Management の「通信を作成」UI を使用して、作成中のレターインスタンスのドラフトを保存することができます。また、この UI には送信済みのレターインスタンスが存在します。

Correspondence Management には、送信済みまたはドラフトのレターインスタンスを取り扱うための一覧表示インターフェイスを構築できる API が用意されています。このAPIは、エージェントの送信済みおよびドラフトのレターインスタンスを一覧表示して開き、エージェントがドラフトまたは送信済みのレターインスタンスで作業を続行できるようにします。

レターインスタンスの取得

Correspondence Management は API を使用して、LetterInstanceService サービスからレターインスタンスを取得します。

メソッド 説明
getAllLetterInstances 入力クエリパラメーターに基づいてレターインスタンスを取得します。 すべてのレターインスタンスを取得するには、クエリパラメーターをヌルとして渡します。
getLetterInstance レターインスタンス ID に基づいて指定したレターインスタンスを取得します。
letterInstanceExists LetterInstance が指定した名前で存在するかどうかをチェックします。
メモ

LetterInstanceServiceはOSGIサービスで、Javaで@Referenceを使用してインスタンスを取得できます
クラスまたはsling.getService(LetterInstanceService. クラス)をJSPで使用します。

getAllLetterInstances の使用

下記の API は、クエリオブジェクトに基づいてレターインスタンスを検索します(送信済みとドラフトの両方)。クエリオブジェクトがnullの場合は、すべてのレターインスタンスを返します。 このAPIは、LetterInstanceVOオブジェクトのリストを返します。このリストは、レターインスタンスの追加情報を抽出するのに使用できます

構文: List getAllLetterInstances(Query query) throws ICCException;

パラメーター 説明
query query パラメーターは、レターインスタンスの検索またはフィルタリングに使用されます。ここでは、クエリはオブジェクトの最上位の属性/プロパティのみをサポートします。 クエリは、ステートメントで構成されます。ステートメントのオブジェクトで使用される「attributeName」は、レターインスタンスオブジェクト内のプロパティの名前です。

例 1:送信済みタイプのすべてのレターインスタンスを取得する

以下のコードで送信済みのレターインスタンスの一覧が返されます。ドラフトのみを取得するには、LetterInstanceType.COMPLETE.name()LetterInstanceType.DRAFT.name().に変更します

@Reference
LetterInstanceService letterInstanceService;
Query query = new Query();

List<LetterInstanceVO> submittedLetterInstances = new ArrayList<LetterInstanceVO>();

Statement statementForInstanceType = new Statement();
statementForInstanceType.setAttributeName("letterInstanceType");
statementForInstanceType.setOperator(Operator.EQUALS);
statementForInstanceType.setAttributeValue(LetterInstanceType.COMPLETE.name());
query.addStatement(statementForInstanceType);
submittedLetterInstances = letterInstanceService.getAllLetterInstances(query);

例 2:特定のユーザーによって送信されたドラフトタイプのすべてのレターインスタンスを取得する

次のコードには、同じクエリ内の複数のステートメントがあり、異なる条件(ユーザーがレターインスタンスを送信(属性をsubmittedby)し、letterInstanceTypeのタイプがDRAFTであるなど)に基づいて結果をフィルタリングします。

@Reference
LetterInstanceService letterInstanceService;

String submittedBy = "tglodman";
Query query = new Query();

List<LetterInstanceVO> submittedLetterInstances = new ArrayList<LetterInstanceVO>();

Statement statementForInstanceType = new Statement();
statementForInstanceType.setAttributeName("letterInstanceType");
statementForInstanceType.setOperator(Operator.EQUALS);
statementForInstanceType.setAttributeValue(LetterInstanceType.COMPLETE.name());
query.addStatement(statementForInstanceType);

Statement statementForSubmittedBy = new Statement();
statementForSubmittedBy .setAttributeName("submittedby");
statementForSubmittedBy .setOperator(Operator.EQUALS);
statementForSubmittedBy .setAttributeValue(submittedBy);
query.addStatement(statementForSubmittedBy );
submittedLetterInstances = letterInstanceService.getAllLetterInstances(query);

getLetterInstance の使用

特定のレターインスタンス ID で識別されるレターインスタンスを取得します。インスタンスIDが一致しない場合は、「 null 」を返します。

構文: public LetterInstanceVO getLetterInstance(String letterInstanceId) throws ICCException;

@Reference
LetterInstanceService letterInstanceService;
String letterInstanceId = "/content/apps/cm/letterInstances/1001/sampleLetterInstance";
LetterInstanceVO letterInstance = letterInstanceService.getLetterInstance(letterInstanceId );

レターインスタンスの有無の確認

特定の名前のレターインスタンスが存在するかどうかを確認します

構文: public Boolean letterInstanceExists(String letterInstanceName) throws ICCException;

パラメーター 説明
letterInstanceName 有無を確認するレターインスタンスの名前。
@Reference
LetterInstanceService letterInstanceService;
String letterInstanceName = "sampleLetterInstance";
Boolean result = letterInstanceService.letterInstanceExists(letterInstanceName );

レターインスタンスを開く

レターインスタンスには、送信済みタイプまたはドラフトタイプがあります。両タイプのレターインスタンスを開くと、それぞれ異なる動作を示します。

  • 送信済みのレターインスタンスの場合、レターインスタンスを示す PDF が開きます。サーバー上に残存する送信済みのレターインスタンスにも dataXML と処理された XDP が含まれ、それらを PDF/A の作成のようなケースの実行やカスタマイズに使用することができます。
  • ドラフトのレターインスタンスの場合、通信を作成用UIが正確に前の状態に再読み込みされ、ドラフトが作成された時点の状態に戻ります。

ドラフトレターインスタンスを開く 

CCR UIは、再読み込みされたレターに使用できるcmLetterInstanceIdパラメーターをサポートします。

https://[hostName]:[portNo]/[contextPath]//aem/forms/createcorrespondence.html?random=[randomNo]&cmLetterInstanceId=[letterInstanceId]

メモ

通信を再読み込みする際にcmLetterIdまたはcmLetterName/State/Versionを指定する必要はありません。再読み込みされた通信に関する詳細は、送信済みのデータに既にすべて含まれているからです。 RandomNoは、ブラウザーのキャッシュの問題を回避するために使用され、タイムスタンプを乱数として使用できます。

送信済みのレターインスタンスを開く

送信済み PDF は、次のレターインスタンス ID を使用して直接開くことができます。

https://[hostName]:[portNo]/[contextPath]/[letterInstanceId]

このページ