Dans l’espace de travail AEM Forms, plusieurs types de formulaires sont pris en charge en toute simplicité. Ils comprennent :
- Formulaires PDF (XDP / Acroform / PDF aplatis)
- Nouveaux formulaires HTML
- Images
- Applications tierces (par exemple, Correspondence Management)
Les formulaires PDF sont rendus par la vue PdfTaskForm.
Lorsqu’un formulaire XDP est rendu au format PDF, un FormBridge JavaScript™ est ajouté par le service FormsAugmenter. Ce JavaScript™ (dans le formulaire PDF) permet d’effectuer des actions telles que l’envoi d’un formulaire, la sauvegarde d’un formulaire ou la mise hors ligne d’un formulaire.
Dans l’espace de travail AEM Forms, la vue PDFTaskForm communique avec le javascript FormBridge par le biais d’un fichier HTML intermédiaire présent dans /lc/libs/ws/libs/ws/pdf.html. Le flux est :
Vue PDFTaskForm - pdf.html
Communique via window.postMessage / window.attachEvent(’message’)
Cette méthode est la méthode standard de communication entre un cadre parent et un iframe. Les écouteurs d’événement existants issus de formulaires PDF précédemment ouverts sont supprimés avant d’en ajouter un nouveau. Cette purge tient également compte du passage de l’onglet Formulaire à l’onglet Historique et vice-versa dans la vue Détails de la tâche.
PDF.html - FormBridge javascript dans le PDF rendu
Communique via pdfObject.postMessage / pdfObject.messageHandler
Cette méthode est la méthode standard de communication avec un javascript PDF d’un HTML. La vue PdfTaskForm prend aussi en charge le PDF aplati et effectue le rendu clair.
Remarque :
Il n’est pas recommandé de modifier le pdf.html/contenu de la vue PdfTaskForm.
Les nouveaux formulaires HTML sont rendus par la vue NewHTMLTaskForm.
Lorsqu’un formulaire XDP est rendu en tant que HTML à l’aide du package Mobile Forms déployé sur CRX, il ajoute également un javascript FormBridge supplémentaire au formulaire, qui fournit différentes méthodes pour l’enregistrement et l’envoi des données de formulaire.
Ce javascript est différent de celui des formulaires PDF décris ci-dessus, mais son but est identique.
Remarque :
Il n’est pas recommandé de modifier le contenu de la vue NewHTMLTaskForm.
Les formulaires Flex sont rendus par SwfTaskForm et les guides sont rendus par les vues HtmlTaskForm respectivement.
Dans l’espace de travail AEM Forms, ces vues communiquent avec le SWF réel qui constitue le formulaire/guide flex en utilisant un fichier SWF intermédiaire présent dans /lc/libs/ws/libs/ws/WSNextAdapter.swf
La communication se fait par swfobject.postMessage / window.flexMessageHandler.
Ce protocole est défini par le WsNextAdapter.swf. Les flexMessageHandlers existants sur l’objet de la fenêtre, issus des formulaires SWF précédemment ouverts sont supprimés avant d’en ajouter un nouveau. La logique tient également compte du passage de l’onglet Formulaire à l’onglet Historique et vice-versa dans la vue Détails de la tâche. WsNextAdapter.swf est utilisé pour effectuer diverses actions de formulaire, comme la sauvegarde ou l’envoi.
Remarque :
il n’est pas recommandé de modifier WSNextAdapter.swf ou le contenu de la vue SwfTaskForm / HtmlTaskForm.
Les applications tierces sont rendues à l’aide de la vue ExtAppTaskForm.
Communication entre l’application tierce et l’espace de travail AEM Forms
L’espace de travail AEM Forms écoute sur window.global.postMessage([Message],[Payload])
[Message] peut être une chaîne spécifiée comme SubmitMessage | CancelMessage | ErrorMessage | actionEnabledMessage dans le runtimeMap. Les applications tierces doivent utiliser cette interface pour informer l’espace de travail AEM Forms selon les besoins. L’utilisation de cette interface est obligatoire, car l’espace de travail AEM Forms doit savoir lorsque la tâche est envoyée pour nettoyer la fenêtre de tâche.
Communication entre AEM Forms workspace et l’application tierce
Si des boutons d’action directe d’AEM Forms workspace sont visibles, il appelle la fenêtre.[External-App-Name].getMessage([Action]), où [Action] est lu à partir de routeActionMap. L’application tierce doit écouter sur cette interface, puis informer AEM Forms workspace via l’API postMessage ().
Par exemple, une application Flex peut définir ExternalInterface.addCallback('getMessage', listener) pour prendre en charge cette communication. Si l’application tierce souhaite gérer l’envoi de formulaire via ses propres boutons, vous devez spécifier hideDirectActions = true() dans le runtimeMap et vous pouvez ignorer cet écouteur. Par conséquent, cette syntaxe est facultative.
Pour plus d’informations sur l’interaction d’applications tierces, notamment Correspondence Management, voir Intégration de Correspondence Management dans l’espace de travail AEM Forms.