FIM Custom Activity – Guide de création (partie 1)

Quel que soit le projet FIM que vous êtes en train ou allez conduire, il est quasiment certain que vous aurez besoin de développer une ou plusieurs activités de Workflow personnalisées. Que ce soit pour palier un manque de fonctionnalité de FIM ou pour répondre à un cas particulier relatif à votre environnement, le développement que Microsoft annonçait comme terminé avec le provisioning déclaratif de FIM se mue souvent en un besoin de développement de ces fameuses Custom Activities !

Mais d’abord c’est quoi une Custom Activity ?

FIM Service permet de déclencher des actions sur des ressources du portail FIM sur la base de deux types de déclencheurs : une demande faite au web service FIM (création, modification, suppression ou lecture d’une ressource) ou bien sur le changement d’état d’appartenance à un ensemble FIM (les SET). Ces déclencheurs sont représentés dans le portail FIM par des règles de stratégie de gestion (les fameuses MPR) qui ne sont pas des régles d’octroi de droits (la case Accorde une autorisation est décochée). Ces règles peuvent faire appel à des Workflows constitués d’activités reparties dans trois grands types : Authentification, Autorisation et Action.

Plusieurs activités sont disponibles à l’installation du portail FIM (Activité de règles de synchronisation, Notification, Approbation, Activité de réinitialisation de mot de passe Active Directory, etc.). Comme tout est ressource dans le portail, il est possible d’ajouter ses propres activités. Pour cela il est nécessaire de sortir son bon vieux manuel de C#, d’installer Visual Studio 2010 (2008 suffit puisque .NET Framework 3.5 est nécessaire), de préparer un bon litre de café et de s’armer d’un bon tuto (j’espère que celui-ci vous satisfera).

Le principe

Pour commencer, parlons un peu principe.

Le besoin est de créer une dll contenant des classes héritées du contexte Microsoft.ResourceManagement.Workflow.Activities et Microsoft.ResourceManagement.WebServices.WSResourceManagement (tous deux disponible avec la dll Microsoft.ResourceManagement.dll fournie avec FIM Service). Dans cette dll on définit le comportement de l’activité et sa forme dans l’interface graphique du portail FIM. Puis la dll est signée et ajouté aux assemblies Windows afin de pouvoir être chargée par le service Forefront Identity Manager Service. Enfin, il reste à déclarer l’activité dans le portail FIM sous la forme d’une ressource de type Configuration des informations d’activité (ActivityInformationConfiguration).

Il est possible de créer un projet Visual Studio par activité, mais cela rends plus complexes la mise à jour de ces activités puisque l’on va multiplier les dll à mettre à jour. Il est plus raisonnable de mutualiser autant que possible les activités et au mieux de n’avoir qu’un seul projet contenant les activités personnalisées.

Créer son projet FIMCustomActivityLibrary

Commençons par ouvrir Visual Studio 2010 (ou 2008 c’est vous qui voyez), et créons un nouveau projet de type Workflow Activity Library en C# (oui parce que le VB c’est trop moche), appelons ce projet FIMCustomActivityLibrary avec comme .NET Framework la version 3.5

Ajout des références au projet

Ajoutons les références nécessaires à notre projet en choisissant dans le menu Project > Add references, on va alors chercher la dll Microsoft.ResourceManagement.dll qui se trouve dans le répertoire d’installation de FIM Service, soit sur ma maquette : D:\Program Files\Microsoft Forefront Identity Manager\2010\Service

Afin de configurer l’aspect graphique de notre activités il nous faut également ajoutés deux références supplémentaires : Microsoft.IdentityManagement.WebUI.Controls.dll et Microsoft.IdentityManagement.WFExtensionInterfaces.dll

Ces deux dll ne sont pas « visibles » naturellement et pour les ajouter comme référence à notre projet il va d’abord falloir les « débusquer ». Pour cela il suffit d’aller dans le répertoire d’installation de FIM Portal, sur ma maquette : D:\Program Files\Microsoft Forefront Identity Manager\2010\Portal

Là on y trouve un package nommé MicrosoftILMPortalCommonDlls.wsp que l’on va copier et renommer en MicrosoftILMPortalCommonDlls.cab afin de pouvoir en extraire nos dll

Un double clique sur le fichier d’archive cab nous permet de trouver nos deux vilaines dll qui se cachaient et de les extraire pour les ajouter ensuite en référence à notre projet

On ajoute alors nos deux dll en références comme précédement

Ajout des composantes à la boîte à outil de Visual Studio

Dans la Tool Box sur le côté gauche de l’écran, nous allons ajouter les éléments présents dans la dll de Microsoft.RessourceManagement.dll, pour cela on fait un clique droit puis on ajoute un nouvel onglet avec Add tab, on nome cet onglet FIM Workflow Activities puis on ajoute les éléments par un clic droit sur le nouvel onglet et en choisissant Chose Items…

Dans l’assistant, on sélectionne l’onglet System.Workflow Components, on spécifie la dll Microsoft.ResourceManagement.dll en cliquant sur le bouton Browse, puis on ajoute pour valeur de filtre Microsoft.RessourceManagement et on valide l’ajout avec OK

On obtient alors dans notre Tool Box les composantes des FIM Custom Activities (dont je parlerai en détail des activités disponibles dans un autre article dédié), pour l’instant on ne peut les voir que en affichant tout les composantes et ils sont grisées (nous n’avons pas encore créé d’activité qui puisse utiliser ces contrôles)

Déclarer son activité personalisée

Nous voila prêt pour déclarer les étapes de notre activité, je vous détaille ceci dan un deuxième article parce que je commence à avoir faim et que trop de lecture nuit à la concentration ;)

La suite maintenant disponible : FIM Custom Activity – Guide de création (partie 2)

 

Bonjour,

Je travail actuellement sur FIM, ton tutoriel est fort intéressant, as tu prévu d’écrire la suite ?

Cdt,

Arnaud.

Bonjour Arnaud,

La suite est en effet en cours d’écriture et devrait être vite en ligne
Je prévois également des tutos sur les fonctions du Framework FIM typiques tels que : comment lire une ressource, comment mettre à jour une ressource, etc.

Fabrice

Bonjour,

Merci pour la réactivité de ta réponse, et pour la confirmation de la suite du tuto.
Je suis en train de prendre en main FIM, et je recherche en effet des tutos sur l’écriture de workflow en C# pour de futures actions personnalisées (je n’ai pas encore définis lesquels, mais je sens que je vais en avoir besoin).
J’attends avec impatience la suite de tes tutos, bonne rédaction et bonne journée,

Arnaud.

Leave a Comment

*