The K2 Birthday App

Un petit sujet léger pour cet été mais qui a le mérite d’aborder des sujets de configuration workflow qu’on n’utilise pas en permanence.

L’idée est d’implémenter une application K2 qui va souhaiter un bon anniversaire aux employés de son organisation, bien évidemment, le jour de leur anniversaire. L’application est très simple et vous pouvez la reproduire chez vous en quelques heures, mais comme on est sympa sur EnK2Besoin, n’hésitez pas à me contacter, je me ferai un plaisir de partager le .kprx avec vous (K2 Cloud update 8 ou 5.3).

L’application est composée de :

  • 2 workflow
  • 3 smartobjects
  • 3 vues
  • 1 formulaire

Je n’ai même pas pris la peine de créer des répertoires différents pour classer tout ça :

Structure de l’application

Les smartobjects, le formulaire et les vues éditables

Je ne vais présenter que les vues au sein de l’unique formulaire car elles manipulent toutes les propriétés des smartobjects. Ce formulaire est le formulaire exécuté par défaut suite au déploiement de l’application.

Il est dédié à la configuration de certains paramètres que nous allons passer en revue :

La configuration des administrateurs

On configure ici les administrateurs de l’application. Tant que cette liste est vide, tout le monde peut accéder au formulaire. Dès qu’au moins un administrateur a été ajouté, alors il n’y a plus que lui à pouvoir y accéder ; les autres utilisateurs sont alors redirigés vers une autre page.

Il n’y a pas grand chose de plus à indiquer ici, si ce n’est qu’on affiche les Label K2 utilisés pour les recherches d’utilisateurs (uniquement à des fins de vérification).

Le tableau des anniversaires

Il s’agit DU smartobject de l’application. Ici,on liste les utilisateurs auxquels on veut souhaiter un anniversaire. Les champs :

  • Identifiant de l’utilisateur (qui sert aussi d’identifiant pour le SmO).
  • Date de naissance.
  • Date d’arrivée dans l’organisation.
  • Dates de prochaine exécution pour chacune des dates précédentes.

Les dates d’exécution sont les champs utilisés par les workflow, et finalement, on pourrait se contenter uniquement de ce champs-là. Les dates d’arrivée et de naissance sont donc uniquement informatives et permettent d’éventuellement calculer une ancienneté.

Les paramètres de personnalisation de l’application

On retrouve ici un classique SmartObject de configuration avec les propriétés Libellé/Valeur (et on y ajoute une description – pour faciliter la compréhension ;)) :

  • AdminInBCC : liste d’adresses de personne qui recevront une notification avant la date d’anniversaire de chacun des utilisateurs (un petit rappel quoi).
  • BirthdayHTMLXXX : le corps HTML du mail envoyé à l’utilisateur le jour de son anniversaire, décomposé en 3 parties (début du corps HTML, Text, Fin – le workflow ajoutera le DisplayName de l’utilisateur juste avant le Text).
  • CompanyHTMLXXX : même principe mais pour l’anniversaire d’arrivée.
  • CompanyName : le nom de votre organisation, utilisé dans le sujet du mail.
  • DirectoryLabel : le label K2, utilisé pour les recherches d’utilisateurs dans les 2 vues précédentes.
  • ManagerInBCC : un booléen pour préciser, si au même titre que pour le parameter AdminInBCC, on souhaite que l’application prévienne le responsible de l’utilisateur.
  • Test : un booléen pour indiquer qu’on est en campagne de test, utilisé pour éviter d’avoir à attendre 24h entre le déclenchement du processus et la réception de l’email, ainsi que dans les sujets des mails.

Les workflow

Deux workflow sont utilisés. Le 1er permet de rechercher les utilisateurs dont c’est l’anniversaire, le second s’occupe d’envoyer le mail.

Le workflow de recherche d’anniversaires

Ce workflow sera paramétré pour s’exécuter une fois par jour.

Le “Create Reference” va s’appuyer sur le tableau des anniversaires pour constituer la liste de toutes les personnes dont l’anniversaire a lieu le lendemain. Ensuite, on boucle sur cette liste là et pour chaque élément on démarre le workflow suivant en passant en paramètre d’entrée le type d’anniversaire (organisation ou naissance) puis le FQN de l’utilisateur concerné.

Le workflow de notifications

Ce workflow commence par créer une référence sur l’objet utilisateur (utile pour récupérer le DisplayName et le Manager), puis une référence sur la ligne qui a déclenché la notification (utile pour mettre à jour la date de prochaine exécution).

Ensuite, on teste si des administrateurs et/ou le responsable de l’utilisateur doivent être prévenus (cf vue personnalisation de l’application). Si c’est le cas, on leur prepare un mail simple. Si non, on passe directement au Timer.

Le timer met le workflow en pause pendant 24h.

Ensuite le mail est envoyé à l’utilisateur en s’appuyant sur le code HTML des paramètres de personnalisation.

Enfin, Il ne reste plus qu’à calculer la date de prochaine exécution et à la mettre à jour.

La planification

En mode test, on pourra se contenter de démarrer manuellement le workflow Birthday-Schedule afin de vérifier son fonctionnement. En revanche, en production, pour avoir quelque chose de fonctionnel, il sera nécessaire de configurer une planification quotidienne du démarrage.

Configuration de la planification d’exécution

Exemple de mail reçu

Exemple de mail reçu

N’hésitez pas à demander le .kprx si vous souhaitez déployer cela pour votre équipe ou votre organisation.

Happy K2ing!

jean

Directeur technique de K2 France depuis 2006 et passionné par les technologies, je travaille dans le monde du BPM et des applications métier depuis... que je travaille :). Vous pouvez également me suivre sur twitter, linkedin.

2 thoughts to “The K2 Birthday App”

  1. Awesome post. I am a regular visitor of this blog and appreciate your team taking the time to maintain the excellent site. I visit this quite often (especially every Tuesday’s) but nowadays I do not see post been published regularly, wish to see more articles/tips from your team.

    Could you please .kprx (5.3) to my email id.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.