Services Web

Prev Next

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 :

DocuWare Web Service Activity 1

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.

DocuWare Web Service

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 :

  1. 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 »

  2. 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 »

  3. 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.
WFDes_Webservice_3

pictemplate_small

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.

DocuWare Web Service Activity 5

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: empty

    Name (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 state

    RoleID (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: empty

    Name (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 :

Web service platform table example

Web service platform table example 2Web service platform table example 3