エージェント UI を使用してインタラクティブなコミュニケーションの準備と送信を行う prepare-and-send-interactive-communication-using-the-agent-ui
エージェント UI を使用してインタラクティブなコミュニケーションの準備を行い、後処理用として送信することができます。 エージェントは、許可設定に基づいて必要な変更を行い、メールの送信や印刷出力などの後処理用としてインタラクティブなコミュニケーションを送信します。
概要 overview
インタラクティブなコミュニケーションを作成したら、エージェントを使用してそのインタラクティブなコミュニケーションをエージェント UI で開き、データ入力と、コンテンツや添付ファイルの管理を行って、受信者固有のコピーを作成することができます。 その後、エージェントにより、後処理用としてインタラクティブなコミュニケーションを送信することができます。
エージェント UI を使用してインタラクティブなコミュニケーションの準備を行う際に、以下に示すインタラクティブなコミュニケーションの構成要素が、エージェントによりエージェント UI で管理されます。その後、インタラクティブなコミュニケーションが後処理用に送信されます。
- データ:エージェント UI の「データ」タブには、インタラクティブなコミュニケーションでエージェントを使用して編集できる変数とロック解除されたフォームデータモデルプロパティが表示されます。 これらの変数とプロパティは、インタラクティブなコミュニケーション内のドキュメントフラグメントの編集時または作成時に生成されます。 「データ」タブには、XDP テンプレートまたは印刷チャネルテンプレートに組み込まれているフィールドも表示されます。 「データ」タブが表示されるのは、エージェントを使用して編集できる変数、フォームデータモデルプロパティまたはフィールドが、インタラクティブなコミュニケーション内に含まれている場合だけです。
- コンテンツ:エージェントにより、「コンテンツ」タブに表示される各種コンテンツ(インタラクティブなコミュニケーション内のドキュメントフラグメントやコンテンツ変数など)が管理されます。 エージェントは、ドキュメントフラグメントのプロパティを使用してインタラクティブなコミュニケーションを作成する際に、許可設定に従って、そのドキュメントフラグメントを変更します。 また、許可されている場合は、ドキュメントフラグメントの並べ替え、追加、削除、改ページの追加も、エージェントによって実行されます。
- 添付ファイル:エージェント UI で「添付ファイル」タブが表示されるのは、インタラクティブなコミュニケーションにファイルが添付されている場合と、エージェントがライブラリにアクセスする場合だけです。 エージェントに対して添付ファイルの変更と編集が許可されている場合もあれば、許可されていない場合もあります。
エージェント UI を使用したインタラクティブなコミュニケーションの準備 prepare-interactive-communication-using-the-agent-ui
-
フォーム/フォームとドキュメントを選択します。
-
目的のインタラクティブなコミュニケーションを選択して「エージェント UI を開く」を選択します。
note NOTE エージェント UI が機能するのは、選択したインタラクティブなコミュニケーションに印刷チャネルが含まれている場合だけです。
インタラクティブなコミュニケーションのコンテンツとプロパティに基づいて、エージェント UI に、「データ」タブ、「コンテンツ」タブ、「添付ファイル」タブという 3 つのタブが表示されます。
次に、データの入力、コンテンツの管理、添付ファイルの管理を行います。
データを入力 enter-data
-
「データ」タブで、変数、フォームデータモデルプロパティ、印刷テンプレート(XDP)のフィールドのデータを、必要に応じて入力します。 アスタリスク (*)が付いているすべての必須フィールドに入力して、送信 ボタンを有効にします。
インタラクティブなコミュニケーションのプレビュー画面でデータフィールドの値を選択すると、対応するデータフィールドが「データ」タブでハイライト表示されます(その逆も同様です)。
コンテンツの管理 manage-content
「コンテンツ」タブで、インタラクティブなコミュニケーション内のドキュメントフラグメントやコンテンツ変数などのコンテンツを管理します。
-
「コンテンツ」を選択します。 インタラクティブなコミュニケーションの「コンテンツ」タブが表示されます。
-
必要に応じて、「コンテンツ」タブでドキュメントフラグメントを編集します。 コンテンツ階層内の関連するフラグメントにフォーカスするには、インタラクティブなコミュニケーションのプレビュー画面で関連する行や段落を選択するか、コンテンツ階層内で目的のフラグメントを直接選択します。
例えば、以下のプレビュー画面で、「Make a payment online now …」という行が含まれているドキュメントフラグメントを選択すると、「コンテンツ」タブでも同じドキュメントフラグメントが選択されます。
「コンテンツ」タブまたは「データ」タブで、プレビューの左上にある「コンテンツ内の選択したモジュールをハイライト表示」(
)をタップすると、関連するテキスト、段落またはデータフィールドがプレビュー画面でタップまたは選択されたときにドキュメントフラグメントに移動する機能の有効と無効を切り替えることができます。
インタラクティブなコミュニケーションの作成時にエージェントによって編集できるフラグメントには、「選択したコンテンツを編集」アイコン(
)が表示されます。 このアイコンを選択すると、フラグメントが編集モードで表示され、フラグメントを編集できるようになります。 テキストの書式設定と管理を行うには、以下のオプションを使用します。
エージェント UI で各種のドキュメントフラグメントを操作する方法については、エージェント UI で使用できる操作と情報を参照してください。
-
インタラクティブなコミュニケーションの印刷出力に改ページを追加するには、改ページを追加する位置にカーソルを置き、「直前に改ページ」または「直後に改ページ」を選択します(
)。
インタラクティブなコミュニケーションに、改ページのプレースホルダーが明示的に挿入されます。 改ページの明示的な挿入によって変化したインタラクティブなコミュニケーションの外観を確認するには、印刷プレビューを表示します。
次に、インタラクティブなコミュニケーションの添付ファイルの管理を行います。
添付ファイルを管理 manage-attachments
-
「添付ファイル」を選択します。 エージェント UI に、インタラクティブなコミュニケーションの作成時に設定可能な添付ファイルが表示されます。
インタラクティブなコミュニケーションと共に添付ファイルを送信しない場合は、ビューアイコンをタップします。添付ファイルに表示されている削除アイコン(X マーク)を選択すると、インタラクティブなコミュニケーションから添付ファイルが削除されます(エージェントによる添付ファイルの削除または非表示が許可されている場合)。 インタラクティブなコミュニケーションの作成時に必須ファイルとして指定された添付ファイルの場合、ビューアイコンと削除アイコンは無効になります。
-
ライブラリアクセス(
)アイコンを選択してコンテンツライブラリにアクセスし、添付ファイルとして DAM アセットを挿入します。
note NOTE ライブラリアクセスアイコンを使用できるのは、インタラクティブなコミュニケーションの作成時に、印刷チャンネルの「ドキュメントコンテナ」プロパティでライブラリへのアクセスを有効にした場合だけです。 -
インタラクティブなコミュニケーションの作成時に、添付ファイルの順序をロックしなかった場合は、添付ファイルを選択して上下の矢印をタップすると、添付ファイルの順序を変更することができます。
-
Web プレビューと印刷プレビューを使用して、2 つの出力が正しく作成されているかどうかを確認します。
プレビューの表示内容に問題がない場合は、「送信」を選択して、インタラクティブなコミュニケーションを後処理用に送信します。 さらに変更を行う場合は、プレビュー画面を終了して変更画面に戻ります。
テキストの書式設定 formattingtext
エージェント UI でテキストフラグメントを編集する場合、選択した編集のタイプ(フォント、段落、リスト)に応じて、表示されるツールバーが異なります。
フォントツールバー
段落ツールバー
リストツールバー
テキストの一部をハイライト表示または強調表示 highlightemphasize
編集可能なフラグメント内のテキストの一部をハイライト表示または強調表示するには、目的のテキストを選択して、ハイライト表示の色を選択します。
書式設定されたテキストの貼り付け pasteformattedtext
テキストに特殊文字を挿入 specialcharacters
エージェント UI では、210 個の特殊文字がサポートされています。 管理者は、カスタマイズすることで特殊文字を増やしたり、カスタムの特殊文字を追加したりすることができます。
添付ファイルの配信 attachmentdelivery
- サーバーサイドの API を使用して、インタラクティブなコミュニケーションをインタラクティブ PDF または非インタラクティブ PDF としてレンダリングすると、レンダリング後の PDF に PDF ファイルが添付されます。
- エージェント UI を使用して、インタラクティブなコミュニケーションに関連付けられた後処理を送信処理の一部としてロードすると、添付ファイルが List<com.adobe.idp.Document> inAttachmentDocs パラメーターとして渡されます。
- メールや印刷などの配信メカニズムワークフローにより、PDF 版のインタラクティブなコミュニケーションと共に添付ファイルも配信されます。
エージェント UI で使用できるアクションと情報 actionsagentui
ドキュメントフラグメント document-fragments
- 上矢印と下矢印:上矢印と下矢印を使用して、インタラクティブなコミュニケーション内のドキュメントフラグメントを上下に移動することができます。
- 削除:インタラクティブなコミュニケーションからドキュメントフラグメントを削除します(削除が許可されている場合)。
- 直前に改ページ:(ターゲット領域の子フラグメントで使用可能)ドキュメントフラグメントの直前に改ページが挿入されます。
- インデント:ドキュメントフラグメントのインデントを増減します。
- 直後に改ページ(ターゲット領域の子フラグメントで使用可能):ドキュメントフラグメントの直後に改ページが挿入されます。
-
編集(テキストフラグメントの場合のみ):テキストドキュメントフラグメントを編集するためのリッチテキストエディターが起動します。 詳しくは、テキストのフォーマットを参照してください。
-
選択(目のアイコン):インタラクティブなコミュニケーションにドキュメントフラグメントを含めたり、インタラクティブなコミュニケーションからドキュメントフラグメントを除外したりすることができます。
-
未入力値:ドキュメントフラグメントの未入力変数の数が表示されます。これは、表示専用情報です。
リストドキュメントフラグメント list-document-fragments
- 空白行を挿入: 空白行を新たに挿入します。
- 選択(目のアイコン):インタラクティブなコミュニケーションにドキュメントフラグメントを含めたり、インタラクティブなコミュニケーションからドキュメントフラグメントを除外したりすることができます。
- 箇条書き/番号付けをスキップ:リストドキュメントフラグ内で、箇条書きまたは番号付けをスキップする場合に有効にします。
- 未入力値:ドキュメントフラグメントの未入力変数の数が表示されます。これは、表示専用情報です。
インタラクティブなコミュニケーションをドラフトとして保存 save-as-draft
エージェント UI を使用して、各インタラクティブなコミュニケーションの 1 つ以上のドラフトを保存し、後でそのドラフトを取得して、作業を続行できます。 それぞれのドラフトに異なる名前を指定して、識別しやすくすることができます。
インタラクティブなコミュニケーションをドラフトとして正常に保存するために、これらの手順を順番に実行することをお勧めします。
ドラフトとして保存機能の有効化 before-save-as-draft
ドラフトとして保存機能は、デフォルトでは有効になっていません。 この機能を有効にするには、次の手順を実行します。
-
ccrDocumentInstance サービスプロバイダーインターフェイス(SPI)を実装します。
SPI を使用すると、インタラクティブなコミュニケーションのドラフトバージョンを、固有の識別子としてドラフト ID を指定したうえで、データベースに保存できます。 これらの手順は、Maven プロジェクトを使用して OSGi バンドルをビルドする方法に関する基本知識があることを前提としています。
SPI の実装例について詳しくは、ccrDocumentInstance SPI の実装例を参照してください。
-
http://<hostname>:<port>/ system/console/bundlesを開き、「インストール/更新」を選択して OSGi バンドルをアップロードします。 アップロードされたパッケージのステータスが アクティブ と表示されていることを確認します。 パッケージのステータスが アクティブ と表示されない場合は、サーバーを再起動します。 -
https://'[server]:[port]'/system/console/configMgrにアクセスします。 -
「通信設定を作成」を選択します。
-
「CCRDocumentInstanceService を使用した保存を有効にする」を選択し、「保存」を選択します。
インタラクティブなコミュニケーションをドラフトとして保存 save-as-draft-agent-ui
インタラクティブなコミュニケーションをドラフトとして保存するには、次の手順を実行します。
-
Forms Manager でインタラクティブなコミュニケーションを選択し、「エージェント UI を開く」を選択します。
-
エージェント UI で必要な変更を行い、「ドラフトとして保存」を選択します。
-
ドラフトの名前を「名前」フィールドに指定し、「完了」を選択します。
インタラクティブなコミュニケーションをドラフトとして保存したら、「変更を保存」を選択して、ドラフトに対するその他の変更内容を保存します。
インタラクティブなコミュニケーションのドラフトの取得 retrieve-draft
インタラクティブなコミュニケーションをドラフトとして保存した後、その通信を取得して作業を続行できます。 以下を使用してインタラクティブなコミュニケーションを取得します。
https://server:port/aem/forms/createcorrespondence.hmtl?draftid=[draftid]
[draftid] とは、インタラクティブなコミュニケーションをドラフトとして保存した後に生成されるドラフトバージョンの固有の識別子を指します。
ccrDocumentInstance SPI の実装例 sample-ccrDocumentInstance-spi
ccrDocumentInstance SPI を実装し、インタラクティブなコミュニケーションをドラフトとして保存します。 ccrDocumentInstance SPI の実装例は次のとおりです。
package Implementation;
import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.exception.CCRDocumentException;
import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.model.CCRDocumentInstance;
import com.adobe.fd.ccm.ccr.ccrDocumentInstance.api.services.CCRDocumentInstanceService;
import org.apache.commons.lang3.StringUtils;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
@Component(service = CCRDocumentInstanceService.class, immediate = true)
public class CCRDraftService implements CCRDocumentInstanceService {
private static final Logger logger = LoggerFactory.getLogger(CCRDraftService.class);
private HashMap<String, Object> draftDataMap = new HashMap<>();
@Override
public String save(CCRDocumentInstance ccrDocumentInstance) throws CCRDocumentException {
String documentInstanceName = ccrDocumentInstance.getName();
if (StringUtils.isNotEmpty(documentInstanceName)) {
logger.info("Saving ccrData with name : {}", ccrDocumentInstance.getName());
if (!CCRDocumentInstance.Status.SUBMIT.equals(ccrDocumentInstance.getStatus())) {
ccrDocumentInstance = mySQLDataBaseServiceCRUD(ccrDocumentInstance,null, "SAVE");
}
} else {
logger.error("Could not save data as draft name is empty");
}
return ccrDocumentInstance.getId();
}
@Override
public void update(CCRDocumentInstance ccrDocumentInstance) throws CCRDocumentException {
String documentInstanceName = ccrDocumentInstance.getName();
if (StringUtils.isNotEmpty(documentInstanceName)) {
logger.info("Saving ccrData with name : {}", documentInstanceName);
mySQLDataBaseServiceCRUD(ccrDocumentInstance, ccrDocumentInstance.getId(), "UPDATE");
} else {
logger.error("Could not save data as draft Name is empty");
}
}
@Override
public CCRDocumentInstance get(String id) throws CCRDocumentException {
CCRDocumentInstance cCRDocumentInstance;
if (StringUtils.isEmpty(id)) {
logger.error("Could not retrieve data as draftId is empty");
cCRDocumentInstance = null;
} else {
cCRDocumentInstance = mySQLDataBaseServiceCRUD(null, id,"GET");
}
return cCRDocumentInstance;
}
@Override
public List<CCRDocumentInstance> getAll(String userId, Date creationTime, Date updateTime,
Map<String, Object> optionsParams) throws CCRDocumentException {
List<CCRDocumentInstance> ccrDocumentInstancesList = new ArrayList<>();
HashMap<String, Object> allSavedDraft = mySQLGetALLData();
for (String key : allSavedDraft.keySet()) {
ccrDocumentInstancesList.add((CCRDocumentInstance) allSavedDraft.get(key));
}
return ccrDocumentInstancesList;
}
//The APIs call the service in the database using the following section.
private CCRDocumentInstance mySQLDataBaseServiceCRUD(CCRDocumentInstance ccrDocumentInstance,String draftId, String method){
if(method.equals("SAVE")){
String autoGenerateId = draftDataMap.size() + 1 +"";
ccrDocumentInstance.setId(autoGenerateId);
draftDataMap.put(autoGenerateId, ccrDocumentInstance);
return ccrDocumentInstance;
}else if (method.equals("UPDATE")){
draftDataMap.put(ccrDocumentInstance.getId(), ccrDocumentInstance);
return ccrDocumentInstance;
}else if(method.equals("GET")){
return (CCRDocumentInstance) draftDataMap.get(draftId);
}
return null;
}
private HashMap<String, Object> mySQLGetALLData(){
return draftDataMap;
}
}
save、update、get および getAll の操作はそれぞれ、データベースサービスを呼び出して、インタラクティブなコミュニケーションをドラフトとして保存、インタラクティブなコミュニケーションの更新、データベースからデータを取得、データベースで使用可能なすべてのインタラクティブなコミュニケーションのデータ取得を行います。 この例では、mySQLDataBaseServiceCRUD をデータベースサービスの名前として使用します。
次の表では、ccrDocumentInstance SPI の実装例を説明しています。 具体的には、save、update、get および getAll 操作が実装例でデータベースサービスを呼び出す方法を示しています。
次に、実装の一部である pom.xml ファイルの例をご紹介します。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.adobe.livecycle</groupId>
<artifactId>draft-sample</artifactId>
<version>2.0.0-SNAPSHOT</version>
<name>Interact</name>
<packaging>bundle</packaging>
<dependencies>
<dependency>
<groupId>com.adobe.aemfd</groupId>
<artifactId>aemfd-client-sdk</artifactId>
<version>6.0.160</version>
</dependency>
</dependencies>
<!-- ====================================================================== -->
<!-- B U I L D D E F I N I T I O N -->
<!-- ====================================================================== -->
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.3.0</version>
<extensions>true</extensions>
<executions>
<!--Configure extra execution of 'manifest' in process-classes phase to make sure SCR metadata is generated before unit test runs-->
<execution>
<id>scr-metadata</id>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
<configuration>
<exportScr>true</exportScr>
<instructions>
<!-- Enable processing of OSGI DS component annotations -->
<_dsannotations>*</_dsannotations>
<!-- Enable processing of OSGI metatype annotations -->
<_metatypeannotations>*</_metatypeannotations>
<Bundle-SymbolicName>${project.groupId}-${project.artifactId}</Bundle-SymbolicName>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>autoInstall</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.sling</groupId>
<artifactId>maven-sling-plugin</artifactId>
<executions>
<execution>
<id>install-bundle</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
pom.xml ファイルの aemfd-client-sdk 依存関係を 6.0.160 にアップデートしてください。