Cette activité vous permet d'intégrer des services Web REST ou SOAP dans votre workflow. Les services Web peuvent être utilisés pour échanger automatiquement des données entre systèmes ou pour créer, mettre à jour ou supprimer des informations dans d'autres applications via un workflow.
Inversement, vous pouvez utiliser des données provenant d'autres programmes dans vos workflows. Par exemple, connectez votre système de comptabilité financière ou votre système de gestion de la relation client à DocuWare.
Pour utiliser les services Web avec le Gestionnaire de workflow, vous devez d'abord les enregistrer dans la configuration DocuWare sous Services Web.
Le Services Web dans Workflow Designer vous fournissent une structure assistée avec un type de workflow pour créer l'appel au service Web. Les étapes les plus importantes sont illustrées ici en utilisant l'exemple d'un service Web REST.
1. Général
La première étape consiste à sélectionner le service web REST et à définir le format d'échange des données (JSON ou XML). Vous avez le choix entre les services qui ont été configurés au préalable dans la configuration DocuWare sous Services Web. Les autres informations requises varient en fonction du type de service web sélectionné.
Si votre service Web propose un fichier de spécification OpenAPI (*.json, *.txt, *.yml ou *.yaml), vous avez la possibilité de l'importer. Une fois l'importation effectuée, tous les points de terminaison disponibles sont répertoriés dans la liste déroulante :
2. Demande
Sélectionnez la méthode et créez la vue dans l'interface guidée, qui vous est ensuite présentée dans un aperçu en haut de page. Vous pouvez concevoir dynamiquement le chemin d'accès à l'URL, les paramètres de la requête et le contenu du corps du texte à l'aide de variables.
À la fin, testez la vue et vérifiez l'onglet « Réponse » pour voir si la vue a réussi. Vous devez indiquer une valeur de test pour chaque variable afin d'effectuer le test.
La validation du corps des requêtes HTTP se fait à l'aide d' Envoyer ou automatiquement lors de l'enregistrement de la configuration. Si le contenu n'est pas valide, la partie incorrecte est mise en évidence et un message s'affiche, mais la configuration peut toujours être enregistrée.
HTTP body
Dans l'onglet Corps HTTP, vous avez la possibilité d'attacher le document actuel à la requête HTTP vers un service web RESTful externe. Cela vous permet, par exemple, d'envoyer un document enregistré, tel qu'une facture, à un service externe de capture d'IA afin de capturer le document et d'affecter les informations capturées à des champs d'index ou à des variables globales.
Le document peut être exporté en tant que document original ou en tant que fichier PDF sans annotations. Si le document DocuWare contient plusieurs fichiers (coupés), tous les fichiers sont exportés et joints séparément. La requête HTTP contient alors plusieurs objets fichiers.
Validation du code HTTP
Trois options au choix pour le cryptage des requêtes HTTP :
Encoder les caractères spéciaux (recommandé) : tous les caractères spéciaux sont encodés, par exemple « AT&T » devient « AT%26T » et « Rapid Transport » devient « Rapid%20Transport »
Encoder les caractères spéciaux à l'exception des caractères URL réservés: ?#[]@!$&/*+,;='() À l'exception des caractères URL réservés, tous les caractères spéciaux sont encodés, par exemple « AT&T » reste, mais « Rapid Transport » devient « Rapid%20Transport »
Ne pas encoder les caractères spéciaux: ni les caractères spéciaux ni les espaces ne sont codés.
L'encodage est appliqué à toutes les valeurs dont le transfert est spécifié dans le champ Routage et Requêtes mais pas aux valeurs des onglets En-tête HTTP et Corps HTTP .
Configuration des points de terminaison
Si vous utilisez un fichier de spécification OpenAPI ou le service Web REST standard "DocuWare Platform API", configurez le point final sélectionné à l'étape précédente. Pour simplifier la configuration, tous les paramètres nécessaires sont automatiquement prédéfinis sur la base du point final sélectionné.
Spécialement pour l'API DocuWare Platform, définissez dans les sections Route et Queries les valeurs manquantes, par exemple l'archive ou le document auquel il faut accéder.
Dans la section HTTP Body, vous indiquez les informations et propriétés nécessaires à l'exécution de l'opération sélectionnée, par exemple le GUID du timbre à placer.
3. Attribution des données
Ici, affectez les valeurs de la variable de réponse ou des données d'index. Sélectionnez les valeurs requises dans le JSON ou le XML à partir d'une arborescence (voir ci-dessous).
De cette manière, vous pouvez extraire certaines informations de la réponse et les enregistrer pour une utilisation ultérieure dans votre workflow.
Si vous souhaitez traiter toutes les entrées retournées, remplacez manuellement l'index dans l'indexeur du tableau par un astérisque (*). Cela permet un traitement complet de toutes les entrées du tableau.
Service Web standard API de la Plate-forme DocuWare
Accédez à vos armoires et aux documents qu'elles contiennent via le service web standard intégré DocuWare Platform API.
Le tableau ci-dessous répertorie les points de terminaison disponibles pour le service web standard DocuWare Platform API.
Certains points de terminaison peuvent effectuer plusieurs opérations. Par exemple, l'opération "documentAnnotations" permet d'apposer un tampon à n'importe quelle position ou à une position fixe dans le document, ou d'insérer une annotation textuelle.
La colonne Defaut indique quel corps HTTP est automatiquement pré-rempli. Si vous souhaitez effectuer une autre opération, copiez le code JSON de la colonne HTTP Body et collez-le dans votre activité de service web.
Pour transmettre l'ID/GUID d'un utilisateur, il suffit d'écrire le nom de l'utilisateur dans une variable globale de type "User" et de transmettre cette variable dans la requête HTTP. Le système fournit automatiquement le GUID correspondant :
Defaut | Opération | Description | Commande | Route | Texte du corps HTTP (exemple) |
---|---|---|---|---|---|
oui | countResult | Obtenez le total des documents dans une armoire ou un bac DialogId (facultatif) : l'identifiant de la boîte de dialogue de recherche utilisée. FieldName (facultatif) : le nom du champ dont les valeurs sont groupées et comptées.. | GET | /DocuWare/Platform/FileCabinets/ {TrayId/FileCabinetId}/Query/CountExpression?dialogId={DialogId}&fieldName= {FieldName} | |
oui | dialogExpression | Recherche par dialogue DialogId : ID de la boîte de dialogue de recherche | POST | /FileCabinets/ {TrayId/FileCabinetId} /Query/DialogExpression?dialogID= {DialogId} | { "Condition":[ {"DBName":"COMPANY", "Value":["Peter's Engineering"]}, {"DBName":"CONTACT", "Value":["EMPTY()"]}, {"DBName":"DocuWareFulltext", "Value":["Solar Panels"]}], "Operation":"And"} |
oui | documents | Créer une nouvelle base de données dans un bac ou une armoire | POST | /FileCabinets/{TrayId/FileCabinetId}/Documents | { "Fields": [ { "FieldName": "COMPANY", "Item": "Peter's Engineering" }, { "FieldName": "CONTACT", "Item": "Peter Sanders" }, { "FieldName": "DOCUMENT_DATE", "Item": "2020-01-01" }, { "FieldName": "COST_CENTER", "Item": { "$type": "DocumentIndexFieldKeywords", "Keyword": [ "A", "B", "C" ] } } ] } |
oui | document | Obtenir des informations sur un document | GET | /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId} | |
oui | documentDelete | Supprimer un document | DELETE | /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId} | |
oui | section | Supprimer une section d'un document Si une section d'un document est supprimée, il sera automatiquement converti en entrée de base de données (entrée de base de données) | DELETE | /FileCabinets/{TrayId/FileCabinetId}/Sections/{SectionId} | |
oui | documentAnnotations | Ajouter un tampon ou une annotation Ajouter un tampon à la meilleure position.. | POST | /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation | { "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "StampPlacement", "StampId": "73d54f34-1b80-4b43-81ec-f0d31176d990", "Layer": 1, "Field": [ { "Name": "<#1>", "TypedValue": { "Item": "*Test007*" }, "Value": "Jenkins" }, { "Name": "<#2>", "TypedValue": { "Item": "*Test007*" }, "Value": "Approved" } ], "Password": null } ] } } ] } |
documentAnnotations | Ajouter un tampon à un endroit fixe | POST | /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation | { "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "StampPlacement", "Location": { "X": "100", "Y": "100" }, "StampId": "6ab67774-074d-4d93-99c5-5bc46262b84c", "Layer": 1, "Field": [ { "Name": "<#1>", "TypedValue": { "Item": "September" }, "Value": "Sep." } ], "Password": null } ] } } ] } | |
documentAnnotations | Ajouter une annotation texte | POST | /FileCabinets/{TrayId/FileCabinetId}}/Documents/{DocId}/Annotation | { "Annotations": [ { "PageNumber": 0, "SectionNumber": 0, "AnnotationsPlacement": { "Items": [ { "$type": "Annotation", "Layer": [ { "Id": "1", "Items": [ { "$type": "TextEntry", "Font": { "FontName": "Lucida Console", "Bold": true, "Italic": true, "Underlined": false, "StrikeThrough": false, "FontSize": 200, "Spacing": 0 }, "Value": "Test annotation", "Location": { "Left": 100, "Top": 100, "Width": 1500, "Height": 500 }, "Color": "Black", "Rotation": 0, "Transparent": false, "StrokeWidth": 50 } ] } ] } ] } } ] } | |
oui | transfer | Transférer un document Déplacer ou copier un document d'une archive ou d'une boîte aux lettres source vers l'archive ou la boîte aux lettres spécifiée. Le type de contenu doit être défini sur : application/vnd.docuware.platform.documentstransferinfo+json | POST | /FileCabinets/ {TrayId/FileCabinetId} /Task/Transfer | { "SourceFileCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ { "Id": 123456, "Fields": null } ], "KeepSource": true, "FillIntellix": false,"UseDefaultDialog": true} |
oui | sectionData | Remplacer le fichier d'un document Remplacer le fichier d'un document par le document dans le flux de travail. Ajouter un nouveau fichier Ajouter le document actuel à un autre document dans une armoire ou un bac à documents. Le document peut être annexé dans son format original ou au format PDF sans annotations ni timbres. Si la cible est une entrée de la base de données, elle sera automatiquement convertie en document. | POST | /FileCabinets/{TrayId/FileCabinetId}/Sections?DocId={DocId} | |
oui | sections | Remplacer le fichier d'un document Remplacer le fichier d'un document par le document dans le flux de travail. Ajouter un nouveau fichier Ajouter le document actuel à un autre document dans une armoire ou un bac à documents. Le document peut être annexé dans son format original ou au format PDF sans annotations ni timbres. Si la cible est une entrée de la base de données, elle sera automatiquement convertie en document. | POST | /FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId} | |
oui | processDocumentAction | Fusionner les couches Fusionner les couches d'annotation avec le document. Cela créera un nouveau PDF et remplacera l'ancien. | PUT | /FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId} | {"DocumentAction":"MergeAnnotations","DocumentActionParameters":{"$type":"MergeAnnotationsParameters","SectionNumber":0}} |
processDocumentAction | Ajouter un document Ajouter un document à un autre dans une armoire ou un bac Si la cible est une entrée de base de données, elle sera automatiquement convertie en document. | PUT | /FileCabinets/{TrayId/FileCabinetId}/ Operations/ProcessDocumentAction?docId={DocId} | { "DocumentAction": "Append", "DocumentActionParameters": { "$type": "AppendActionParameters", "RemoveSourceDocuments": false, "DocumentsInFront": [ ], "DocumentsAtBack": [ { "SourceCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ 123456 ] } ] } } | |
oui | createUser | Créer un nouvel utilisateur Le type de contenu doit être défini sur : application/vnd.docuware.platform.createorganizationuser+json | POST | /Organization/UserInfo | { "EMail": "firstname.lastname@domain.com", "Name": "MyUserName", "DBName": "MYUSERNA", "Password": "eLK%4s*Z", "NetworkID": "Domain\\MyUserName" } |
oui | modifyUser | Modifier les propriétés de l'utilisateur | PATCH | /Organization/UserInfo | |
oui | users | Obtenir tous les utilisateurs de l'organisation | GET | /Organization/Users | |
oui | usersByGroup | Obtenir tous les utilisateurs d'un groupe GroupID (requis) : l'identifiant du groupe | GET | /Organization/GroupUsers?groupId={GroupId} | |
oui | usersByRole | Get all users of a role RoleID (requis): L'identifiant du groupe. IncludeGroupUsers (facultatif): Boolean - default: 'false' IncludeGroupUsers (facultatif): Boolean - default: 'false' | GET | /Organization/UserRoles?UserId={UserId}&Active={true|false}&Name={RoleName}&Type={Standard|Default|Administrator} | |
oui | userById | Obtenir les informations d'un utilisateur Obtenir les propriétés d'un utilisateur spécifique, comme son état actif ou absent. UserID (requis) : l'identifiant de l'utilisateur | GET | /Organization/UserByID?userId={UserId} | |
oui | userRoles | Obtenir tous les rôles d'un utilisateur UserID (requis) : l'identifiant de l'utilisateur. | GET | /Organization/UserRoles?UserId={UserId} | |
oui | userRoles | Ajouter un utilisateur au rôle UserID (required): The identifier of the user. | PUT | /Organization/UserRoles?UserId={UserId} | { "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" } |
userRoles | Supprimer l'utilisateur du rôle UserID (requis) : l'identifiant de l'utilisateur | PUT | /Organization/UserRoles?UserId={UserId} | { "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" } | |
oui | userGroups | Obtenir tous les groupes d'un utilisateur UserID (requis) : l'identifiant de l'utilisateur | GET | /Organization/UserGroups?UserId={UserId} | |
oui | userGroups | Ajouter un utilisateur à un groupe UserID (requis) : l'identifiant de l'utilisateur | PUT | /Organization/UserGroups?UserId={UserId} | { "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" } |
userGroups | Supprimer l'utilisateur d'un groupe UserID (requis) : l'identifiant de l'utilisateur | PUT | /Organization/UserGroups?UserId={UserId} | { "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" } | |
oui | roles | Obtenir tous les rôles de l'organisation | GET | /Organization/Roles | |
oui | role | Obtenir les informations sur un rôle comme son état actif RoleID (requis) : l'identifiant du rôle | GET | /Organization/Role?roleId={RoleId} | |
oui | groups | Obtenir tous les groups de l'organisation | GET | /Organization/Groups | |
oui | group | Obtenir des informations sur un groupe Obtenir les informations sur un groupe, comme son état actif GroupID (requis) : l'identifiant du groupe.. | GET | /Organization/Group?groupId={GroupId} |
Voici un cas d'utilisation pour le point final "documentAnnotations" :
Après le traitement d'une facture dans le logiciel de comptabilité, vous souhaitez apposer automatiquement le cachet « Payé » sur la facture dans DocuWare. Pour ce faire, créez une tâche Autoindex qui modifie l'entrée d'index de la facture en « payé ».
La modification de l'entrée de l'index de la facture déclenche un workflow, dont l'activité de service Web appose automatiquement le cachet « Payé » sur la facture.
Notez que l'estampille "Payé" doit être configurée et attribuée à l'utilisateur spécifié pour le workflow afin d'exécuter des activités automatiques.
La configuration du point final "documentAnnotations" se présente comme suit :