Associer un flux de travail par programmation

Généralement on crée des flux de travail génériques: on ne spécifie pas l’association entre le flux de travail et la liste. Parfois on déploie un flux de travail avant l’existence même de la liste. voile un exemple de scénario:
soit « FeautreSite » fonctionnalité de scope « Site« , et qui contient  le flux de travail.
« FeatureWeb » fonctionnalité de scope « Web » qui contient l’instance de la liste « List1« .
« SiteTemplate » est une définition de site qui contient la fonctionnalité « FeatureWeb« .
Lors de création d’un nouveau site  « SiteTemplate« , on doit ajouter l’association entre le flux de travail et la liste. Dans ce cas on doit créer ce code dans FeatureActivated de la classe FeatureWebFeatureEventReceiver.

SPWorkflowTemplate baseTemplateWF = web.WorkflowTemplates[« 261d83b2-01f5-4dec-9a68-fbd85f5aaf24« ];

//sous flux de travail-> Element.xml -> balise Workflow -> Id
SPWorkflowAssociation assocList = SPWorkflowAssociation.CreateListAssociation(baseTemplateWF, « Nom WF« , taskList, historyList);
//taskList: liste de tâche
//historyList: liste d’historique

assocList.AutoStartCreate = true; // auto démarrage chaque nouvel élément.

list.WorkflowAssociations.Add(assocList);

 

Publicités

Créer « Custom Action List » par programmation

Pour ajouter Custom Action à une liste
Ajouter -> nouvel élément ->élément vide

puis ajouter le code suivant dans la balise Element

<CustomAction Id= »CustomAction » Location= »CommandUI.Ribbon » RegistrationId= »0x0101″
RegistrationType= »ContentType »>
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition Location= »Ribbon.Documents.New.Controls._children »>
<Button Id= »CustomAction.TestButton »
Sequence= »0″
Image32by32= »/_layouts/images/mewa_rightb.gif »
Command= »TestCommmand »
LabelText= »Button de test »
TemplateAlias= »o1″
/>
</CommandUIDefinition>

</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command= »TestCommmand » EnabledScript= »javascript:return true; »
CommandAction= »javascript:alert(‘Button test’) »/>
</CommandUIHandlers>
</CommandUIExtension>
</CustomAction>

Ce code permet d’ajouter un bouton « Button de test » dans le groupe document de toutes les bibliothèques des documents(RegistrationId= »0x0101″). Par contre si on veut ajouter « CustomAction » uniquement sur une liste bien spécifique, on doit passer par la programmation: jusqu’à maintenant je ne trouve que cette solution.

SPPList list;//liste qu’on veut créer le customAction
SPUserCustomAction action = list.UserCustomActions.Add();
action.Title = titleAction;
action.Sequence = 20;
action.Location = « CommandUI.Ribbon« ;

action.CommandUIExtension=@ »

<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition Location= »Ribbon.Documents.New.Controls._children »>
<Button Id= »CustomAction.TestButton »
Sequence= »0″
Image32by32= »/_layouts/images/mewa_rightb.gif »
Command= »TestCommmand »
LabelText= »Button de test »
TemplateAlias= »o1″
/>
</CommandUIDefinition>

</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command= »TestCommmand » EnabledScript= »javascript:return true; »
CommandAction= »javascript:alert(‘Button test’) »/>
</CommandUIHandlers>
</CommandUIExtension> »

action.Update();
list.Update();