40+ SharePoint Workflow Tips – part 2 (Hebrew)

לחץ כאן לחלק 1 –טיפים ליישום ללא קוד
לחץ כאן לחלק 2 –עוד טיפים ליישום ללא קוד
לחץ כאן לחלק 3 – אפילו עוד טיפים ליישום ללא קוד
לחץ כאן לחלק 4 – טיפים לפיתוח באמצעות קוד

 

10. clip_image008_thumb[1] טיפ מספר 10: תן למעצבי התהליך ב-VISIO סביבת עבודה

אם קיימים באירגון אנליסטים/מעצבים/מיישמים שמעצבים את מודל זרימת עבודה ב-VISIO, למודל עשויות להיות גירסאות רבות, כמה עורכים במקביל ודיונים – מה יותר מתאים מלשמור את מודל זרימת העבודה כמסמך באתר SHAREPOINT ואפילו ליצור סביבת עבודה למסמך (Document Workspace)? באופן זה תהנה מכל יכולות ה-COLLABORATION של ניהול מסמכים בעיצוב זרימת העבודה. מעבר לזה, כל המשתתפים בעיצוב התהליך יוכלו לראות את זרימת העבודה ללא צורך בתוכנה על המחשב ישירות מתוך הדפדפן. בנוסף, כאשר מעצב תהליך יסיים, אפשר להגדיר שגורם בכיר יאשר לו את זרימת העבודה (WF ש ירוץ על המסמך).

clip_image004_thumb[1]

סביבת עבודה לקובץ עם מודל זרימת עבודה ב-VISIO

clip_image006_thumb[1]

צפיה במודל מתוך הדפדפן, כל המשתתפים יכולים לצפות בגירסאות השונות ללא צורך בתוכנה מקומית

 

11. clip_image003 טיפ מספר 11: שמירת טיוטא של מסמך/טופס ובחירה מתי להתחיל סבב אישורים

אנו נרצה לאפשר למשתמש שלנו שרוצה למלא טופס או מסמך (למשל בקשת חופשה) לבצע שמירה מבלי להתחיל סבב אישורים. למה? כי לפעמים לוקח יומיים או שבוע למלא בקשה ובטרם הבקשה מוכנה לא נרצה להתחיל בסבב אישורים. כשהבקשה תהיה מוכנה המשתמש ילחץ על כפתור מתוך הטופס להתחיל סבב אישורים. באופן טבעי דרישה כזו נפתרת על ידי ‘הפעלה ידנית של זרימת עבודה’ (כלומר לא להגדיר שזרימת עבודה תחל בעת שמירה של פריט אלא רק בהפעלה ידנית) אך זה דורש להוציא את המשתמש מהחוויה של הטופס וללמוד להפעיל זרימת עבודה במערכת SHAREPOINT. רוב הלקוחות לא יאהבו את זה. אז מה עושים? (1) מגדירים ברשימה שדה בשם IsDraft שאומר האם הטופס במצב טיוטא, בהתחלה ערכו של השדה חיובי (2) נגדיר שזרימת העבודה מתחילה בעת שמירה של פריט (כלומר מתחילה מייד כשנוסף פריט חדש). באופן זה כאשר המשתמש שומר טיוטא התהליך כבר התחיל (3) בתוך התהליך בהתחלה נאזין לערך השדה IsDraft ולא נתקדם קדימה עד שערכו ישתנה לערך שלילי. באופן זה ניתן למשתמש להתחיל את סבב האישורים כשנוח לו מבלי לצאת מהטופס.

 

12. clip_image004 טיפ מספר 12: איך חוזרים אחורה בתהליך

כמעט ואין פרוייקט שבו הלקוח לא ביקש ממני חזרה לאחור בתהליך. זוהי דרישה טבעית מצד הלקוח, אם לדוגמא בסבב אישורים מנהל 3 אינו מרוצה מהתשובה של מנהל 2 הוא רוצה להחזיר אליו את הבקשה ולבקש תיקונים. לעתים מנהל 3 ירצה להחזיר למנהל 1 או אפילו ליוזם. באופן טבעי זרימת עבודה ב-SPD אינה יכולה לחזור לאחור אבל הנה טריק שיבוא לעזרך: יצירת זרימות עבודה מרובות על אותו הפריט. באפשרותך להגדיר בזרימת עבודה שבכל פעם שגורם מסוים, למשל מנהל 3, מבקש תיקונים מגורם אחר, למשל מנהל 1, זרימת העבודה תפסיק ותסמן בעמודה מסוימת שיש בקשה לתיקונים. כל השלבים בזרימת העבודה צריכים לדעת לא להתבצע כאשר יש בקשה לתיקונים, לדוגמא אם יש מנהל 4 ומנהל 5 נשים תנאי לפני הכניסה לשלב ונבדוק שהמנהלים הקודמים לא ביקשו תיקונים. ככה תסתיים לה זרימת העבודה. כעת, בכל פעם שזרימת עבודה תסתיים נגדיר שאם היתה בקשה לתיקונים (סימנו בעמודה, זוכרים?) נתחיל זרימת עבודה חדשה מאותו סוג. כעת תתחיל על אותו פריט זרימה חדשה שתצטרך להגיע לגורם ממנו ביקשו תיקונים ולהקצות לו משימה. למשל אם מנהל 3 ביקש תיקונים ממנהל 2 – זרימת העבודה תפסק, תתחיל זרימה חדשה מאותו הסוג שפשוט תבצע את אותו הדבר ותקצה את המשימה הרגילה למנהל מספר 2. אולם עלינו להוסיף לוגיקה בתהליך לזהות שמדובר בזרימת עבודה חוזרת (כלומר שמישהו ביקש נתונים) ולדלג על מנהל מספר 1′ בתהליך.

את כל זאת תוכל לבצע באמצעות SPD, הדבר היחיד שמצריך קוד הוא היכולת לזהות שזרימת עבודה הסתיימה עם ערך מסוים בעמודה (מישהו ביקש תיקונים) ולהתחיל זרימת עבודה חדשה מאותו סוג. כלומר דרוש רכיב שמאזין לסיום של זרימות עבודה (SPWorkflowEventReceiver) ושידע להתחיל זרימות עבודה על פריטים לפי תנאי. בקרוב אפרסם בבלוג שלי דוגמא לקוד כזה.

13. clip_image005 טיפ מספר 13: השתמש תמיד בREUSABLE WORKFLOW

בזרימות עבודה הקשורות לרשימה/ספריה, השתמש תמיד ב-REUSABLE WORKFLOW ולא בזרימת עבודה המוצמדת ישירות לרשימה, גם אם אין לך כוונה להעביר את זרימת העבודה. ברוב המקרים תפתח על סביבת פיתוח ואז תצטרך להעביר את זרימת העבודה לסביבת בדיקות ולאחר מכן לייצור, REUSABLE WORKFLOW מאפשר ליצור חבילת התקנה WSP בקלות, אך גם אם אתה מפתח ישירות על הייצור –REUSABLE WORKFLOW מאפשר לגבות בקלות את זרימת העבודה ובמקרים של תקלות להעביר אותה לרשימה אחרת לצורכי בדיקה. גמישות יכולה רק לעזור.

14. clip_image005[1] טיפ מספר 14: איך תפעיל זרימת עבודה כללית באתר (Site Workflow) לפי SCHEDULE?

לעתים אנו צריכים ליצור לבצע משימות כלליות באתר כל יום/שבוע/חודש. לדוגמא, אנו צריכים לייצר דו”ח ולשלוח למנהל באמייל, או ליצור פגישה ברשימה כל שבוע, או לשלוח תיזכורת למשתמשים כל יום. היות ופעולות אילו אינן מבוצעות על רשימה ספציפית נצטרך להשתמש ב-SITE WORKFLOW. אך למרבה הצער וההפתעה – SharePoint 2010 אינו כולל מנגנון שיריץ זרימות עבודה של אתר לפי לוח זמנים. לכן נצטרך לכתוב TIMER JOB משלנו שיריץ את זרימת העבודה במועדים קבועים או לחלופין להשתמש בפיתרון החינמי והחיוני הזה מ-CODEPLEX מאפשר לקבוע בממשק נוח מועדים להרצת SITE WORKLOW.

15. clip_image007 טיפ מספר 15: SHAREPOINT אינו תומך במכונת מצבים, אבל לא הכל אבוד

בקשה לא נדירה של לקוחות היא לזרימת עבודה מבוססת מכונת מצבים – זרימה שהיא כמו “פינג-פונג” בין אנשים, מנהל א’ יכול להעביר למנהל ב’ שיכול להחזיר למנהל א’ שיכול להעביר למנהל ג’ וככה בלי הגבלה. התהליך יסתיים רק כאשר מציינים מפורשות בתנאי מסוים שהתהליך צריך להסתיים (בניגוד לזרימת עבודה סידרתית שבה כשאין יותר פעילויות התהליך פשוט מסתיים). לא ניתן ליצור מכונת מצבים עם SPD אבל בכל זאת יש כמה דברים שתוכל לעשות: (1) ישנה זרימת עבודה מובנית הכוללת מכונת מצבים של 3 גורמים. אם הלקוח רוצה זרימה שבה 3 גורמים מעבירים בינהם את ה”כדור” – אפשרות זו עשויה להתאים. (2) אפשר לדמות עם SPD מכונת מצבים באמצעות WF רגיל (סידרתי), בקישור הזה אפשר למצוא מידע נוסף אולם טכניקה זו מתאימה למכונת מצבים שאינה מורכבת או גדולה מדי (3) אם בכל זאת אתה צריך מכונת מצבים גדולה ומורכבת – זה הזמן לפתח או לשכור מישהו שיעשה זאת ב-VISUAL STUDIO.

16. clip_image008 טיפ מספר 16: שים לב לUserDefinedWorkflowMaximumComplexity

מתוך SPD, כאשר מנסים לעשות PUBLISH לזרימת עבודה יתכן שתקבל הודעת שגיאה האומרת שלא ניתן לפרסם את זרימת העבודה:

“SharePoint Designer 2010 Errors were found when compiling the workflow. The workflow files were saved but cannot be run. Unexpected error on server associating the workflow.”

. הודעה זו אומרת שכמות המשתנים המעורבים בזרימת העבודה וה-ACTIONS שבתוכה עולה על המקסימום המותר (7000 לפי ברירת המחדל). ניתן לשנות מאפיין זה (החל מ-SP1 של SharePoint 2010) ולהגדיל את הכמות. אך אם הפיתרון שלך הולך לענן (אופיס 365) לא תוכל לשנות ערך זה. אז מה עושים? בד”כ מגיעים לכמות גדולה כל כך של משתנים בשימוש ב- Start Approval Process ו-Start Feedback Process (כל אחד מהם כולל 1176 משתנים) ולכן מומלץ להשתמש ב- Custom Task Proces.

 

17. clip_image004[1] טיפ מספר 17: כתוב ACTION במקום לכתוב את כל זרימת העבודה בVISUAL STUDIO

לעתים אנו מתבקשים לבצע באמצע זרימת עבודה דבר שלא קיים ב-SPD. לדוגמא, להוסיף פגישה ליומן ב-EXCHANGE או להעביר הודעה למערכת חיצונית דרך ESB כלשהו דוגמת BIZ TALK. טעות יקרה היא לפתח את זרימת העבודה ב-Visual Studio. זרימות עבודה עם קוד הן מורכבות עשרות מונים מזרימות עבודה ב-SPD, הן דורשות כוח אדם יקר הרבה יותר וגרוע מכל: הליך השידרוג של גירסאות ארוך, יקר ומסובך. במקרים בהם נחוצה רק פעולה (ACTION) שחסרה ב-SPD – מומלץ לפתח רק את ה-ACTION שחסר. במקרה כזה המשך השליטה בפיתוח יהיה של המיישמים, זרימת העבודה תמשיך להיות קלה לשינוי ושידרוג. ישנם מקרים בהם אין ברירה או אפילו רצוי לפתח זרימת עבודה בקוד, איך תזהה את המקרים הללו בהם אנו חייבים לפתח את כל זרימת העבודה בקוד? (1) נדרשים לפתח מבנה של זרימת עבודה שכולל לולאות או STATE MACHINE או כל דבר שסותר את מבנה היסוד הסידרתי של SPD. ישנה דרך לפתח הדמיה של לולאות ו-STATE MACHINE עם SPD אך הדבר מומלץ רק במקרים פשוטים. (2) כאשר אנו נדרשים לתמוך בסיבוכיות עסקית גדולה מאוד ויש לנו פעולות רבות בזרימת העבודה שהן מסובכות כמו למשל טבלת ניתוב דינמית של משימות שיוצרת משימות לגורמים לפי אוסף רב של חוקים ותנאים (3) כאשר יש לנו צוות מתכנתים איכותי זמין ובקיא בפיתוח זרימות עבודה. לסיכום: כל עוד אפשר, רצוי להמנע מפיתוח זרימות עבודה בקוד.

18. clip_image009 טיפ מספר 18: השתמש ב-Association Form, Initiation Form ו-Modification Form

תן למשתמש ולמנהל המערכת גמישות, הוצא הגדרות שונות לטפסי השיוך והאיתחול של זרימת העבודה. הסבר בקצרה: טופס שיוך (Association Form) הינו אוסף שדות וטופס שאתה יכול להגדיר עם SPD (ועם VISUAL STUDIO) בכדי להגדיר הגדרות לכל זרימות העבודה מסוג מסויים. לדוגמא: זמן תגובה מקסימלי למשימה (SLA). כאשר משתמש משייך (מגדיר לרשימה) את זרימת העבודה – הוא ידרש לעדכן את הנתון הזה. טופס עידכון (Modification Form) יאפשר לו לעדכן את הנתון הזה לאחר שזרימת העבודה כבר שויכה לרשימה. טופס איתחול (Initiation Form) מאפשר להגדיר שדות וטופס שיוצגו למשתמש שמתחיל מופע של זרימת עבודה באופן ידני, לדוגמא אפשר יהיה לבקש ממשתמש שמתחיל זרימת עבודה על מסמך למלא בטופס מי יהיה המנהל שיצטרך לאשר. המידע בטפסים הללו נגיש למשתמש/מנהל המערכת ואפשר לקרוא מזרימת העבודה ב-SPD את הערכים שהוזנו, זהו מנגנון המאפשר למיישם לתת בקלות שליטה בתהליכים למשתמש.

© 2023 Yoni Goldberg. All rights reserved.