Cela semble fou tellement la documentation est bien faite sur MSDN, mais j’ai lu il y a peu qu’il y avait encore de anglophobes qui cherchaient à passer des arguments lors de l’instanciation d’un Workflow.
Dans un premier temps il faut bien saisir que seul le runtime de workflow peut instancier un workflow. Il ne faut donc pas imaginer faire des surcharges du constructeur, c’est inutile. Par contre le runtime de workflow peut initialiser de propriétés d’un workflow via la méthode CreateWorkflow.
Voici donc la méthode à suivre:
Ajouter une propriété au workflow (celle-ci ferra office d’argument ou paramètre, chacun son vocabulaire). Dans l’exemple un boolean du nom de Test
Vb
Public NotInheritable Class Workflow1 Inherits SequentialWorkflowActivity Private m_Test As Boolean Public Property Test() As Boolean Get Return m_Test End Get Set(ByVal value As Boolean) m_Test = value End Set End Property End Class
C#
public sealed partial class Workflow1 : SequentialWorkflowActivity { private Boolean m_Test; public Boolean Test { get { return m_Test; } set { m_Test = value; } } }
Ensuite on passe les arguments au worflow via la méthode CreateWorkflow du runtime de workflow (workflowRuntime dans mon exemple).
Vb
Dim test As New Dictionary(Of String, Object) test.Add("Test", True) Dim workflowInstance As WorkflowInstance = workflowRuntime.CreateWorkflow( _ GetType(Workflow1), _ test)
C#
Dictionary<String, Object> test = new Dictionary<string, object>(); test.Add("Test", true); WorkflowInstance instance = workflowRuntime.CreateWorkflow( typeof(_WorkflowConsoleApplication1.Workflow1), test);
Ensuite au sein du workflow il suffit d’utiliser la variable m_Test ;)
Voila, rien de bien compliqué!