エージェント UI を使用してインタラクティブ通信の準備を行い、後処理用として送信することができます。エージェントは、許可設定に基づいて必要な変更を行い、電子メールの送信や印刷出力などの後処理用としてインタラクティブ通信を送信します。
対話型通信の作成後、エージェントはエージェントUIで対話型通信を開き、データを入力し、コンテンツと添付ファイルを管理することで、受信者固有のコピーを作成できます。 最後に、エージェントはインタラクティブ通信を後処理に送信できます。
エージェントUIを使用して対話型通信を準備する際、エージェントは、後処理に送信する前に、エージェントUIで対話型通信の次の側面を管理します。
フォーム/フォームとドキュメントを選択します。
適切な対話型通信を選択し、エージェントUIを開くをタップします。
エージェントUIは、選択した対話型通信に印刷チャネルがある場合にのみ機能します。
インタラクティブ通信のコンテンツとプロパティに基づいて、エージェント UI に、「データ」タブ、「コンテンツ」タブ、「添付ファイル」タブという 3 つのタブが表示されます。
次に、データの入力、コンテンツの管理、添付ファイルの管理を行います。
「データ」タブで、変数のデータ、フォームデータモデルのプロパティ、印刷テンプレート(XDP)のフィールドを、必要に応じて入力します。アスタリスク(*)が付いている必須フィールドをすべて入力し、「送信」ボタンを有効にします。
対話型通信プレビューのデータフィールドの値をタップすると、「データ」タブで対応するデータフィールドが強調表示されます。逆の場合も同様です。
「コンテンツ」タブで、インタラクティブ通信内のドキュメントフラグメントやコンテンツ変数などのコンテンツを管理します。
「コンテンツ」を選択します。対話型通信のコンテンツタブが表示されます。
必要に応じて、「コンテンツ」タブでドキュメントフラグメントを編集します。コンテンツ階層の関連するフラグメントにフォーカスするには、インタラクティブ通信プレビューで関連する行または段落をタップするか、コンテンツ階層で直接フラグメントをタップします。
例えば、以下のプレビュー画面で、「Make a payment online now …」という行が含まれているドキュメントフラグメントを選択すると、「コンテンツ」タブでも同じドキュメントフラグメントが選択されます。
「コンテンツ」タブまたは「データ」タブで、プレビューの左上にある「選択したプレビューをコンテンツ内でハイライト」()をタップすると、関連するテキスト、段落またはデータフィールドをタップまたはで選択したときに、ドキュメントフラグメントに移動する機能を無効または有効にできます。
対話型通信の作成時にエージェントが編集できるフラグメントには、選択されたコンテンツを編集()アイコンが付きます。 このアイコンをタップすると、フラグメントが編集モードで表示され、フラグメントを編集できるようになります。テキストの書式設定と管理を行うには、以下のオプションを使用します。
エージェント・ユーザー・インタフェース内の様々なドキュメント・フラグメントで使用できるアクションの詳細については、「エージェント・ユーザー・インタフェースで使用できるアクションと情報」を参照してください。
インタラクティブ通信の印刷出力に改ページを追加するには、改ページを挿入する位置にカーソルを置き、前の改ページまたは後の改ページ()を選択します。
インタラクティブ通信に、改ページのプレースホルダーが明示的に挿入されます。この明示的な改ページによってインタラクティブ通信の外観がどのように変わるのかを確認するには、印刷出力をプレビュー表示します。
次に、インタラクティブ通信の添付ファイルの管理を行います。
「添付ファイル」を選択します。 エージェントUIは、対話型通信の作成時に設定したとおりに、使用可能な添付ファイルを表示します。
表示アイコンをタップして、Interactive Communicationと共に添付ファイルを送信しないように選択できます。また、添付ファイルの×印をタップすると、添付ファイルを削除(エージェントが添付ファイルを削除または非表示にできる場合)をInteractive Communicationから削除できます。 インタラクティブ通信の作成時に必須ファイルとして指定された添付ファイルの場合、ビューアイコンと削除アイコンは無効になります。
ライブラリアクセス()アイコンをタップしてコンテンツライブラリにアクセスし、添付ファイルとしてDAMアセットを挿入します。
ライブラリアクセスアイコンは、Interactive Communicationの作成中に(印刷チャネルのドキュメントコンテナのプロパティで)ライブラリアクセスが有効になっている場合にのみ使用できます。
インタラクティブ通信の作成時に、添付ファイルの順序をロックしなかった場合は、添付ファイルを選択して上下の矢印をタップすると、添付ファイルの順序を変更することができます。
Web プレビューと印刷プレビューを使用して、2 つの出力が正しく作成されているかどうかを確認します。
十分な結果が得られるプレビューが見つかった場合は、「送信」をタップして、インタラクティブ通信を後処理に送信または送信します。 または、変更を行うには、プレビューを終了して変更に戻ります。
エージェント UI でテキストフラグメントを編集する場合、編集のタイプ(フォント、段落、リスト)に応じて、表示されるツールバーが異なります。
フォントツールバー
段落ツールバー
リストツールバー
編集可能なフラグメント内のテキストの一部をハイライト表示または強調表示するには、目的のテキストを選択して「ハイライト表示の色」をタップします。
エージェント UI では、210 個の特殊文字がサポートされています。管理者は、カスタマイズ](/docs/experience-manager-65/forms/using/custom-special-characters.html?lang=ja)によって、追加/カスタムの特殊文字のサポートを追加できます。[
編集:(テキストフラグメントの場合のみ)テキストドキュメントフラグメントを編集するためのリッチテキストエディターが起動します。詳しくは、テキストのフォーマットを参照してください。
選択(目のアイコン):インタラクティブ通信にドキュメントフラグメントを含めたり、インタラクティブ通信からドキュメントフラグメントを除外したりすることができます。
未入力値:ターゲット領域の未入力変数の数が表示されます。これは、表示専用情報です。
エージェントUIを使用して、各対話型通信用の1つ以上のドラフトを保存し、後でドラフトを取得して、そのドラフトの操作を続行できます。 ドラフトごとに異なる名前を指定して、ドラフトを識別できます。
Adobeでは、Interactive Communicationをドラフトとして正常に保存するために、これらの手順を順に実行することをお勧めします。
「ドラフトとして保存」機能は、デフォルトでは有効になっていません。 この機能を有効にするには、次の手順を実行します。
ccrDocumentInstanceサービスプロバイダーインターフェイス(SPI)を実装します。
SPIを使用すると、対話型通信の下書きを一意の識別子としてドラフトIDを持つデータベースに保存できます。 これらの手順は、Mavenプロジェクトを使用してOSGiバンドルを構築する方法に関する事前の知識があることを前提としています。
SPIの実装例については、サンプルccrDocumentInstance SPIの実装を参照してください。
http://<hostname>:<port>/ system/console/bundles
を開き、Install/Updateをタップして、OSGiバンドルをアップロードします。 アップロードしたパッケージのステータスがアクティブと表示されていることを確認します。 パッケージのステータスがアクティブでない場合は、サーバーを再起動します。
https://'[server]:[port]'/system/console/configMgr
にアクセスします。
「通信設定を作成」をタップします。
「CCRDocumentInstanceServiceを使用して保存を有効にする」を選択し、「保存」をタップします。
次の手順を実行して、対話型通信をドラフトとして保存します。
Formsマネージャーで対話型通信を選択し、エージェントUIを開くをタップします。
エージェントUIに適切な変更を加え、「ドラフトとして保存」をタップします。
「名前」フィールドにドラフトの名前を指定し、「完了」をタップします。
対話型通信をドラフトとして保存したら、「変更を保存」をタップして、ドラフトに対する変更を保存します。
インタラクティブ通信をドラフトとして保存した後、その通信を取得して、操作を続行できます。 次を使用して対話型通信を取得します。
https://server:port/aem/forms/createcorrespondence.hmtl?draftid=[draftid]
[draftriderは、対話型通信をドラフトとして保存した後に生成されるドラフトバージョンの一意の識別子を] 参照します。
ドラフトとして保存した後にインタラクティブ通信に変更を加えた場合、ドラフトバージョンは開けません。
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
操作は、データベースサービスを呼び出して、Interactive Communicationをドラフトとして保存し、Interactive Communicationを更新し、データベースからデータを取得し、データベース内のすべてのInteractive Communications用のデータを取得します。 このサンプルでは、データベースサービスの名前としてmySQLDataBaseServiceCRUD
を使用しています。
次の表は、サンプルccrDocumentInstance
SPIの実装を説明しています。 この例は、save
、update
、get
およびgetAll
操作が、サンプル実装でデータベースサービスを呼び出す方法を示しています。
Operation |
データベースサービスの例 |
対話型通信用のドラフトを作成するか、直接送信することができます。 保存操作のAPIは、対話型通信がドラフトとして送信され、ドラフト名が含まれているかどうかを確認します。 次に、APIは、Saveを入力メソッドとして使用してmySQLDataBaseServiceCRUDサービスを呼び出します。 ![]() |
mySQLDataBaseServiceCRUDサービスは、Saveを入力メソッドとして検証し、自動生成されたドラフトIDを生成してAEMに返します。 ドラフトIDを生成するロジックは、データベースによって異なる場合があります。 ![]() |
更新操作のAPIは、Interactive Communicationドラフトのステータスを取得し、Interactive Communicationドラフトにドラフト名が含まれているかどうかを確認します。 APIはmySQLDataBaseServiceCRUDサービスを呼び出して、データベース内のその状態を更新します。 ![]() |
mySQLDataBaseServiceCRUDサービスは、Updateを入力メソッドとして検証し、Interactive Communicationドラフトのステータスをデータベースに保存します。 ![]() |
get操作のAPIは、インタラクティブ通信にドラフトIDが含まれているかどうかを確認します。 次に、APIは、Getを入力メソッドとして使用してmySQLDataBaseServiceCRUDサービスを呼び出し、インタラクティブ通信のデータを取得します。 ![]() |
mySQLDataBaseServiceCRUDサービスはGetを入力メソッドとして検証し、ドラフトIDに基づいてInteractive Communicationのデータを取得します。 ![]() |
getAll操作のAPIは、mySQLGetALLDataサービスを呼び出して、データベースに保存されているすべてのInteractive Communicationsのデータを取得します。 ![]() |
mySQLGetALLDataサービスは、データベースに保存されているすべてのInteractive Communicationsのデータを取得します。 ![]() |
以下は、実装に含まれるpom.xml
ファイルの例です。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://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に更新してください。