2008-09-30

Enterprise library och workflows

Jag har testat att kombinera Enterprise Library 4.0 med workflows och det är naturligtvis inga större konstigheter till att börja med.

Då jag själv gillar AOP och ville använda policy injection blocket i enterprise library blev jag tvungen att låta mina affärsentiteter ärva från MarshalByRefObject (vet att det går att köra med ett interface också men det hör inte hit) samt skapa/wrappa dem genom PolicyInjection blocket för att få tillbaka den transparent proxy som motsvarar mitt objekt.



[ValidationCallHandler]
public void Deposit([RangeValidator(typeof(Decimal), "0.0",
RangeBoundaryType.Exclusive, "0.0",
RangeBoundaryType.Ignore)] decimal depositAmount)
{
balance += depositAmount;
}













Mitt typiska flöde/aktivitet har ofta en eller flera affärsentiteter kopplade till sig och dessa skall naturligtvis vara serialiseringsbara för att kunna persisteras (genom exempelvis SqlWorkflowPersistenceService )



Nu uppstår problemet.. tyvärr inte med alla objekt utan bara vissa och problemet verkar bero på att serialiseringen smäller vilket i sin tur innebär att flödet är helt trasigt. Hela problemet verkar ha med den transparent proxy som skapas vilket gör att problemets fokus ligger rakt i kärnan på hur funktionen är designad.



Lärdom, använd inte Policy injection för de entiteter som skall serialiseras med ditt workflow.



Resultatet blev att Enterprise Library åkte ut och PostSharp åkte in (utan några problem hittils och inga krav på att ärva från en viss klass eller köra någon wrappning)

Inga kommentarer: