Windows Workflow Foundation 4.0 Designer Rehosting med brugerdefinerede aktiviteter

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har flere WF 4.0-arbejdsgange, jeg har oprettet til et program, som mit firma udvikler. Nogle af disse arbejdsgange er enkle, og nogle er meget komplekse (dvs. mange trin, flere forskellige typer aktiviteter, brugerdefinerede aktiviteter). For mange af disse arbejdsgange har jeg oprettet flere brugerdefinerede kodeaktiviteter for at understøtte nogle interne procestyper.


Arbejdsprocesserne fungerer godt, og vi har haft meget få problemer med at bevare dem inden for VS 2010. Vi ønsker nu at flytte det ansvar ud til vores forretningsbrugere, så jeg har oprettet en WPF-ansøgning til at genopbygge WF-designeren (ifølge MS prøver). Mit problem er, at når jeg åbner en af ​​de arbejdsgange, der indeholder brugerdefinerede kodeaktiviteter, er disse aktiviteter repræsenteret som røde felter med fejlmeddelelsen 'Aktivitet kunne ikke indlæses på grund af fejl i XAML.'


Jeg har gjort forskning og har fundet flere indlæg, der nævner, at dette normalt er et problem med navngivning og referencer. Den rehosted designer er i et navneområde som ligner dette:


Company.Application.Workflow.Designer


Og de brugerdefinerede kodeaktiviteter er indeholdt i et separat brugerdefineret workflow-bibliotek, som jeg har medtaget som reference i designprojektet. Bibliotekets navneområde svarer til dette:


Company.Application.Workflow.Data.Activities


Som jeg har nævnt, er biblioteket angivet som reference i designerens projekt, og jeg ser det kopieres til outputen, når jeg bygger projektet. Jeg har også medtaget referencen i XAML i den primære design.


Hvad mangler jeg?

Bedste reference


Der kan være mange ting galt her. For en har du indstillet LocalAssembly, når du bruger XamlXmlReader? Se her for et eksempel. Et andet problem kan være, at dine aktiviteter indlæses fint, men de relaterede aktivitetsdesignere ikke findes. Du kan også bruge AppDomain.CurrentDomain.AssemblyResolve-begivenheden for at se, hvilke samlinger der indlæses og fejler. Eller endda bedre bruge Fuslogvw.exe til samme formål. [1] [2]