הרבה זמן אני חושב איך הכי נכון לבנות Workflow Controller, עד שנפל לי האסימון. ברצוני לשתף אתכם ברעיון ולשמוע מה אתם חושבים.
הצורך ב- Page Navigation לא חדש ויש מספר דרכים לממש את זה. הבעיה שכל המימושים שנתקלתי בהם לא היו פשוטים ואפילו די מורכבים.
הפתרון:
לבנות WorkflowController שיש לו אקטיביטי מסוג Action ואקטיביטי מסוג ActionResult.
1. יוצרים את ה- WorkflowControllerבתקיה של ה-Controller.

כדי להגיע על ה-WorkflowController נעבוד עם ה- Routed URL.

2. ה- WF צריך להתחיל עם אקטיביתי של Action. ובאקטיביטי זה צריך להגדיר את ה-{Action} ( את URL ) שיתחיל את WF. זה דומא מאוד ל- ReceiveRequestרק במקום SOAP זה עובד על REST Http. אפשר גם להגדיר עם איזה IModelBinder רוצים לעבוד כדי למפות יותר טוב את בקשת ה-Http לטיפוסים מסוג דוט-נט. ה-Args זה ה-Input שמקבלים מבקשת ה-Http ושומרים אותו כמשתנה של ה-WF.

3. כאשר רוצים להחזיר תשובה, בדרך כלל View משתמשים באקטיביטי ActionResult ומצינים את שם ה-View. הנתונים שרוצים לעביר ל-View ואת סוג ה-View.

4. ע"פ דעתי צריך גם לבנות WorkFlow Helper@ שיכול לשלוף נתונים ולהציג אותם ב- View, כמו למשל כל התהליכים הפתוחים מוסג מסויים וכו'.
דוגמא:
ברצוני לבנות דוגמא של בקשת חופשה.
סיכום:
1. בדרך זו בנית ה-WF מאוד פשוטה וקל גם לבדוק אותו ע"י URL במקום SOAP.
2. ה-View לא צריך להיות מודע לזה שהוא עובד עם WF Controller ולא עם Controller רגיל.
3. ה-WF נכון לשימוש כאשר רוצים לתכנן תהליך שלוקח הרבה זמן. אנחנו גם נהנים מכל התשתיות שיש ל-WF, כמו למשל Tracing.
מה אתם חושבים?