We willen een applicatie gaan maken waarbij de gebruiker zelf workflows kan samenstellen op basis van een aantal voorgedefinieerde activities.
De designer van WF 4.0 kan worden gebruikt in de applicatie, nu willen we die designer gebruiken om de workflows te maken en omdat de gebruiker gegevens moet invoeren in de meeste activities zouden er vensters gekoppeld moeten worden aan de vensters.
Maar ik begin me serieus af te vragen of het wel de bedoeling is om vensters direct te koppelen aan activiteiten.
Dit is nu me Activity code:
Er zijn echter nog wat problemen, het is de bedoeling dat de workflow thread stopt in de Execute method totdat het bijbehorende venster is ingevuld alleen dat gebeurd niet. Het venster wordt getoond en daarna is de Execute method klaar en daarmee ook de activity.
Nog een ander probleem is dat output argumenten moeten worden gedefinieerd in de designer. In onze situatie willen we vaste output argumenten per activity hebben.
Is dit te realiseren met WF?
De designer van WF 4.0 kan worden gebruikt in de applicatie, nu willen we die designer gebruiken om de workflows te maken en omdat de gebruiker gegevens moet invoeren in de meeste activities zouden er vensters gekoppeld moeten worden aan de vensters.
Maar ik begin me serieus af te vragen of het wel de bedoeling is om vensters direct te koppelen aan activiteiten.
Dit is nu me Activity code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| public delegate void Start(object sender, EventArgs e); public class DefineAnimalCode : CodeActivity { public string Text { get; set; } private event Start _start; public DefineAnimalCode() { _start += ((object s, EventArgs e) => { Thread t = new Thread(new ThreadStart(OpenForm)); t.SetApartmentState(ApartmentState.STA); t.Start(); }); } [STAThread] private void OpenForm() { Dispatcher.CurrentDispatcher.Invoke(new Action(delegate() { DefineAnimalWindow w = new DefineAnimalWindow(); w.ShowDialog(); }), null); } protected override void Execute(CodeActivityContext context) { Debug.WriteLine("Start DefineAnimalCode.Execute"); _start(this, EventArgs.Empty); Debug.WriteLine("End DefineAnimalCode.Execute"); } } |
Er zijn echter nog wat problemen, het is de bedoeling dat de workflow thread stopt in de Execute method totdat het bijbehorende venster is ingevuld alleen dat gebeurd niet. Het venster wordt getoond en daarna is de Execute method klaar en daarmee ook de activity.
Nog een ander probleem is dat output argumenten moeten worden gedefinieerd in de designer. In onze situatie willen we vaste output argumenten per activity hebben.
Is dit te realiseren met WF?