Traitement d’un lot de données

Vous avez tranquillement mis en place votre application de création de fournisseurs, ou de clients, ou de produits ou tout autre “objet”… qui vous permet de gérer de manière unitaire une demande d’ajout et puis un(e) utilisateur(rice) arrive et vous dit :

hey le boss K2 ! elle est bien ton appli, mais moi, tous mes <remplacez ici par votre objet> sont enregistrés dans un fichier Excel, me dit pas que je vais devoir tout me retaper à la main ?!??

Bon, bien évidemment, le sujet du traitement par lot n’avait jamais été abordé pendant la phase de specs… mais dans ce cas, piqué dans votre orgueil, la seule réponse possible est :

c’est qui le boss !?! laisse-moi 30 minutes 1 heure et j’te fais ça !

Ce billet va donc, littéralement, vous sauver la vie, car nous allons vous montrer que vous ne vous êtes pas trop avancé, et que vous allez pouvoir vous faire un(e) nouvel(le) ami(e).

Les ingrédients nécessaires

Qu’est-ce qu’on fait maintenant ?

Il faut dans un 1er temps installer le custom broker Excel Import Service Broker. La documentation accompagnant le broker est très bien faîte, donc vous pouvez la suivre aveuglément. A la fin de l’installation, vous allez générer un smartobject (par défaut son nom est Excel Import Service), il s’agit du SmartObject d’exécution qui sera nécessaire lors du transfert d’informations d’Excel vers K2.

Une fois le service broker installé, il va falloir créer le smartobject dédié à recevoir les informations, celui-ci aura une structure que vous allez définir et dont voici les contraintes :

  • Ce smartobject devra avoir un ID et autant de propriétés que souhaité.
  • Les propriétés doivent avoir le même nom que les colonnes de la 1ère ligne de fichier Excel afin que le service broker puisse faire l’association (peu importe l’ordre et la totalité des colonnes n’est pas non plus nécessaire).
  • Il peut également y avoir des propriétés au niveau du SmO qui ne sont pas existantes dans Excel.
  • Il faudra également une propriété “Identifiant du batch” afin d’identifier les données provenant d’un même fichier Excel.

Dans mon exemple voici mon fichier Excel et le SmO BatchSAP_SmoFromExcel utilisé :

SmO correspondant au fichier Excel
SmO correspondant au fichier Excel

Ensuite, il ne reste plus qu’à mettre en place l’interface utilisateur qui va permettre de charger le fichier Excel, puis d’ajouter un bouton pour demander le transfert du contenu Excel dans le SmO et configurer la règle du bouton, pour cela il va falloir exécuter la règle Upload Excel Data to a SmartObject du smartobject Excel Import Service créé lors de l’installation du service broker.

Règle d'exécution de l'import de données vers K2
Règle d’exécution de l’import de données vers K2

Les options du service non utilisées dans cet exemple permettent :

  • Header Row Space Char Action : mettre Replace ou Remove, va permettre de faire un traitement lorsque le nom de colonne Excel contient un espacede façon à trouver la propriété équivalente dans le SmO. Par défaut, il va remplacer l’espace par un _.
  • Create Method Name : permet de spécifier le nom de la méthode d’ajout d’un élément dans le SmO si la méthode en question n’a pas le nom Create.

A présent, toutes les données Excel sont dans un smartobject. Il est donc possible de démarrer une instance de workflow par ligne du SmO ou de créer un workflow qui va faire un traitement de chacune des lignes une par une :

  • Dans le 1er cas, on déclenche un processus qui va déclencher un sous processus par ligne du smartobjet. Pour faire cela, on va s’appuyer sur la planificaton par jeton d’une activité, comme décrit dans l’article boucler sur un élément multivalué.
  • Dans le 2ème cas, au sein d’une activité du processus, on prend le 1er élément de la méthode GetList sur le smartobject BatchSAP_SmoFromExcel filtré par rapport aux données qui nous intéressent (à savoir : batch concerné et statut de l’élément de liste positionné à “non traité”), on réalise le traitement souhaité (qui inclut la mise à jour du statut sur la ligne) puis on boucle sur l’activité jusqu’à ce que tout les éléments soient traités.

Il est bien évidemment possible de rajouter pléthore de fonctionnalités supplémentaires, comme une interFace de suivi des traitements, un démarrage planifié du traitement, une gestion des erreurs par ligne ou globale etc…

Quelques exemples d’utilisation

Dans cette première application, dont les copies d’écran ci-dessus ont été tirées, l’idée est de récupérer des données sur des fournissuers provenant d’un fichier Excel pour les créer dans SAP. Le formulaire et le workflow ont été un peu complexifiés pour gérer les besoins suivants :

  • Possibilité de planifier l’intégration (cas de gros volumes de données qu’on ne ferait tourner que la nuit).
  • Gestion des erreurs ligne par ligne avec interface de suivi et possibilité de correction de la donnée avant réintégration.
  • Smartobjects utilisant le connecteur K2 pour SAP.

Dans cette seconde application, l’idée consiste à gérer le fichier Excel comme une source qui va déclencher autant de fois le processus de validation qu’il y a de lignes dans le fichier. Cela va donc simuler la soumission du formulaire de création client. Le besoin métier est le suivant : en tant que gestionnaire d’un compte entreprise pour une mutuelle, je souhaiterai affilier plusieurs salariés en même temps et non pas le faire un à un, chaque affiliation suit ensuite son propre processus de validation de manière indépendante des autres.

 N’hésitez pas à utiliser les commentaires si vous avez des questions.

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.

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.