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.
Avec la version 7.12 de DocuWare, vous pouvez également spécifier ici un document test, qui sera inclus dans la requête de test du service Web.
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 :
List of endpoints
Get total amount of documents in a file cabinet or document tray
Description: DialogId (optional): The identifier of the used search dialog.
FieldName (optional): The name of the field whose values are grouped and counted.Default: yes
Operation: countResult
Command: POST
Route/Path:
/DocuWare/Platform/FileCabinets/ {TrayId/FileCabinetId}/Query/CountExpression?dialogId={DialogId}&fieldName= {FieldName}
Search by dialog
Description: DialogId (optional): The identifier of the used search dialog.
Default: yes
Operation: dialogExpression
Command: POST
Route/Path:
/DocuWare/Platform/FileCabinets/ {TrayId/FileCabinetId}/Query/CountExpression?dialogId={DialogId}&fieldName= {FieldName}HTTP body (sample):
{ "Condition":[ {"DBName":"COMPANY", "Value":["Peter's Engineering"]},{"DBName":"CONTACT", "Value":["EMPTY()"]},{"DBName":"DocuWareFulltext", "Value":["Solar Panels"]}], "Operation":"And"}
Create a new database entry in a document tray or a file cabinet
Default: yes
Operation: documents
Command: POST
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Documents
HTTP body (sample):
{ "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" ] } } ] }
Get information of a document
Default: yes
Operation: document
Command: GET
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}
Delete a document
Default: yes
Operation: documentDelete
Command: DELETE
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}
Delete a section of a document
Description: The only section of a document is deleted it will automatically be converted to a database entry.
Default: yes
Operation: sectionDelete
Command: DELETE
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Sections/{SectionId}
Add a stamp or annotation
Description: Add stamp on best position.
Default: yes
Operation: documentAnnotations
Command: POST
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
HTTP-body (sample):
{ "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 } ] } } ] }
Add a stamp on fixed position
Operation: documentAnnotations
Command: POST
Route/Path: FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
HTTP body (sample):
{ "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 } ] } } ] }
Add text annotation
Operation: documentAnnotations
Command: POST
Route/Path: FileCabinets/{TrayId/FileCabinetId}/Documents/{DocId}/Annotation
HTTP body (sample):
{ "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 } ] } ] } ] } } ] }
Transfer a document
Description: Transfer document from a source file cabinet or document tray to the specified file cabinet or document tray
Content type has to be set to application/vnd.docuware.platform.documentstransferinfo+json
Default: yes
Operation: transfer
Command: POST
Route/Path: /FileCabinets/ {TrayId/FileCabinetId} /Task/Transfer
HTTP body (sample):
{ "SourceFileCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ { "Id": 123456, "Fields": null } ], "KeepSource": true, "FillIntellix": false,"UseDefaultDialog": true}
Replace a file of a document
Description: Replace the file of a document with the document within the workflow.
Default: yes
Operation: sectionData
Command: POST
Route/Path: /FileCabinets/{TrayId/FileCabinetId}/Sections?DocId={DocId}
Append a new file
Description: Append a the current document to another document in a file cabinet or document tray
Document can be appened in original format or as PDF without annotations or stamps.
If the target is a DB entry it will automatically be converted to a document.
Default: yes
Operation: sections
Command: POST
Route/Path:
/FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}
Merge layers
Description: Merge the annotation layers with the document. This will create new PDF and replace the old one.
Default: yes
Operation: processDocumentAction
Command: PUT
Route/Path:
/FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}HTTP body (sample):
{ "DocumentAction": "MergeAnnotations","DocumentActionParameters":{"$type":"MergeAnnotationsParameters","SectionNumber":0}}
Append a document
Description: DialogId (optional): The identifier of the used search dialog. FieldName (optional): The name of the field whose values are grouped and counted.
Operation: processDocumentAction
Command: PUT
Route/Path:
/FileCabinets/{TrayId/FileCabinetId}/Operations/ProcessDocumentAction?docId={DocId}HTTP body (sample):
{ "DocumentAction": "Append", "DocumentActionParameters": { "$type": "AppendActionParameters", "RemoveSourceDocuments": false, "DocumentsInFront": [ ], "DocumentsAtBack": [ { "SourceCabinetId": "ae156510-ffa8-48b1-a3ec-baec3180669c", "Documents": [ 123456 ] } ] } }
Create user
Description: Content type has to be set to application/vnd.docuware.platform.createorganizationuser+json
Default: yes
Operation: createUser
Command: POST
Route/Path: /Organization/UserInfo
HTTP body (sample):
{ "EMail": "firstname.lastname@domain.com", "Name": "MyUserName", "DBName": "MYUSERNA", "Password": "eLK%4s*Z", "NetworkID": "Domain\\MyUserName" }
Modify user properties
Default: yes
Operation: modifyUser
Command: PATCH
Route/Path: /Organization/UserInfo
Get all users of the organization
Default: yes
Operation: users
Command: GET
Route/Path: /Organization/Users?Active={true|false}&Name={UserName}
Get all users of a group
Description: GroupID (required): The identifier of the group.
Default: yes
Operation: usersByGroup
Command: GET
Route/Path: /Organization/GroupUsers?groupId={GroupId}
Get all users of a role
Description: RoleID (required): The identifier of the group.
IncludeGroupUsers (optional): Boolean - default: 'false'Default: yes
Operation: usersByRole
Command: GET
Route/Path:
/Organization/UserRoles?UserId={UserId}&Active={true|false}&Name={RoleName}&Type={Standard|Default|Administrator}
Get information of a user
Description: Gt the properties of a specific user such as active state or out of office state.
UserID (required):
The identifier of the user.
Default: yes
Operation: userById
Command: GET
Route/Path: /Organization/UserByID?userId={UserId}
Get all roles of a user
Description:
UserID (required): The identifier of the user.Active (optional): Boolean - default: empty
Name (optional): The name of the role
Type (optional): {Standard|Default|Administrator}
Default: yes
Operation: userRoles
Command: GET
Route/Path: /Organization/UserRoles?UserId={UserId}
Add a user to role
Description: UserID (required): The identifier of the user.
Default: yes
Operation: userRoles
Command: PUT
Route/Path: Organization/UserRoles?UserId={UserId}
HTTP body (sample):
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" }
Remove user from role
Description: UserID (required): The identifier of the user.
Operation: userRoles
Command: PUT
Route/Path: Organization/UserRoles?UserId={UserId}
HTTP body (sample):
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" }
Get all groups of a user
Description:
UserID (required): The identifier of the user.Active (optional): Boolean - default: empty
Name (optional): The name of the group
Default: yes
Operation: userGroups
Command: GET
Route/Path: /Organization/UserGroups?UserId={UserId}
Add a user to a group
Description: UserID (required): The identifier of the user.
Default: yes
Operation: userGroups
Command: PUT
Route/Path: /Organization/UserGroups?UserId={UserId}
HTTP body (sample):
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Add" }
Remove user from a group
Description: UserID (required): The identifier of the user.
Default: yes
Operation: userGroups
Command: PUT
Route/Path: /Organization/UserGroups?UserId={UserId}
HTTP body (sample):
{ "Ids": [ "2d89fc45-a3c4-49c6-971b-ebc696a67d78" ], "OperationType": "Remove" }
Get all roles from the organization
Description:
Active (optional): Boolean - default: emptyName (optional): The name of the role
Type (optional): {Standard|Default|Administrator}
Operation: roles
Command: GET
Route/Path: /Organization/Roles? Active={true|false}&Name={RoleName}&Type={Standard|Default|Administrator}
Get information of a role
Description:
Get the information of a role such as active stateRoleID (required): The identifier of the role.
Default: yes
Operation: role
Command: GET
Route/Path: /Organization/Role?roleId={RoleId}
Get all groups from the organization
Description:
Active (optional): Boolean - default: emptyName (optional): the name of the group
Default: yes
Operation: groups
Command: GET
Route/Path: /Organization/Groups?&Active={true|false}&Name={GroupName}
Get information of a group
Description:
Get the information of a group such as active state.GroupID (required): The identifier of the group.
Default: yes
Operation: group
Command: GET
Route/Path: /Organization/Group?groupId={GroupId}
Sample use case for setting a stamp with endpoint "documentAnnotations"
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 :