AEM Forms aanroepen met Verwijderen

In Workbench gemaakte processen kunnen worden aangeroepen door Remoting te gebruiken. Dat wil zeggen dat u een AEM Forms-proces kunt aanroepen vanuit een clienttoepassing die met Flex is gebouwd. Deze eigenschap is gebaseerd op de Diensten van Gegevens.

OPMERKING

Als u Remoting gebruikt, wordt u aangeraden processen aan te roepen die in Workbench zijn gemaakt in plaats van AEM Forms-services. Het is echter mogelijk om AEM Forms-diensten rechtstreeks aan te roepen. (Zie PDF-documenten versleutelen met Verwijderen in AEM Forms Developer Center.)

OPMERKING

Als een AEM Forms-service niet is geconfigureerd om anonieme toegang toe te staan, resulteren aanvragen van een Flex-client in een webbrowserprobleem. De gebruiker moet gebruikersnaam en wachtwoord invoeren.

Het volgende kortstondige proces van AEM Forms, genoemd MyApplication/EncryptDocument, kan worden aangehaald gebruikend het Verwijderen. (Zie Voorbeeld van kortstondig dynamisch proces voor informatie over dit proces, zoals de invoer- en uitvoerwaarden.)

iu_iu_encryptdocumentprocess2

OPMERKING

Als u een AEM Forms-proces wilt aanroepen met een Flex-toepassing, moet u ervoor zorgen dat een extern eindpunt is ingeschakeld. Door gebrek, wordt een remoting eindpunt toegelaten wanneer u een proces opstelt.

Wanneer dit proces wordt aangeroepen, worden de volgende handelingen uitgevoerd:

  1. Hiermee wordt het onbeveiligde PDF-document verkregen dat wordt doorgegeven als invoerwaarde. Deze actie is gebaseerd op de SetValue verrichting. De naam van de invoerparameter is inDoc en het gegevenstype is document. (Het gegevenstype document is een beschikbaar gegevenstype vanuit Workbench.)
  2. Hiermee versleutelt u het PDF-document met een wachtwoord. Deze actie is gebaseerd op de PasswordEncryptPDF verrichting. De naam van de uitvoerwaarde voor dit proces is outDoc en vertegenwoordigt het met een wachtwoord gecodeerde PDF-document. Het gegevenstype van outDoc is document.
  3. Hiermee slaat u het met een wachtwoord gecodeerde PDF-document op als een PDF-bestand naar het lokale bestandssysteem. Deze actie is gebaseerd op de WriteDocument verrichting.
OPMERKING

Het proces MyApplication/EncryptDocument is niet gebaseerd op een bestaand proces van AEM Forms. Om samen met de codevoorbeelden te volgen, creeer een proces genoemd MyApplication/EncryptDocument gebruikend Workbench.

OPMERKING

Voor informatie over het gebruiken van het Verwijderen om een langdurig proces aan te halen, zie Het aanhalen van mens-Centric langlevende Processen.

Zie ook

Het AEM Forms Flex-bibliotheekbestand opnemen

Documenten verwerken met (Vervangen voor AEM formulieren) AEM Forms Remoting

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Client-toepassingen verifiëren die zijn gemaakt met Flex

Beveiligde documenten doorgeven om processen aan te roepen met Verwijderen

Aanroepen van aangepaste componentenservices met Remoting

Een clienttoepassing maken die is gebouwd met Flex en die een menselijk-centrisch proces van lange duur aanroept

Het creëren van Flash Builder toepassingen die authentificatie SSO gebruikend de tokens van HTTP uitvoeren

Voor informatie over hoe te om procesgegevens in een de grafiekcontrole van Flex te tonen, zie Het tonen van AEM Forms procesgegevens in Flex grafieken.

OPMERKING

Plaats het bestand crossdomain.xml op de juiste plaats. Als u bijvoorbeeld AEM Forms hebt geïmplementeerd op JBoss, plaatst u dit bestand op de volgende locatie: <install_directory>\Adobe_Experience_Manager_forms\jboss\server\lc_turnkey\deploy\jboss-web.deployer\ROOT.war.

Het AEM Forms Flex-bibliotheekbestand opnemen

Als u AEM Forms-processen programmatisch wilt aanroepen met Remoting, voegt u het bestand adobe-remoting-provider.swc toe aan het klassepad van uw Flex-project. Dit SWC-bestand bevindt zich op de volgende locatie:

  • <install_directory>\Adobe_Experience_Manager_forms\sdk\misc\DataServices\Client-Libraries

    waarbij <install_directory> de directory is waarin AEM Forms is geïnstalleerd.

Zie ook

AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting

Documenten verwerken met (Vervangen voor AEM formulieren) AEM Forms Remoting

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Client-toepassingen verifiëren die zijn gemaakt met Flex

Documenten verwerken met verwijderen

Een van de belangrijkste niet-primitieve Java-typen die in AEM Forms worden gebruikt, is de klasse com.adobe.idp.Document. Een document is doorgaans vereist om een AEM Forms-bewerking aan te roepen. Het is voornamelijk een PDF-document, maar kan ook andere documenttypen bevatten, zoals SWF, HTML, XML of een DOC-bestand. (Zie Gegevens doorgeven aan AEM Forms-services met de Java API.)

Een clienttoepassing die met Flex is gebouwd, kan niet rechtstreeks een document aanvragen. U kunt Adobe Reader bijvoorbeeld niet starten om een URL aan te vragen waarmee een PDF-bestand wordt gemaakt. Verzoeken om documenttypen, zoals PDF- en Microsoft Word-documenten, retourneren een resultaat dat een URL is. Het is de verantwoordelijkheid van de client om de inhoud van de URL weer te geven. Met de service Documentbeheer kunt u informatie over de URL en het inhoudstype genereren. Verzoeken om XML-documenten retourneren het volledige XML-document in het resultaat.

Een document doorgeven als invoerparameter

Een clienttoepassing die met Flex is gebouwd, kan een document niet rechtstreeks doorgeven aan een AEM Forms-proces. In plaats daarvan gebruikt de clienttoepassing een instantie van de klasse mx.rpc.livecycle.DocumentReference ActionScript om invoerparameters door te geven aan een bewerking die een instantie com.adobe.idp.Document verwacht. Een Flex-clienttoepassing heeft verschillende opties voor het instellen van een DocumentReference-object:

  • Wanneer het document zich op de server bevindt en de bestandslocatie bekend is, stelt u de eigenschap referenceType van het object DocumentReference in op REF_TYPE_FILE. Stel de eigenschap fileRef in op de locatie van het bestand, zoals in het volgende voorbeeld:
 ... var docRef: DocumentReference = new DocumentReference();
 docRef.referenceType = DocumentReference.REF_TYPE_FILE;
 docRef.fileRef = "C:/install/adobe/cs2/How to Uninstall.pdf"; ...
  • Wanneer het document zich op de server bevindt en u de URL kent, stelt u de eigenschap referenceType van het object DocumentReference in op REF_TYPE_URL. Stel de eigenschap url in op de URL, zoals in het volgende voorbeeld wordt getoond:
... var docRef: DocumentReference = new DocumentReference();
docRef.referenceType = DocumentReference.REF_TYPE_URL;
docRef.url = "https://companyserver:8080/DocumentManager/116/7855"; ...
  • Als u een object DocumentReference wilt maken van een tekenreeks in de clienttoepassing, stelt u de eigenschap referenceType van het object DocumentReference in op REF_TYPE_INLINE. Stel de eigenschap text in op de tekst die u in het object wilt opnemen, zoals in het volgende voorbeeld wordt getoond:
... var docRef: DocumentReference = new DocumentReference();
docRef.referenceType = DocumentReference.REF_TYPE_INLINE;
docRef.text = "Text for my document";  // Optionally, you can override the server’s default character set  // if necessary:  // docRef.charsetName=CharacterSetName  ...
  • Als het document zich niet op de server bevindt, gebruikt u het verwijderbare uploadserver om een document te uploaden naar AEM Forms. Nieuw in AEM Forms is de mogelijkheid om beveiligde documenten te uploaden. Wanneer u een beveiligd document uploadt, moet u een gebruiker gebruiken die de *rol Gebruiker van toepassing voor uploaden van document heeft. Zonder deze rol kan de gebruiker geen beveiligd document uploaden. U wordt aangeraden een beveiligd document met één aanmeldingsnaam te uploaden. (Zie Beveiligde documenten doorgeven om processen aan te roepen met Remoting.)

    OPMERKING

    als AEM Forms zo is geconfigureerd dat onbeveiligde documenten kunnen worden geüpload, kunt u een gebruiker die niet over de gebruikersrol Toepassing voor uploaden van document beschikt, gebruiken om een document te uploaden. Een gebruiker kan ook beschikken over de machtiging Document uploaden. Als AEM Forms echter is geconfigureerd om alleen beveiligde documenten toe te staan, moet u ervoor zorgen dat de gebruiker beschikt over de rol Gebruiker van Document uploaden of de machtiging Uploaden document. Zie AEM Forms configureren voor het accepteren van beveiligde en onbeveiligde documenten*.

    U gebruikt de standaarduploadmogelijkheden voor Flash voor de opgegeven upload-URL: https://SERVER:PORT/remoting/lcfileupload. U kunt het object DocumentReference gebruiken wanneer een invoerparameter van het type Document wordt verwacht
     private function startUpload():void  {  fileRef.addEventListener(Event.SELECT, selectHandler);  fileRef.addEventListener("uploadCompleteData", completeHandler);  try  {   var success:Boolean = fileRef.browse();  }    catch (error:Error)  {   trace("Unable to browse for files.");  }  }      private function selectHandler(event:Event):void {  var request:URLRequest = new  URLRequest("https://SERVER:PORT/remoting/lcfileupload")  try   {   fileRef.upload(request);   }    catch (error:Error)   {   trace("Unable to upload file.");   }  }    private function completeHandler(event:DataEvent):void  {   var params:Object = new Object();   var docRef:DocumentReference = new DocumentReference();   docRef.url = event.data as String;   docRef.referenceType = DocumentReference.REF_TYPE_URL;  }In het dialoogvenster Snel starten verwijderen wordt het verwijderbare uploadserver gebruikt om een PDF-bestand door te geven aan het MyApplication/EncryptDocumentproces. (Zie Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Verouderd voor AEM formulieren) AEM Forms Remoting.)


private
function startUpload(): void  {
 fileRef.addEventListener(Event.SELECT, selectHandler);
 fileRef.addEventListener("uploadCompleteData", completeHandler);
 try  {
  var success: Boolean = fileRef.browse();
 }
 catch (error: Error)  {
  trace("Unable to browse for files.");
 }
}
private
function selectHandler(event: Event): void {
 var request: URLRequest = new  URLRequest("https://SERVER:PORT/remoting/lcfileupload")  try  {
  fileRef.upload(request);
 }
 catch (error: Error)  {
  trace("Unable to upload file.");
 }
}
private
function completeHandler(event: DataEvent): void  {
 var params: Object = new Object();
 var docRef: DocumentReference = new DocumentReference();
 docRef.url = event.data as String;
 docRef.referenceType = DocumentReference.REF_TYPE_URL;
}

In het dialoogvenster Snel starten verwijderen wordt het verwijderbare uploadserver gebruikt om een PDF-bestand door te geven aan het MyApplication/EncryptDocumentproces. (Zie Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Verouderd voor AEM formulieren) AEM Forms Remoting.)

Een document terugsturen naar een clienttoepassing

Een clienttoepassing ontvangt een object van het type mx.rpc.livecycle.DocumentReference voor een servicebewerking die een com.adobe.idp.Document-instantie als uitvoerparameter retourneert. Omdat een clienttoepassing werkt met ActionScript-objecten en niet met Java, kunt u een op Java gebaseerd Document-object niet teruggeven aan een Flex-client. In plaats daarvan genereert de server een URL voor het document en geeft de URL weer door aan de client. De DocumentReference-eigenschap referenceType van het object geeft aan of de inhoud zich in het DocumentReference-object bevindt of moet worden opgehaald van een URL in de eigenschap DocumentReference.url. De eigenschap DocumentReference.contentType geeft het type document op.

Zie ook

AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting

Het AEM Forms Flex-bibliotheekbestand opnemen

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Client-toepassingen verifiëren die zijn gemaakt met Flex

Beveiligde documenten doorgeven om processen aan te roepen met Verwijderen

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met Verwijderen

Als u een AEM Forms-proces wilt aanroepen vanuit een toepassing die is gebouwd met Flex, voert u de volgende taken uit:

  1. Maak een mx:RemoteObject-instantie.
  2. Maak een ChannelSet-instantie.
  3. Geef de vereiste invoerwaarden door.
  4. Retourwaarden verwerken.
OPMERKING

In deze sectie wordt besproken hoe u een AEM Forms-proces kunt aanroepen en een document kunt uploaden wanneer AEM Forms is geconfigureerd voor het uploaden van onbeveiligde documenten. Voor informatie over hoe te om processen van AEM Forms aan te halen en veilige documenten te uploaden en hoe te om AEM Forms te vormen om veilige en onveilige documenten goed te keuren, zie Het overgaan van veilige documenten om processen aan te halen gebruikend Remoting.

Een mx:RemoteObject-instantie maken

U maakt een mx:RemoteObject-instantie om een AEM Forms-proces aan te roepen dat in Workbench is gemaakt. Als u een mx:RemoteObject-instantie wilt maken, geeft u de volgende waarden op:

  • id: De naam van de mx:RemoteObject instantie die het aan te roepen proces vertegenwoordigt.
  • doel: de naam van het AEM Forms-proces dat moet worden aangeroepen. Als u bijvoorbeeld het proces MyApplication/EncryptDocument wilt aanroepen, geeft u MyApplication/EncryptDocument op.
  • result: De naam van de Flex-methode die het resultaat afhandelt.

Geef binnen de tag mx:RemoteObject een tag <mx:method> op die de naam van de oproepmethode van het proces aangeeft. De naam van een Forms-oproepmethode is doorgaans invoke.

In het volgende codevoorbeeld wordt een instantie mx:RemoteObject gemaakt die het proces MyApplication/EncryptDocument aanroept.

 <mx:RemoteObject id="EncryptDocument" destination="MyApplication/EncryptDocument" result="resultHandler(event);">
          <mx:method name="invoke" result="handleExecuteInvoke(event)"/>
      </mx:RemoteObject>

Een kanaal naar AEM Forms maken

Een cliënttoepassing kan AEM Forms aanhalen door een Kanaal in MXML of ActionScript te specificeren, zoals het volgende ActionScript voorbeeld toont. Het kanaal moet een AMFChannel, SecureAMFChannel, HTTPChannel, of SecureHTTPChannel zijn.

     ...
     private function refresh():void{
         var cs:ChannelSet= new ChannelSet();
         cs.addChannel(new AMFChannel("my-amf",
             "https://yourlcserver:8080/remoting/messagebroker/amf"));
         EncryptDocument.setCredentials("administrator", "password");
         EncryptDocument.channelSet = cs;
     }
     ...

Wijs de ChannelSet instantie aan het mx:RemoteObject gebied van de instantie channelSet (zoals aangetoond in het vorige codevoorbeeld) toe. Over het algemeen importeert u de kanaalklasse in een importinstructie in plaats van de volledig gekwalificeerde naam op te geven wanneer u de methode ChannelSet.addChannel aanroept.

Invoerwaarden doorgeven

Een in Workbench gemaakt proces kan nul of meer invoerparameters gebruiken en een uitvoerwaarde retourneren. Een clienttoepassing geeft invoerparameters binnen een ActionScript-object door met velden die overeenkomen met parameters die bij het AEM Forms-proces horen. Voor het kortstondige proces met de naam MyApplication/EncryptDocument is één invoerparameter met de naam inDoc vereist. De naam van de bewerking die door het proces wordt weergegeven, is invoke (de standaardnaam voor een kortstondig proces). (Zie AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting.)

In het volgende codevoorbeeld wordt een PDF-document doorgegeven aan het MyApplication/EncryptDocument-proces:

     ...
     var params:Object = new Object();

     //Document is an instance of DocumentReference
     //that store an unsecured PDF document
     params["inDoc"] = pdfDocument;

     // Invoke an operation synchronously:
     EncryptDocument.invoke(params);
     ...

In dit codevoorbeeld is pdfDocument een DocumentReference-instantie die een onbeveiligd PDF-document bevat. Zie Documenten afhandelen met (Vervangen voor AEM formulieren) AEM Forms Remoting voor informatie over een DocumentReference.

Een specifieke versie van een service aanroepen

U kunt een specifieke versie van de dienst van Forms aanhalen door een _version parameter in de de parameterkaart van de aanroeping te gebruiken. Bijvoorbeeld, om versie 1.2 van de MyApplication/EncryptDocument dienst aan te halen:

 var params:Object = new Object();
 params["inDoc"] = pdfDocument;
 params["_version"] = "1.2"
 var token:AsyncToken = echoService.echoString(params);

De parameter version moet een tekenreeks zijn met één punt. De waarden aan de linkerzijde, de belangrijkste versie, en juiste, minder belangrijke versie, van de periode moeten gehelen zijn. Als deze parameter niet wordt gespecificeerd, wordt de hoofd actieve versie aangehaald.

Retourwaarden afhandelen

Uitvoerparameters van AEM Forms-processen worden gedeserialiseerd in ActionScript-objecten waaruit de clienttoepassing specifieke parameters op naam extraheert, zoals in het volgende voorbeeld wordt getoond. (De uitvoerwaarde van het proces MyApplication/EncryptDocument wordt genoemd outDoc.)

     ...
     var res:Object = event.result;
     var docRef:DocumentReference = res["outDoc"] as DocumentReference;
     ...

Het MyApplication/EncryptDocument-proces aanroepen

U kunt het MyApplication/EncryptDocument proces aanhalen door de volgende stappen uit te voeren:

  1. Maak een mx:RemoteObject-instantie via ActionScript of MXML. Zie Een instantie mx:RemoteObject maken.
  2. Stel een ChannelSet-instantie in om te communiceren met AEM Forms en koppel deze aan de mx:RemoteObject-instantie. Zie Een kanaal naar AEM Forms maken.
  3. Roep de methode login van ChannelSet of de methode setCredentials van de service aan om de waarde en het wachtwoord van de gebruikersidentificatie op te geven. (Zie Single Sign-On gebruiken.)
  4. Een mx.rpc.livecycle.DocumentReference-exemplaar vullen met een onbeveiligd PDF-document om door te geven aan het MyApplication/EncryptDocument-proces. (Zie Een document doorgeven als een invoerparameter.)
  5. Codeer het PDF-document door de methode invoke van de instantie mx:RemoteObject aan te roepen. Geef Object door die de invoerparameter bevat (dit is het onbeveiligde PDF-document). Zie Invoerwaarden doorgeven.
  6. Haal het PDF-document met wachtwoordversleuteling op dat tijdens het proces wordt geretourneerd. Zie Retourwaarden afhandelen.

Snel starten: Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Clienttoepassingen verifiëren die zijn gebouwd met Flex

Er zijn verschillende manieren waarop AEM formuliergebruikersbeheer een aanvraag Remoting uit een Flex-toepassing kan verifiëren, waaronder AEM Forms Single Sign-On via de centrale aanmeldingsservice, basisverificatie en aangepaste verificatie. Wanneer noch enige teken-op noch anonieme toegang wordt toegelaten, resulteert een verwijderend verzoek in of basisauthentificatie (het gebrek) of douaneauthentificatie.

De basisauthentificatie baseert zich op standaardJ2EE basisauthentificatie van de container van de Webtoepassing. Voor basisauthentificatie, veroorzaakt een fout van HTTP 401 een browser uitdaging. Dat betekent dat wanneer u probeert verbinding te maken met een Forms-toepassing met behulp van RemoteObject en zich nog niet hebt aangemeld bij de Flex-toepassing, de browser u om een gebruikersnaam en wachtwoord vraagt.

Voor douaneauthentificatie, verzendt de server een fout naar de cliënt om erop te wijzen dat de authentificatie wordt vereist.

OPMERKING

Voor informatie over het uitvoeren van authentificatie gebruikend de tokens van HTTP, zie Creërend Flash Builder toepassingen die authentificatie uitvoeren SSO gebruikend de tokens van HTTP.

Aangepaste verificatie gebruiken

U laat douaneauthentificatie in beleidsconsole toe door de authentificatiemethode van Basis in Douane op het remoting eindpunt te veranderen. Als u aangepaste verificatie gebruikt, roept uw clienttoepassing de methode ChannelSet.login aan om u aan te melden en de methode ChannelSet.logout om zich af te melden.

OPMERKING

In de vorige versie van AEM Forms, hebt u geloofsbrieven naar een bestemming verzonden door RemoteObject.setCredentials methode te roepen. De methode setCredentials gaf de gegevens pas daadwerkelijk door aan de server als de component voor het eerst probeert verbinding te maken met de server. Daarom als de component een foutengebeurtenis uitbracht, kon u niet zeker zijn als de fout wegens een authentificatiefout, of om een andere reden gebeurde. De ChannelSet.login methode verbindt met de server wanneer u het roept zodat u een authentificatiekwestie kunt onmiddellijk behandelen. Hoewel u de setCredentials methode kunt blijven gebruiken, wordt geadviseerd dat u de ChannelSet.login methode gebruikt.

Omdat de veelvoudige bestemmingen de zelfde kanalen, en het overeenkomstige voorwerp kunnen gebruiken ChannelSet, het programma openen aan één bestemming registreert de gebruiker aan een andere bestemming die het zelfde kanaal of de kanalen gebruikt. Als twee componenten verschillende geloofsbrieven op het zelfde voorwerp toepassen ChannelSet, worden de laatste toegepaste geloofsbrieven gebruikt. Als de veelvoudige componenten het zelfde voor authentiek verklaarde voorwerp ChannelSet gebruiken, het roepen van de methode logout registreert alle componenten uit de bestemmingen.

In het volgende voorbeeld worden de methoden ChannelSet.login en ChannelSet.logout met een RemoteObject-besturingselement gebruikt. Deze toepassing voert de volgende handelingen uit:

  • Maakt een ChannelSet-object in de creationComplete-handler die de kanalen vertegenwoordigt die door de RemoteObject-component worden gebruikt
  • Geeft gegevens door aan de server door de functie ROLogin aan te roepen als reactie op een klikgebeurtenis Button
  • Gebruikt de component RemoteObject om een Koord naar de server te verzenden in antwoord op een Button klikgebeurtenis. De server retourneert dezelfde String terug naar de RemoteObject-component.
  • Gebruikt de resultaatgebeurtenis van de component RemoteObject om het Koord in een controle te tonen TextArea
  • Hiermee wordt u afgemeld bij de server door de functie ROLogout aan te roepen als reactie op een klikgebeurtenis Button
 <?xml version=”1.0”?>
 <!-- security/SecurityConstraintCustom.mxml -->
 <mx:Application xmlns:mx=”https://www.adobe.com/2006/mxml” width=”100%”
     height=”100%” creationComplete=”creationCompleteHandler();”>

     <mx:Script>
         <![CDATA[
             import mx.controls.Alert;
             import mx.messaging.config.ServerConfig;
             import mx.rpc.AsyncToken;
             import mx.rpc.AsyncResponder;
             import mx.rpc.events.FaultEvent;
             import mx.rpc.events.ResultEvent;
             import mx.messaging.ChannelSet;

             // Define a ChannelSet object.
             public var cs:ChannelSet;

             // Define an AsyncToken object.
             public var token:AsyncToken;

             // Initialize ChannelSet object based on the
             // destination of the RemoteObject component.
             private function creationCompleteHandler():void {
                 if (cs == null)
                 cs = ServerConfig.getChannelSet(remoteObject.destination);
             }

             // Login and handle authentication success or failure.
             private function ROLogin():void {
                 // Make sure that the user is not already logged in.
                 if (cs.authenticated == false) {
                     token = cs.login(“sampleuser”, “samplepassword”);
                     // Add result and fault handlers.
                     token.addResponder(new AsyncResponder(LoginResultEvent,
                     LoginFaultEvent));
                 }
             }

             // Handle successful login.
             private function LoginResultEvent(event:ResultEvent,
                 token:Object=null):void  {
                     switch(event.result) {
                         case “success”:
                             authenticatedCB.selected = true;
                             break;
                             default:
                     }
                 }

                 // Handle login failure.
                 private function LoginFaultEvent(event:FaultEvent,
                     token:Object=null):void {
                         switch(event.fault.faultCode) {
                             case “Client.Authentication”:
                                 default:
                                 authenticatedCB.selected = false;
                                 Alert.show(“Login failure: “ + event.fault.faultString);
                     }
                 }

                 // Logout and handle success or failure.
                 private function ROLogout():void {
                     // Add result and fault handlers.
                     token = cs.logout();
                     token.addResponder(new
                         AsyncResponder(LogoutResultEvent,LogoutFaultEvent));
                 }

                 // Handle successful logout.
                 private function LogoutResultEvent(event:ResultEvent,
                     token:Object=null):void {
                         switch (event.result) {
                             case “success”:
                                 authenticatedCB.selected = false;
                                 break;
                                 default:
                     }
                 }

                 // Handle logout failure.
                 private function LogoutFaultEvent(event:FaultEvent,
                     token:Object=null):void {
                         Alert.show(“Logout failure: “ + event.fault.faultString);
                 }
                 // Handle message recevied by RemoteObject component.
                 private function resultHandler(event:ResultEvent):void {
                     ta.text += “Server responded: “+ event.result + “\n”;
                 }

                 // Handle fault from RemoteObject component.
                 private function faultHandler(event:FaultEvent):void {
                     ta.text += “Received fault: “ + event.fault + “\n”;
                 }
             ]]>
     </mx:Script>
     <mx:HBox>
         <mx:Label text=”Enter a text for the server to echo”/>
         <mx:TextInput id=”ti” text=”Hello World!”/>
         <mx:Button label=”Login”
             click=”ROLogin();”/>
         <mx:Button label=”Echo”
             enabled=”{authenticatedCB.selected}”
             click=”remoteObject.echo(ti.text);”/>
         <mx:Button label=”Logout”
             click=”ROLogout();”/>
         <mx:CheckBox id=”authenticatedCB”
             label=”Authenticated?”
             enabled=”false”/>
     </mx:HBox>
     <mx:TextArea id=”ta” width=”100%” height=”100%”/>

     <mx:RemoteObject id=”remoteObject”
         destination=”myDest”
         result=”resultHandler(event);”
         fault=”faultHandler(event);”/>
 </mx:Application>

De methoden login en logout retourneren een object AsyncToken. Wijs gebeurtenismanagers aan het voorwerp AsyncToken voor de resultaatgebeurtenis toe om een succesvolle vraag te behandelen, en voor de foutengebeurtenis om een mislukking te behandelen.

Single Sign-On gebruiken

AEM gebruikers kunnen verbinding maken met meerdere AEM Forms-webtoepassingen om een taak uit te voeren. Wanneer gebruikers van de ene webtoepassing naar de andere gaan, is het niet efficiënt om van hen te verlangen dat zij zich afzonderlijk bij elke webtoepassing aanmelden. Met het AEM Forms-mechanisme voor eenmalige aanmelding kunnen gebruikers zich eenmaal aanmelden en vervolgens toegang krijgen tot alle AEM Forms-webtoepassingen. Omdat AEM Forms-ontwikkelaars clienttoepassingen kunnen maken voor gebruik met AEM Forms, moeten ze ook gebruik kunnen maken van het Single Sign-On mechanisme.

Elke AEM Forms-webtoepassing wordt verpakt in een eigen WAR-bestand (Web Archive), dat vervolgens wordt verpakt als onderdeel van een EAR-bestand (Enterprise Archive). Aangezien een toepassingsserver het delen van sessiegegevens in verschillende webtoepassingen niet toestaat, gebruikt AEM Forms HTTP-cookies om verificatiegegevens op te slaan. Met verificatiecookies kan een gebruiker zich aanmelden bij een Forms-toepassing en vervolgens verbinding maken met andere AEM Forms-webtoepassingen. Deze techniek wordt Single Sign-On genoemd.

AEM Forms-ontwikkelaars schrijven clienttoepassingen om de functionaliteit van formulierhulplijnen (afgekeurd) uit te breiden en de werkruimte aan te passen. Een Workspace-toepassing kan bijvoorbeeld een proces starten. De cliënttoepassing gebruikt dan een remoting eindpunt om gegevens van de dienst van Forms terug te winnen.

Wanneer een AEM Forms-service wordt aangeroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting, geeft de clienttoepassing het verificatiecookie als onderdeel van de aanvraag door. Aangezien de gebruiker al is geverifieerd, is geen aanvullende aanmelding vereist om verbinding te maken van de clienttoepassing met de AEM Forms-service.

OPMERKING

Als een cookie ongeldig is of ontbreekt, wordt niet impliciet omgeleid naar een aanmeldingspagina. Daarom kunt u nog een anonieme dienst roepen.

U kunt het AEM Forms-mechanisme voor eenmalige aanmelding omzeilen door een clienttoepassing te schrijven die zich zelfstandig aanmeldt en zich afmeldt. Als u het Single Sign-On mechanisme omzeilt, kunt u of basis of douaneauthentificatie met uw toepassing gebruiken.

Omdat dit mechanisme het AEM Forms Single Sign-On mechanisme niet gebruikt, wordt er geen verificatiecookie naar de client geschreven. Aanmeldingsgegevens worden opgeslagen in het object ChannelSet voor het externe kanaal. Daarom worden om het even welke RemoteObject vraag u over zelfde ChannelSet maakt gemaakt in de context van die geloofsbrieven.

Single Sign-On instellen in AEM Forms

Als u Single Sign-On wilt gebruiken in AEM Forms, installeert u de component voor de formulierwerkstroom, die de gecentraliseerde aanmeldingsservice bevat. Nadat een gebruiker zich met succes heeft aangemeld, retourneert de gecentraliseerde aanmeldingsservice een verificatiecookie voor de gebruiker. Elke volgende aanvraag voor een Forms-webtoepassing bevat de cookie. Als het cookie geldig is, wordt de gebruiker beschouwd als zijnde geverifieerd en hoeft u zich niet opnieuw aan te melden.

Een clienttoepassing schrijven die gebruikmaakt van Single Sign-On

Wanneer u van het enige sign-on mechanisme voordeel haalt, verwacht u gebruikers om login door de gecentraliseerde login dienst te gebruiken alvorens een cliënttoepassing te beginnen. Met andere woorden, een clienttoepassing meldt zich niet aan via de browser of door de methode ChannelSet.login aan te roepen.

Als u het enige sign-on mechanisme van AEM Forms gebruikt, vorm het Remoting eindpunt om douaneauthentificatie, niet basis te gebruiken. Anders, wanneer het gebruiken van basisauthentificatie, veroorzaakt een authentificatiefout een browser uitdaging, die u niet de gebruiker wilt zien. In plaats daarvan detecteert uw toepassing de verificatiefout en wordt een bericht weergegeven waarin de gebruiker wordt opgedragen zich aan te melden met de gecentraliseerde aanmeldingsservice.

Een cliënttoepassing heeft toegang tot AEM Forms door een remoting eindpunt door de RemoteObject component te gebruiken, zoals het volgende voorbeeld toont.

 <?xml version="1.0"?>
 <mx:Application
        backgroundColor="#FFFFFF">

       <mx:Script>
          <![CDATA[

            import mx.controls.Alert;
            import mx.rpc.events.FaultEvent;

            // Prompt user to login on a fault.
            private function faultHandler(event:FaultEvent):void
            {
             if(event.fault.faultCode=="Client.Authentication")
             {
                 Alert.show(
                     event.fault.faultString + "\n" +
                     event.fault.faultCode + "\n" +
                     "Please login to continue.");
             }
         }
          ]]>
       </mx:Script>

       <mx:RemoteObject id="srv"
           destination="product"
           fault="faultHandler(event);"/>

       <mx:DataGrid
           width="100%" height="100%"
           dataProvider="{srv.getProducts.lastResult}"/>

       <mx:Button label="Get Data"
           click="srv.getProducts();"/>

 </mx:Application>

Aanmelden als nieuwe gebruiker terwijl de Flex-toepassing nog actief is

Een toepassing die met Flex is ontwikkeld, bevat het verificatiecookie bij elke aanvraag naar een AEM Forms-service. Om prestatieredenen valideert AEM Forms de cookie niet op elk verzoek. AEM Forms detecteert echter wel wanneer een verificatiecookie wordt vervangen door een ander verificatiecookie.

U start bijvoorbeeld een clienttoepassing en wanneer de toepassing actief is, gebruikt u de gecentraliseerde aanmeldingsservice om u af te melden. Vervolgens kunt u zich aanmelden als een andere gebruiker. Aanmelden als een andere gebruiker vervangt het bestaande verificatiecookie door een verificatiecookie voor de nieuwe gebruiker.

Op het volgende verzoek van de clienttoepassing detecteert AEM Forms dat het cookie is gewijzigd en meldt het de gebruiker af. Daarom ontbreekt het eerste verzoek na een koekjesverandering. Alle volgende verzoeken worden gedaan in het kader van het nieuwe cookie en zijn succesvol.

Afmelden

Als u zich wilt afmelden bij AEM Forms en een sessie ongeldig wilt maken, moet het verificatiecookie worden verwijderd van de computer van de client. Omdat het doel van Single Sign-On is om een gebruiker toe te staan zich één keer aan te melden, wilt u geen cliënttoepassing om het koekje te schrappen. Met deze handeling wordt de gebruiker uitgelogd.

Daarom genereert het aanroepen van de methode RemoteObject.logout in een clienttoepassing een foutbericht op de client waarin wordt aangegeven dat de sessie niet is uitgelogd. In plaats daarvan kan de gebruiker de gecentraliseerde aanmeldingsservice gebruiken om zich af te melden en het verificatiecookie te verwijderen.

Afmelden terwijl de Flex-toepassing nog actief is

U kunt een clienttoepassing starten die met Flex is gebouwd en de gecentraliseerde aanmeldingsservice gebruiken om u af te melden. Als onderdeel van het logout-proces wordt het verificatiecookie verwijderd. Als een verwijderingsaanvraag wordt ingediend zonder cookie of met een ongeldig cookie, wordt de gebruikerssessie ongeldig. Deze actie is in feite een logout. De volgende keer dat de clienttoepassing verbinding probeert te maken met een AEM Forms-service, wordt de gebruiker gevraagd zich aan te melden.

Zie ook

AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting

Documenten verwerken met (Vervangen voor AEM formulieren) AEM Forms Remoting

Het AEM Forms Flex-bibliotheekbestand opnemen

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Beveiligde documenten doorgeven om processen aan te roepen met Verwijderen

Beveiligde documenten doorgeven om processen aan te roepen met Verwijderen

U kunt beveiligde documenten doorgeven aan AEM Forms wanneer u een proces aanroept waarvoor een of meer documenten vereist zijn. Door een beveiligd document door te geven, beschermt u bedrijfsinformatie en vertrouwelijke documenten. In dat geval kan een document verwijzen naar een PDF-document, een XML-document, een Word-document, enzovoort. Als AEM Forms is geconfigureerd voor beveiligde documenten, is het vereist dat een beveiligd document naar AEM Forms wordt verzonden vanuit een clienttoepassing die in Flex is geschreven. (Zie AEM Forms configureren voor het accepteren van beveiligde en onbeveiligde documenten.)

Wanneer u een beveiligd document doorgeeft, gebruikt u Single Sign-On en geeft u een gebruiker op AEM formulieren met de *rol Gebruiker van toepassing voor uploaden van document. Zonder deze rol kan de gebruiker geen beveiligd document uploaden. U kunt een rol programmatically toewijzen aan een gebruiker. (Zie Rollen en machtigingen beheren.)

OPMERKING

Wanneer u een nieuwe rol maakt en u wilt dat leden van die rol beveiligde documenten uploaden, controleert u of u de machtiging Document uploaden hebt opgegeven.

AEM Forms ondersteunt een bewerking met de naam getFileUploadToken die een token retourneert dat is doorgegeven aan de uploadserver. De methode DocumentReference.constructRequestForUpload vereist een URL aan AEM Forms samen met het teken dat door de methode LC.FileUploadAuthenticator.getFileUploadToken is teruggekeerd. Deze methode retourneert een URLRequest-object dat wordt gebruikt in de aanroep naar de uploadserver. De volgende code demonstreert deze toepassingslogica.

     ...
         private function startUpload():void
         {
             fileRef.addEventListener(Event.SELECT, selectHandler);
             fileRef.addEventListener("uploadCompleteData", completeHandler);
             try
             {
         var success:Boolean = fileRef.browse();
             }
             catch (error:Error)
             {
                 trace("Unable to browse for files.");
             }

         }

          private function selectHandler(event:Event):void
             {
             var authTokenService:RemoteObject = new RemoteObject("LC.FileUploadAuthenticator");
             authTokenService.addEventListener("result", authTokenReceived);
             authTokenService.channelSet = cs;
             authTokenService.getFileUploadToken();
             }

         private function authTokenReceived(event:ResultEvent):void
             {
             var token:String = event.result as String;
             var request:URLRequest = DocumentReference.constructRequestForUpload("http://localhost:8080", token);

             try
             {
           fileRef.upload(request);
             }
             catch (error:Error)
             {
             trace("Unable to upload file.");
             }
             }

         private function completeHandler(event:DataEvent):void
         {

             var params:Object = new Object();
             var docRef:DocumentReference = new DocumentReference();
             docRef.url = event.data as String;
             docRef.referenceType = DocumentReference.REF_TYPE_URL;
         }
         ...

)

AEM Forms configureren voor het accepteren van beveiligde en onbeveiligde documenten

U kunt beheerconsole gebruiken om op te geven of documenten veilig zijn wanneer u een document doorgeeft van een Flex-clienttoepassing naar een AEM Forms-proces. AEM Forms is standaard geconfigureerd voor het accepteren van beveiligde documenten. U kunt AEM Forms configureren voor het accepteren van beveiligde documenten door de volgende stappen uit te voeren:

  1. Meld u aan bij de beheerconsole.
  2. Klik Instellingen.
  3. Klik Kernsysteeminstellingen.
  4. Klik Configuraties.
  5. Zorg ervoor dat de optie Niet-beveiligde documenten mogen worden geüpload vanuit Flex-toepassingen is uitgeschakeld.
OPMERKING

Als u AEM Forms wilt configureren voor het accepteren van onbeveiligde documenten, selecteert u de optie Niet-beveiligde documenten mogen worden geüpload vanuit Flex-toepassingen. Start vervolgens een toepassing of service opnieuw om ervoor te zorgen dat de instelling van kracht wordt.

Snel starten: Een kortstondig proces aanroepen door een beveiligd document door te geven met Verwijderen

In het volgende codevoorbeeld wordt de MyApplication/EncryptDocument.Gebruiker moet zich aanmelden om op de knop Bestand selecteren te klikken waarmee een PDF-bestand wordt geüpload en het proces wordt geactiveerd. Dat wil zeggen dat zodra de gebruiker is geverifieerd, de knop Bestand selecteren is ingeschakeld. In de volgende afbeelding ziet u de Flex-clienttoepassing nadat een gebruiker is geverifieerd. Bericht dat Authenticated CheckBox wordt toegelaten.

iu_iu_securityemotelogin

Als AEM Forms alleen is geconfigureerd voor het uploaden van beveiligde documenten en de gebruiker niet beschikt over de * rol Gebruiker *van toepassing voor uploaden van document, wordt een uitzondering gegenereerd. Als de gebruiker deze rol wel heeft, wordt het bestand geüpload en wordt het proces aangeroepen.

 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application  xmlns="*"
      creationComplete="initializeChannelSet();">
        <mx:Script>
        <![CDATA[
      import mx.rpc.livecycle.DocumentReference;
      import flash.net.FileReference;
      import flash.net.URLRequest;
      import flash.events.Event;
      import flash.events.DataEvent;
      import mx.messaging.ChannelSet;
      import mx.messaging.channels.AMFChannel;
      import mx.rpc.events.ResultEvent;
      import mx.collections.ArrayCollection;
      import mx.rpc.AsyncToken;
      import mx.controls.Alert;
      import mx.rpc.events.FaultEvent;
      import mx.rpc.AsyncResponder;

      // Classes used in file retrieval
      private var fileRef:FileReference = new FileReference();
      private var docRef:DocumentReference = new DocumentReference();
      private var parentResourcePath:String = "/";
      private var now1:Date;
      private var serverPort:String = "hiro-xp:8080";

      // Define a ChannelSet object.
      public var cs:ChannelSet;

      // Define an AsyncToken object.
      public var token:AsyncToken;

       // Holds information returned from AEM Forms
      [Bindable]
      public var progressList:ArrayCollection = new ArrayCollection();


      // Handles a successful login
     private function LoginResultEvent(event:ResultEvent,
         token:Object=null):void  {
             switch(event.result) {
                 case "success":
                     authenticatedCB.selected = true;
                     btnFile.enabled = true;
                     btnLogout.enabled = true;
                     btnLogin.enabled = false;
                         break;
                     default:
                 }
             }


 // Handle login failure.
 private function LoginFaultEvent(event:FaultEvent,
     token:Object=null):void {
     switch(event.fault.faultCode) {
                 case "Client.Authentication":
                         default:
                         authenticatedCB.selected = false;
                         Alert.show("Login failure: " + event.fault.faultString);
                 }
             }


      // Set up channel set to invoke AEM Forms
      private function initializeChannelSet():void {
        cs = new ChannelSet();
        cs.addChannel(new AMFChannel("remoting-amf", "https://" + serverPort + "/remoting/messagebroker/amf"));
        EncryptDocument2.channelSet = cs;
      }

     // Call this method to upload the file.
      // This creates a file picker and lets the user select a PDF file to pass to the EncryptDocument process.
      private function uploadFile():void {
        fileRef.addEventListener(Event.SELECT, selectHandler);
        fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,completeHandler);
        fileRef.browse();
      }

      // Gets called for selected file. Does the actual upload via the file upload servlet.
      private function selectHandler(event:Event):void {
              var authTokenService:RemoteObject = new RemoteObject("LC.FileUploadAuthenticator");
         authTokenService.addEventListener("result", authTokenReceived);
         authTokenService.channelSet = cs;
         authTokenService.getFileUploadToken();
      }

     private function authTokenReceived(event:ResultEvent):void
     {
     var token:String = event.result as String;
     var request:URLRequest = DocumentReference.constructRequestForUpload("https://hiro-xp:8080", token);

     try
     {
           fileRef.upload(request);
     }
     catch (error:Error)
     {
         trace("Unable to upload file.");
     }
 }

      // Called once the file is completely uploaded.
      private function completeHandler(event:DataEvent):void {

        // Set the docRef’s url and referenceType parameters
        docRef.url = event.data as String;
        docRef.referenceType=DocumentReference.REF_TYPE_URL;
        executeInvokeProcess();
      }

     //This method invokes the EncryptDocument process
      public function executeInvokeProcess():void {
         //Create an Object to store the input value for the EncryptDocument process
           now1 = new Date();

         var params:Object = new Object();
         params["inDoc"]=docRef;

         // Invoke the EncryptDocument process
         var token:AsyncToken;
         token = EncryptDocument2.invoke(params);
         token.name = name;
      }

      // AEM Forms  login method
      private function ROLogin():void {
         // Make sure that the user is not already logged in.

         //Get the User and Password
         var userName:String = txtUser.text;
         var pass:String = txtPassword.text;

        if (cs.authenticated == false) {
             token = cs.login(userName, pass);

         // Add result and fault handlers.
         token.addResponder(new AsyncResponder(LoginResultEvent,    LoginFaultEvent));
                 }
             }

      // This method handles a successful process invocation
      public function handleResult(event:ResultEvent):void
      {
            //Retrieve information returned from the service invocation
          var token:AsyncToken = event.token;
          var res:Object = event.result;
          var dr:DocumentReference = res["outDoc"] as DocumentReference;
          var now2:Date = new Date();

           // These fields map to columns in the DataGrid
          var progObject:Object = new Object();
          progObject.filename = token.name;
          progObject.timing = (now2.time - now1.time).toString();
          progObject.state = "Success";
          progObject.link = "<a href='" + dr.url + "'> open </a>";
          progressList.addItem(progObject);
      }

      // Prompt user to login on a fault.
       private function faultHandler(event:FaultEvent):void
            {
             if(event.fault.faultCode=="Client.Authentication")
             {
                 Alert.show(
                     event.fault.faultString + "\n" +
                     event.fault.faultCode + "\n" +
                     "Please login to continue.");
             }
            }

       // AEM Forms  logout method
     private function ROLogout():void {
         // Add result and fault handlers.
         token = cs.logout();
         token.addResponder(new AsyncResponder(LogoutResultEvent,LogoutFaultEvent));
     }

     // Handle successful logout.
     private function LogoutResultEvent(event:ResultEvent,
         token:Object=null):void {
         switch (event.result) {
         case "success":
                 authenticatedCB.selected = false;
                 btnFile.enabled = false;
                 btnLogout.enabled = false;
                 btnLogin.enabled = true;
                 break;
                 default:
             }
     }

     // Handle logout failure.
     private function LogoutFaultEvent(event:FaultEvent,
             token:Object=null):void {
             Alert.show("Logout failure: " + event.fault.faultString);
     }

          private function resultHandler(event:ResultEvent):void {
          // Do anything else here.
          }
        ]]>

      </mx:Script>
      <mx:RemoteObject id="EncryptDocument" destination="MyApplication/EncryptDocument" result="resultHandler(event);">
          <mx:method name="invoke" result="handleResult(event)"/>
      </mx:RemoteObject>

       <!--//This consists of what is displayed on the webpage-->
      <mx:Panel id="lcPanel" title="EncryptDocument  (Deprecated for AEM forms) AEM Forms Remoting Example"
           height="25%" width="25%" paddingTop="10" paddingLeft="10" paddingRight="10"
           paddingBottom="10">
         <mx:Label width="100%" color="blue"
                text="Select a PDF file to pass to the EncryptDocument process"/>
        <mx:DataGrid x="10" y="0" width="500" id="idProgress" editable="false"
           dataProvider="{progressList}" height="231" selectable="false" >
          <mx:columns>
            <mx:DataGridColumn headerText="Filename" width="200" dataField="filename" editable="false"/>
            <mx:DataGridColumn headerText="State" width="75" dataField="state" editable="false"/>
            <mx:DataGridColumn headerText="Timing" width="75" dataField="timing" editable="false"/>
            <mx:DataGridColumn headerText="Click to Open" dataField="link" editable="false" >
             <mx:itemRenderer>
                <mx:Component>
                   <mx:Text x="0" y="0" width="100%" htmlText="{data.link}"/>
                </mx:Component>
             </mx:itemRenderer>
            </mx:DataGridColumn>
          </mx:columns>
        </mx:DataGrid>
        <mx:Button label="Select File" click="uploadFile()"  id="btnFile" enabled="false"/>
        <mx:Button label="Login" click="ROLogin();" id="btnLogin"/>
        <mx:Button label="LogOut" click="ROLogout();" enabled="false" id="btnLogout"/>
        <mx:HBox>
         <mx:Label text="User:"/>
         <mx:TextInput id="txtUser" text=""/>
         <mx:Label text="Password:"/>
         <mx:TextInput id="txtPassword" text="" displayAsPassword="true"/>
         <mx:CheckBox id="authenticatedCB"
             label="Authenticated?"
             enabled="false"/>
     </mx:HBox>
      </mx:Panel>
 </mx:Application>

Zie ook

AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting

Documenten verwerken met (Vervangen voor AEM formulieren) AEM Forms Remoting

Het AEM Forms Flex-bibliotheekbestand opnemen

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Client-toepassingen verifiëren die zijn gemaakt met Flex

Services voor aangepaste componenten aanroepen met Verwijderen

U kunt de diensten aanhalen die in een douanecomponent worden gevestigd gebruikend het Verwijderen. Neem bijvoorbeeld de bankcomponent die de klantenservice bevat. U kunt bewerkingen die bij de klantenservice horen, aanroepen met een clienttoepassing die in Flex is geschreven. Voordat u de snelstartcomponent van deze sectie kunt uitvoeren, moet u de aangepaste component Bank maken.

De klantenservice stelt een bewerking met de naam createCustomer beschikbaar. In deze beschrijving wordt beschreven hoe u een Flex-clienttoepassing kunt maken die de klantenservice aanroept en een klant maakt. Voor deze bewerking is een complex object van het type com.adobe.livecycle.sample.customer.Customer vereist dat de nieuwe klant vertegenwoordigt. De volgende illustratie toont de cliënttoepassing die de dienst van de Klant aanhaalt en een nieuwe klant creeert. De bewerking createCustomer retourneert een waarde voor de klant-id. De identificatiewaarde wordt weergegeven in het tekstvak Customer Identifier.

iu_iu_flexnewcust

De volgende lijst maakt een lijst van de controles die deel van deze cliënttoepassing uitmaken.

Naam besturingselement

Beschrijving

txtFirst

Specificeert de voornaam van de klant.

txtLast

Geeft de achternaam van de klant aan.

txtPhone

Specificeert het de telefoonaantal van de klant.

txtStreet

Specificeert de straatnaam van de klant.

txtState

Specificeert de staat van de klant.

txtZIP

Geeft de postcode van de klant aan.

txtCity

Geeft de plaats van de klant aan.

txtCustId

Hiermee geeft u de id-waarde van de klant op waartoe de nieuwe account behoort. Dit tekstvakje wordt bevolkt door de terugkeerwaarde van de verrichting createCustomer van de Dienst van de Klant.

Toewijzing van complexe AEM Forms-gegevenstypen

Sommige AEM Forms-bewerkingen vereisen complexe gegevenstypen als invoerwaarden. Deze complexe gegevenstypen definiëren de runtimewaarden die door de bewerking worden gebruikt. Voor de createCustomer-bewerking van de klantenservice is bijvoorbeeld een Customer-instantie vereist die runtimewaarden bevat die door de service worden vereist. Zonder het complexe type, werpt de dienst van de Klant een uitzondering en voert niet de verrichting uit.

Wanneer u een AEM Forms-service aanroept, maakt u ActionScript-objecten die zijn toegewezen aan de vereiste AEM Forms-complexe typen. Voor elk complex gegevenstype dat een bewerking vereist, maakt u een afzonderlijk ActionScript-object.

In de klasse ActionScript gebruikt u de metagegevenstag RemoteClass om het complexe AEM Forms-type toe te wijzen. Wanneer u bijvoorbeeld de createCustomer-bewerking van de klantenservice aanroept, maakt u een ActionScript-klasse die is toegewezen aan het gegevenstype com.adobe.livecycle.sample.customer.Customer.

De volgende ActionScript-klasse met de naam Klant laat zien hoe u het AEM Forms-gegevenstype com.adobe.livecycle.sample.customer.Customer kunt toewijzen.

 package customer

 {
     [RemoteClass(alias="com.adobe.livecycle.sample.customer.Customer")]
     public class Customer
     {
            public var name:String;
            public var street:String;
            public var city:String;
            public var state:String;
            public var phone:String;
            public var zip:int;
        }
 }

Het volledig gekwalificeerde gegevenstype van het complex type AEM Forms wordt toegewezen aan de alias-tag.

De velden van de klasse ActionScript komen overeen met de velden die bij het complexe type AEM Forms horen. De zes gebieden in de klasse van de ActionScript van de Klant worden gevestigd passen de gebieden aan die tot com.adobe.livecycle.sample.customer.Customer behoren.

OPMERKING

Een goede manier om de gebiedsnamen te bepalen die tot een complex type van Forms behoren is WSDL van de dienst in Webbrowser te bekijken. Een WSDL specificeert de complexe types van de dienst en de overeenkomstige gegevensleden. De volgende WSDL wordt gebruikt voor de klantenservice: https://[yourServer]:[yourPort]/soap/services/CustomerService?wsdl.

De klasse ActionScript van de Klant behoort tot een pakket genoemd klant. U wordt aangeraden alle ActionScript-klassen die zijn toegewezen aan complexe AEM Forms-gegevenstypen in hun eigen pakket te plaatsen. Maak een map in de bronmap van het Flex-project en plaats het ActionScript-bestand in de map, zoals in de volgende afbeelding wordt getoond.

iu_iu_customeras

Snel starten: Aangepaste service van de klant aanroepen met Verwijderen

Het volgende codevoorbeeld roept de dienst van de Klant aan en leidt tot een nieuwe klant. Wanneer u dit codevoorbeeld in werking stelt, zorg ervoor dat u alle tekstvakjes invult. Zorg er ook voor dat u het bestand Customer.as maakt dat is toegewezen aan com.adobe.livecycle.sample.customer.Customer.

OPMERKING

Voordat u deze snelle start kunt uitvoeren, moet u de aangepaste component Bank maken en implementeren.

 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application  layout="absolute" backgroundColor="#B1ABAB">

 <mx:Script>
            <![CDATA[

      import flash.net.FileReference;
      import flash.net.URLRequest;
      import flash.events.Event;
      import flash.events.DataEvent;
      import mx.messaging.ChannelSet;
      import mx.messaging.channels.AMFChannel;
      import mx.rpc.events.ResultEvent;
      import mx.collections.ArrayCollection;
      import mx.rpc.AsyncToken;
      import mx.managers.CursorManager;
      import mx.rpc.remoting.mxml.RemoteObject;


      // Custom class that corresponds to an input to the
      // AEM Forms encryption method
      import customer.Customer;

      // Classes used in file retrieval
      private var fileRef:FileReference = new FileReference();
      private var parentResourcePath:String = "/";
      private var serverPort:String = "hiro-xp:8080";
      private var now1:Date;
      private var fileName:String;

      // Prepares parameters for encryptPDFUsingPassword method call
      public function executeCreateCustomer():void
      {

        var cs:ChannelSet= new ChannelSet();
     cs.addChannel(new AMFChannel("remoting-amf", "https://" + serverPort + "/remoting/messagebroker/amf"));

     customerService.setCredentials("administrator", "password");
     customerService.channelSet = cs;

     //Create a Customer object required to invoke the Customer service's
     //createCustomer operation
     var myCust:Customer = new Customer();

     //Get values from the user of the Flex application
     var fullName:String = txtFirst.text +" "+txtLast.text ;
     var Phone:String = txtPhone.text;
     var Street:String = txtStreet.text;
     var State:String = txtState.text;
     var Zip:int = parseInt(txtZIP.text);
     var City:String = txtCity.text;

     //Populate Customer fields
     myCust.name = fullName;
     myCust.phone = Phone;
     myCust.street= Street;
     myCust.state= State;
     myCust.zip = Zip;
     myCust.city = City;

     //Invoke the Customer service's createCustomer operation
     var params:Object = new Object();
        params["inCustomer"]=myCust;
     var token:AsyncToken;
        token = customerService.createCustomer(params);
        token.name = name;
      }

      private function handleResult(event:ResultEvent):void
      {
          // Retrieve the information returned from the service invocation
          var token:AsyncToken = event.token;
          var res:Object = event.result;
          var custId:String = res["CustomerId"] as String;

          //Assign to the custId to the text box
          txtCustId.text = custId;
      }


      private function resultHandler(event:ResultEvent):void
      {

      }
            ]]>
 </mx:Script>
 <mx:RemoteObject id="customerService" destination="CustomerService" result="resultHandler(event);">
 <mx:method name="createCustomer" result="handleResult(event)"/>
 </mx:RemoteObject>


 <mx:Style source="../bank.css"/>
     <mx:Grid>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="New Customer" fontSize="16" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="First Name:" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtFirst"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:Button label="Create Customer" id="btnCreateCustomer" click="executeCreateCustomer()"/>
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="Last Name" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtLast"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="Phone" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtPhone"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="Street" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtStreet"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="State" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtState"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="ZIP" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtZIP"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                     <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="City" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtCity"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                             <mx:GridRow width="100%" height="100%">
                         <mx:GridItem width="100%" height="100%">
                             <mx:Label text="Customer Identifier" fontSize="12" fontWeight="bold"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                             <mx:TextInput styleName="textField" id="txtCustId" editable="false"/>
                         </mx:GridItem>
                         <mx:GridItem width="100%" height="100%">
                         </mx:GridItem>
                     </mx:GridRow>
                 </mx:Grid>
 </mx:Application>

Stijlblad

Deze snelle start bevat een stijlpagina met de naam* bank.css*. De volgende code vertegenwoordigt de stijlpagina die wordt gebruikt.

 /* CSS file */
 global
 {
          backgroundGradientAlphas: 1.0, 1.0;
          backgroundGradientColors: #525152,#525152;
          borderColor: #424444;
          verticalAlign: middle;
          color: #FFFFFF;
          font-size:12;
          font-weight:normal;
 }

 ApplicationControlBar
 {
          fillAlphas: 1.0, 1.0;
          fillColors: #393839, #393839;
 }

 .textField
 {
          backgroundColor: #393839;
          background-disabled-color: #636563;
 }


 .button
 {
          fillColors: #636563, #424242;
 }

 .dropdownMenu
 {
          backgroundColor: #DDDDDD;
          fillColors: #636563, #393839;
          alternatingItemColors: #888888, #999999;
 }

 .questionLabel
 {

 }

 ToolTip
 {
        backgroundColor: black;
        backgroundAlpha: 1.0;
        cornerRadius: 0;
        color: white;
 }

 DateChooser
 {
        cornerRadius: 0; /* pixels */
        headerColors: black, black;
        borderColor: black;
        themeColor: black;
        todayColor: red;
        todayStyleName: myTodayStyleName;
        headerStyleName: myHeaderStyleName;
        weekDayStyleName: myWeekDayStyleName;
        dropShadowEnabled: true;
 }

 .myTodayStyleName
 {
        color: white;
 }

 .myWeekDayStyleName
 {
        fontWeight: normal;
 }

 .myHeaderStyleName
 {
        color: red;
        fontSize: 16;
        fontWeight: bold;
 }

Zie ook

AEM Forms aanroepen met (Vervangen voor AEM formulieren) AEM Forms Remoting

Documenten verwerken met (Vervangen voor AEM formulieren) AEM Forms Remoting

Het AEM Forms Flex-bibliotheekbestand opnemen

Een kortstondig proces aanroepen door een onbeveiligd document door te geven met (Vervangen voor AEM formulieren) AEM Forms Remoting

Client-toepassingen verifiëren die zijn gemaakt met Flex

Beveiligde documenten doorgeven om processen aan te roepen met Verwijderen

Op deze pagina