On se rend souvent compte que le contrôle worklist utilisé dans nos applications K2 ne nous offre pas toujours les fonctionnalités dont on a besoin 😡 . Par exemple on voudrait avoir des colonnes supplémentaires sur notre liste des tâches affichant de façon détaillée les informations liées à la tache ou la demande courante. De ce fait, le concept de Custom Worklist fait surface: on a parfois l’habitude de l’implémenter en utilisant le broker Workflow Management mais, dans cet article, vous trouverez comment le faire sans utiliser un custom broker 😎
Préparation du SMO de la table des colonnes à afficher
Ici, nous allons nous assurer que le SmartObject de la table contenant les colonnes à afficher sur la Worklist contient une clé unique de type numérique de préférence. Dans notre cas, il s’agit de la table Request. En effet, lorsqu’une demande est créée le worklfow est lancé et ses informations sont enregistrées dans cette table. Sa propriété unique est REQ_ID de type Integer et Autonumber.
Création de la Custom WorkList
Le Workspace de K2 nous offre le SMO GetClientWorkListItems nous allons utiliser sa méthode List pour obtenir la liste des taches, nous allons ajouter ensuite la méthode GetList de notre SMO Request, et enfin, les liées pour formées une sorte de méthode composite.
1- Création d’un nouveau SMO
Aller dans le designer et créer un nouveau SmartObject nommé le CustomWorkList. Choisissez advanced SmartObject et cliquez sur Create
Aller dans Methods et choisissez la methode List du SMO GetClientWorkListItems puis, Next
Cliquer ensuite sur Next puis sur Create All
Dans l’onglet ServiceObject Methods qui s’affiche, c’est le moment d’ajouter la méthode GetList de notre SMO Request:
Faites un Add et naviguer au niveau des trois points pour chercher la méthode en question puis cliquer sur OK
Cliquer sur Create All puis OK
Le moment est venu de configurer le lien entre les deux méthodes pour cela, continuer en cliquant sur Next
- Choisissez en 1 la méthode GetClientWorklistItems
- En 2 choisissez le type de jointure: c’est comme en SQL pour en savoir plus sur les jointures cliquez ici . Dans notre cas prendre l’Inner Join
- En 3 choisissez la méthode GetList de notre SMO Request
- En 4 il est question de mapper la propriété ProcessInstanceFolio de la methode GetClientWorklistItems() avec la Propriété REQ_ID de notre SMO Request: Cliquer dessus et choisir Assign ensuite, sélectionner REQ_ID. Puis Ok , Finish
- Enfin Finish pour terminer la création du SMO
NB: Pour faire ce mapping il faut choisir de part et d’autres des methodes, la propriété qui est unique et qui aura la même valeur c’est pourquoi nous avons pris la propriété Folio qu’on va ensuite l’adapter pour qu’ à chaque fois elle contient le REQ_ID (Voir la partie suivante)
2- Modification au niveau du Workflow
Ici nous allons juste modifier la valeur du folio pour qu’il contient le RED_ID. Pour cela :
- Ouvrez votre Workflow (celui donc les taches s’afficheront sur la Custom Worklist)
- Ajouter au tout début une activité nommée Set Folio. Si elle existe déjà pas de souci on va juste la modifier
- Ouvrez cette activité et au niveau de la valeur du folio, mettre le REQ_ID
RQ: Nous avons pris directement DF_ReqID car au démarrage du workflow le REQ_ID est envoyé dans cette variable
NB: Si vous avez plusieurs activités Set Folio dans votre workflow, il faut faire de même sur toutes ces activités
3- Design de la vue Custom WorkList
- Faire un clic droit sur le SMO CustomWorkList et choisir Design View
- Entrer le nom, choisir List View
- Cocher l’option “Call this method When the View loads” (par défaut c’est coché)
- Cliquer sur Create
- Cliquer sur Create Labels and Controls
- Cocher toutes les colonnes que vous voulez afficher sur votre WorkList puis, OK
- Bien renommer les colonnes et cliquer sur Finish
Test de la Custom Worklist
Pour tester, nous avons dans notre cas créé un petite vue pour lancer notre Workflow (celle du bas). Nous avons ensuite intégré cette vue ainsi que la Custom WorkList à un formulaire de test.
NB: Lorsqu’on clique sur le bouton Create, ça lance le Workflow. Au niveau des règles, ne pas oublier d’envoyer le REQ_ID comme dans cette image
Vous pouvez à présent créer vos taches et voir comment elles sont affichées dans la Custom WorkList
A plus 😉
Bonjour,
Merci pour le partage, avec cette liste nous plus d’information sur la tache, par contre est ce qu’il y’a un moyen de prendre une décision via cette liste ? (sachant que je suis débutant dans le développement avec K2)
Cordialement
Bonjour,
Tu voudrais dire prendre un décision comme sur une WorkList classique je suppose, impeu comme l’illustre cette image avec les actions Approve et Reject
Bien avec cette custom Worklist on ne pourrait pas avoir des actions sous cette forme, mais néanmoins il est possible de prendre une décision en fabriquant nos propres actions, Il suffit d’ajouter une colonne sur la Worklist 🙂 . Par exemple, pour la décision Approve il faudra mettre un Data Label et le nommer Approve. Ensuite, tu ajouteras un bouton sur la vue, tu le marqueras invisible. Là, tu pourras configurer tes rules derrière ce bouton (When Click -> for selected row-> action Worklist(SN, Action Name)). Puis, tu mettras un Script Js sur ton DL pour le rendre cliquable et déclencher l’événement du bouton caché.