|
Erweitern Sie den Action Handler: Öffnen Sie in Flash Builder das CreateCorrespondence-Projekt in der Ansicht Paket-Explorer.
Navigieren Sie zu CreateCorrespondence > src > com.adobe.solutions.cmg.Create Correspondence > presentation.
Erstellen Sie eine ActionScript-Klasse, z. B. SaveAsDraftActionHandler, die die Klasse com.adobe.acm.solutions.ccr.domain.extensions.CCRDefaultActionHandler erweitert. Damit die neu hinzugefügte Aktion unterstützt wird, sind die folgenden zwei Punkte erforderlich:
Die Logik für das Aktivieren/Deaktivieren der neu hinzugefügten Aktion, indem die Funktion actionEnabled(extraParams:Object=null):Boolean überschrieben wird
Die Verarbeitung der Aktion, wenn ein Benutzer auf die Schaltfläche klickt, indem die Implementierung für function handleAction(extraParams:Object=null):void überschrieben wird
Das folgende Beispiel veranschaulicht die Implementierung von com.adobe.solutions.cmg.ccr.presentation.SaveAsDraftActionHandler, die den CCRDefaultActionHandler erweitert: package com.adobe.solutions.cmg.ccr.presentation
{
import com.adobe.acm.solutions.ccr.domain.extensions.CCRDefaultActionHandler;
import com.adobe.icc.external.dc.ExternalApi;
import com.adobe.icc.external.dc.InvokeParams;
import com.adobe.icc.services.ServiceProvider;
import com.adobe.icc.services.submit.ISubmitService;
import com.adobe.icc.util.Debug;
import com.adobe.icc.util.UrlHelper;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ObjectUtil;
public class SaveAsDraftActionHandler extends CCRDefaultActionHandler
{
public static const SAVE_AS_DRAFT_ACTION:String = "SaveAsDraft";
public function SaveAsDraftActionHandler()
{
super();
var htmlUrl:String = ExternalApi.getInstance().htmlGetUrl();
Debug.info("invoke url: " + htmlUrl);
invokeParams = new InvokeParams(htmlUrl);
}
/**
* Called when the user clicks an action
* @param extraParams additional arguments that may be passed to handler (For future use)
*
*/
override public function handleAction(extraParams:Object=null):void
{
if(action && action.name == SAVE_AS_DRAFT_ACTION)
{
//Additional logic to show popup to ask file save name goes here.
var saveName:String = letterVO.name;
submitLetter(saveName);
}
}
[Bindable(event="actionEnabledChange")]
/**
* Should the action be enabled in toolbar
* @param extraParams
* @return flag indicating whether the action should be enabled
*
*/
override public function actionEnabled(extraParams:Object=null):Boolean
{
//Always enable the Action.
return true;
}
private function submitLetter(saveName: String):void
{
var service:ISubmitService = ServiceProvider.getSubmitService();
var params:Object = new Object();
if(action.actionConfig)
params = ObjectUtil.copy(action.actionConfig);
params["cm_actionName"] = action.name;
//Add additional custom params here which is available under <icc:meta> tag.
params["cm_saveName"] = saveName;
var reload:Boolean = false;
if(!(invokeParams.letterId) && !(invokeParams.letterName))
{
//If Letter is loaded without letterName or letterId then it must be reload
reload = true;
}
//Invoke the default letter post process
service.submitLetterWithParams(letterVO, letterData,
false, invokeParams.useLatest, reload, null, params).addHandlers
(
// result handler
function(event:ResultEvent):void
{
var response:Object = event.result as Object;
//Redirect to success page if mentioned
if (response.redirect)
{
// redirect via new window or else the user is prompted to close the DC window before proceeding
if (UrlHelper.isValid(response.redirect))
navigateToURL((new URLRequest(response.redirect)), "_blank");
else
Debug.error("server returned invalid redirect URL: " + response.redirect);
}
Alert.show("Save Successful");
},
// fault handler
function(event:FaultEvent):void
{
Debug.error("failed to submit " + letterVO + ":\n\t", event);
Alert.show("Save Failed");
}
);
}
}
}
Deklarieren Sie in der Datei CreateCorrespondence > src > com.adobe.solutions.cmg.Create Correspondence > presentation > CCRApplication.as eine private Variable des Typs „SaveAsDraftActionHandler“. Mit dieser Variable wird sichergestellt, dass die neue Klasse in Flash Builder kompiliert wird.
private var saveActionHandler:SaveAsDraftActionHandler;
Ändern Sie die Datei „acmExtensionsConfig.xml“, um die benutzerdefinierte Aktionsschaltfläche hinzuzufügen. Dem Tag modelExtension unter „CorrespondenceManagementSolutionTemplate\package-resources\etc\aep\config\assetcomposer\apps\cm\acmExtensions\acmExtensionsConfig.xmlcan“ kann ein Satz untergeordneter customAction-Tags zugeordnet sein. Jedes customAction-Element stellt eine Aktion dar, die je nach verknüpften Berechtigungen in der Symbolleiste der Benutzeroberfläche „Korrespondenz erstellen“ angezeigt wird. Jedem Element können Attribute zugeordnet sein, die die Konfiguration für die jeweilige Aktion ermöglichen. Die Attribute sind im Folgenden aufgeführt:
Name
|
Beschreibung
|
name
|
Der alphanumerische Name der Aktion. Dieser muss mit einem Buchstaben beginnen. Name ist ein erforderlicher Parameter und muss im Tag „modelExtensions“ eindeutig sein.
|
label
|
Die Beschriftung der Aktionsschaltfläche. Diese Eigenschaft kann lokalisiert werden.
|
tooltip
|
Die QuickInfo für die Aktion. Diese Eigenschaft kann lokalisiert werden.
|
styleName
|
Der Name des benutzerdefinierten Stils, der auf die Aktionsschaltfläche angewendet wird, die als Teil der Lösungsvorlagenanwendung verpackt wird.
|
permissionName
|
Die entsprechende Aktion wird nur angezeigt, wenn der Benutzer über die von permissionName festgelegte Berechtigung verfügt.
|
actionHandler
|
Vollqualifizierter Name der Klasse ActionHandler, die aufgerufen wird, wenn der Benutzer auf die Aktion klickt. Diese Klasse muss die IActionHandler-Schnittstelle implementieren. Die Klasse muss über einen Konstruktor ohne Argumente verfügen.
|
Fügen Sie die zusätzlichen speziellen Konfigurationsparameter in der Erweiterungskonfiguration hinzu: serviceName: Wenn eine customAction ein untergeordnetes Tag mit dem Namen „serviceName“ enthält. Wenn auf diese Aktion geklickt wird, wird ein Prozess mit dem Namen aufgerufen, der vom Tag „serviceName“ dargestellt wird. Dieser Prozess weist dieselbe Signatur auf wie der Brief „PostProcess“.
Parameter, die das Präfix „cm_“ im Tagnamen enthalten: Wenn eine customAction untergeordnete Tags enthält, deren Name mit cm_ beginnt, sind diese Parameter bei der Nachbearbeitung in der Eingabe-XML unter dem Tag „<icc:meta>“ ohne Präfix „cm_“ verfügbar.
actionName: Jedes Mal, wenn durch Klicken auf eine Aktion ein Nachbearbeitungsprozess aufgerufen wird, enthält die gesendete XML unter dem Tag „<icc:meta>“ ein spezielles Tag mit dem Namen „<actionName>“, das den Namen der vom Benutzer vorgenommenen Aktion enthält.
Um im diesem Beispiel die Schaltfläche „SaveAsDraft“ hinzuzufügen, muss die Datei CorrespondenceManagementSolutionTemplate\package-resources\etc\aep\config\assetcomposer\apps\cm\acmExtensions\acmExtensionsConfig.xml geändert und das Element customAction hinzugefügt werden, das zu SaveAsDraft gehört. Der Name des aufgerufenen LiveCycle-Prozesses kann im Tag <servicename> angegeben werden. In diesem Fall beispielsweise wird durch Klicken auf die Schaltfläche SaveAsDraft der LiveCycle-Prozess SaveLetterDraft/SaveLetterDraftProcess aufgerufen. Der Pfad, unter dem die Korrespondenz gespeichert wird, kann im Tag <cm_path> angegeben werden. Der folgende Codeausschnitt ist ein Beispiel für das neue Aktionselement: <?xml version="1.0" encoding="utf-8"?>
<extensionsConfig>
<modelExtensions>
<modelExtension type="LetterInstance">
<customAction name="Submit" label="loc.letterInstance.submit.label" tooltip="loc.letterInstance.submit.tooltip" styleName="submitButton" permissionName="CM Letter Template Submit"/>
<customAction name="Close" label="loc.letterInstance.close.label" tooltip="loc.letterInstance.close.tooltip" styleName="closeButton"/>
<customAction name="SaveAsDraft" label="SaveAsDraft" tooltip="SaveAsDraft" styleName="closeButton" actionHandler="com.adobe.solutions.cmg.ccr.presentation.SaveAsDraftActionHandler">
<serviceName>SaveLetterDraft/SaveLetterDraftProcess</serviceName>
<cm_path>d:\savedCorrespondence\</cm_path>
</customAction>
</modelExtension>
</modelExtensions>
</extensionsConfig>
Erstellen Sie zum Anzeigen der Änderungen die Lösungsvorlage neu und stellen Sie sie erneut bereit. Informationen zum erneuten Erstellen und Bereitstellen finden Sie unter Lösungsvorlage erstellen und bereitstellen.
Die untere Symbolleiste auf der Benutzeroberfläche „Korrespondenz erstellen“ enthält jetzt die neue Schaltfläche SaveAsDraft. Wenn auf diese geklickt wird, wird die Korrespondenz im XML-Format gespeichert. Als Name der gespeicherten Datei wird der Briefname mit der XML-Erweiterung verwendet. Sie können diese Funktion noch weiter ausbauen, sodass ein Popup-Fenster angezeigt wird, um den Dateinamen zu erfassen. Hierfür fügen Sie die Funktionalität in der handleAction-Funktion in SaveAsDraftActionHandler.as hinzu.
Um die gespeicherte Korrespondenz zu laden, geben Sie die folgende URL zur veröffentlichten Instanz in den Browser ein: http://<Hostname>:<Anschluss>/content/cm/createcorrespondence.html?cmDataUrl=file:///<Dateipfad>/ClaimSubrogation.xml&cmUseLatest=1.
SaveAsDraft ist nur auf veröffentlichten Instanzen anwendbar.
|
|
|