A SharePoint Designer workflow tervezőjével sok feladatot könnyen megoldhatunk, bonyolultabb esetekben azonban hamar kifuthatunk a funkciókból. Szerencsére a lista bővíthető, be lehet varrni saját activity-t az eszközbe.
Ehhez csak a következőket kell tennünk:
1. Készítsük el a szokásos módon a saját activity komponensünket egy Activity Library típusú projektben.
2. Lássuk el a szerelvényt erős névvel és telepítsük a központi szerelvénytárba (GAC).
3. Keressük meg a 12\TEMPLATE\1033\Workflow\WSS.ACTIONS fájlt, készítünk róla másolatot akármi.ACTIONS néven (a kiterjesztés fontos) ugyanabba a mappába és egy Action elemben írjuk le az activity-nket. Például egy mappa másolását elvégző saját FolderCopyActivity így írható le:
<?xml version="1.0" encoding="utf-8"?>
<WorkflowInfo>
<Actions Sequential="then" Parallel="and">
<Action Name="Mappa másolása"
ClassName="MyActivityLib.FolderCopyActivity"
Assembly="MyActivityLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e1b2225a7cb586c4"
Category="Saját"
AppliesTo="all">
<RuleDesigner Sentence="A %1 mappa másolása a %2 mappába">
<FieldBind Field="SourceFolder" Text="forrás" DesignerType="TextArea" Id="1" />
<FieldBind Field="TargetFolder" Text="cél" DesignerType="TextArea" Id="2" />
</RuleDesigner>
<Parameters>
<Parameter Name="SourceFolder" Type="System.String, mscorlib" Direction="In" />
<Parameter Name="TargetFolder" Type="System.String, mscorlib" Direction="In" />
</Parameters>
</Action>
</Actions>
</WorkflowInfo>
Érdemes megfigyelni, hogy a Sentence attribútumban egy értelmes mondatot kell megadnunk, ami meg fog jelenni a felhasználói felületen. A % jellel jelölt paraméterek megjelenését a FieldBind elemekben tudjuk részletezni és a Parameters elemben tudjuk azokat az Activity osztály dependency property-jeihez kapcsolni. Célszerű odafigyelni a DesignerType attribútumra, hogy olyat válasszunk, ami később megkönnyíti a paraméter beállítását. A lehetséges értékek listája az MSDN oldalain megtekinthető, ahogy az ACTIONS fájl teljes sémája is.
4. A webalkalmazásunkhoz tartozó web.config fájlban regisztráljuk a típust authorizedType-ként. Ez lényegében olyan, mint a SafeControl szekció, csak éppen a System.Workflow.ComponentModel.WorkflowCompiler elemben található:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<!-- ... -->
<System.Workflow.ComponentModel.WorkflowCompiler>
<authorizedTypes>
<!-- ... -->
<authorizedType
Assembly="MyActivityLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e1b2225a7cb586c4"
Namespace="MyActivityLib"
TypeName="*"
Authorized="True" />
</authorizedTypes>
</System.Workflow.ComponentModel.WorkflowCompiler>
</configuration>
5. Nyissunk rá a webhelyre SharePoint Designerben és frissítsük a nézetet, aminek hatására az eszköz letölti a szerverről az ACTIONS fájlt és meg fog jelenni az új activity-nk workflow tervezése közben.