Dans nos applications K2, nous avons parfois besoin d’utiliser une Custom WorkList. Il y’a différente façon de créer une custom WorkList. Dans cette article, nous allons vous montrer comment le faire en utilisant l’API REST de K2. Cependant, nous n’allons pas nous attarder sur la présentation de l’API et la création des ses méthodes. Par contre, si Vous voulez savoir cela en détails, nous vous invitons à suivre l’article suivant À la découverte des API K2

Activer l’API REST du Workflow

Activiver l’API REST du Workflow en allant dans K2 Management : Integration -> APIs -> Workflow REST

Switcher le contrôle pour activer l’API Workflow, ensuite cliquer sur le bouton “Apply Changes”.  l’API est ainsi activé

Création des SmartObjects de L’API

La création des SmartObjects se fait depuis le Services Tester ou depuis K2 management. Là, nous allons d’abord créer un Service Instance nommé Workflow API à partir du Service Type REST.

Clique sur Register ServiceInstance

Choisir le Service Type, renseigner le lien vers le descripteur de l’API (ce champs est obligatoire) dans notre cas, il s’agit du lien https://k2.denallix.com/api/Workflow/preview/swagger/docs. Ensuite, cliquer sur Next.

Renseigner le nom du service ainsi que le nom d’affichage et cliquer sur Add. Vous pouvez voir les différents Objets crées

Création de la Custom WorkList

Dans cette partie, nous allons mettre en place notre Custom WorkList. Pour le faire, nous allons d’abord créer notre SmartObject Task sur lequel sera designé notre futur custom WorkList. En effet, ce SmartObject va utiliser la méthode GetTasks de l’API  qui retourne une chaine sérialisée qu’on va par la suite Désérialiser.
Après cela, on fera la jointure entre le SmartObject Task et le SmartObject Request (qui est le SmartObject Principal où se trouve les colonnes à afficher sur la Custom WorkList), en utilisant le Worklow ID.

1- Création du SmartObject Task

Aller dans le Designer, ensuite créer un nouveau SmartObject comme indiqué dans la figure

Glisser et déposer la méthode GetTasks de l’API

Cliquer sur Next, ensuite faire un Create All

On se rend compte qu’en sortie, la méthode GetTasks ne retourne pas les informations sur la tache sous forme de colonnes comme on aurai pensé mais plutôt un tableau de  chaine sérialisé de type TaskLite[ ]. C’est pourquoi, on va ajouté notre seconde méthode Deserialize Typed Array  qu’on prendra dans le SmartObject TaskLite de notre service instance Workflow API.

Cliquer sur Next,

Ajouter cette méthode en cliquant sur Add, naviguer pour choisir la méthode comme indiqué dans la figure et clique sur OK

Ensuite, cliquer sur Create All. On peut déjà constater au niveau de Return Property Name, les différentes colonnes affichant les informations sur la tâche

La méthode Deserialize Typed Array prend en entré un Serialzed Array. On va modifier son mapping, pour mettre la chaine serialisé que retourne la méthode GetTasks. Pour cela, double cliquer dessus et au niveau de Map to, choisir SmartObject Property, puis choisissez la propriété Tasks(TaskLite[]). 

Cliquer sur Ok puis sur Ok  pour terminer le mapping

On peut voir la méthode GetTasks et Deserialize Typed Array sont réunis. Ils constituent ce qu’on appelle une méthode chainé,

2- Configuration au niveau du SmartObject contenant les colonnes à afficher sur la Custom WorkList

Dans notre cas, il s’agit du SmartObject Request: il contient toutes les informations relatives à une demande lorsque son processus a démarré. Nous allons d’abord enregistrer le Workflow ID de chaque instance lorsqu’elle démarre dans ce SmartObject, ensuite nous allons créer une association avec le SmartObject Task.

Premièrement, dans le WorkFlow au tout début, sauvegarder le WorkFlow ID. Pour cela, il faudrait avoir une colonne dans la table Request pour l’enregistrer.

Déployer ensuite le Workflow.

Allez dans le Designer et édditez le SmartObject Request:

Cliquer sur l’onglet Associations -> Add

Naviguer pour sélectionner le SmartObject Task ->Next

Choisir l’association de type One to One comme indiqué dans la figure, et cliquer sur Next -> Selectionner le champs Req_WF_ID -> Assign

Rechercher le champs WorkflowInstanceID du SmartObject Task

NB: Il faudrait toujours se rassurer que ce champs contient effectivement le WorkflowInstance ID (vous pourrez faire une comparaison entre les valeurs de ce champs et celles du champs Req_WF_ID du SmartObject Request). Car si ce champs ne retourne pas le WorkflowInstance ID, le mapping ne marcherait pas.

Ok -> Finish -> Finish

3- Design de la Custom Worklist

Le moment est venu de designer la Custom WorkList. Pour cela, allez dans le Designer->Clique Droit sur le SmartObject Task ->  Entrer le nom de vue -> Cochez List View -> Call this method when the form loads -> CREATE

Create Labels and Controls -> Cochez tous les champs que vous voulez afficher sur votre WorkList -> Ok

A présent, Nous allons ajouter les colonnes supplémentaires (celles du SmartObject Request): Porter et ajouter sur la vue comme une nouvelle colonne, le champs WorkflowInstanceID.

Cliquer à droite, au niveau de SmartObject pour configurer

Au niveau de Display, choisir la colonne que vous voulez afficher -> Ok -> Ok 

Aller sous l’onglet Header et renommer la colonne, puis valider

Refaire de même pour toutes les colonnes du SmartObject Request que vous voulez afficher sur la Custom WorkList. Cependant, dans les configurations au niveau du Display Field vous choisissez la colonne en question.

Il reste une dernière chose à faire, il s’agit de filtrer la WorkList en fonction du nom de votre Workflow. Pour le faire, aller dans l’onglet Rules et ouvrer la rule “When the View executed initialize”

Cliquer sur configure de la methode GetTasks

Dans l’onglet Filter -> Add -> choisir le champs WorflowName -> entrer le nom complet de votre Workflow (Chemin d’accès\Nom Workflow)

Remarque: Pour avoir le WorkflowName, vous pouvez ajouter la colonne WorkflowName sur votre WorkList et l’exécuter

Finish -> Ok -> Finish ->Check-in 

Votre Custom WorkList est déjà opérationnel.

A présent, lancez des nouvelles instances et exécutez la Vue. Vous Obtiendrez quelques chose comme ceci

Nous avons encadrez en rouge les champs provenant de notre SmartObject Request.

C’est tout pour c’est article nous espérons que ça vous a plu 🙂 et à la prochaine  😉

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.