Yoni Goldberg

SharePoint Expert, Human Workflow specialist. WWW.GOLDBERGYONI.COM

מעל 40 טיפים לפיתרון מוצלח, חלק 1 מתוך 4-SharePoint Workflow

leave a comment »

 

הקדמה קצרה

לפניכם מעל 40 טיפים לביצוע HUMAN WORKFLOW מוצלח ואיכותי בסביבת SHAREPOINT. חלק גדול מהמערכות שלקוחות מבקשים בסביבת SHAREPOINT הן מערכות שנועדו לנהל תהליך או מקרה (Case) עיסקי: החלטה על מתן הלוואה, אישור חופשה, סקירת איכות קוד של מתכנת, בקשת העלאת שכר, קבלת עובד חדש, הזמנת טיסה, צירוף ספק, תיכנון ישיבת הנהלה ואפשר בקלות להביא מאות דוגמאות לבקשות דומות. בשנים האחרונות אני מתמחה בפיתרונות מהסוג הזה לאירגונים, הן בהיבט הטכנולוגי והן בהיבט העיסקי ובכתבה שלפניכם תמצאו טיפים המחולקים ל-4 חלקים:

· בחלק 1, 2 ו-3 תמצאו טיפים הקשורים ליישום ללא קוד של פיתרונות, לדוגמא טיפ מספר 5# שעשוי לחסוך לכם זמן רב, או טיפ מספר 7# שממש יכול להציל אתכם ממצב לא נעים וטיפ מספר 15# שיכול לסחוט מהלקוח קריאת התפעלות.

· בחלק 4 תמצאו טיפים הקשורים לפיתוח בקוד, שימו לב לטיפ מספר 33# שעשוי ליצור עבורכם פיתרון עם ארכיטקטורה איכותית וקלה יותר לתחזוקה.

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

 

חלק 1 – טיפים ליישום ללא קוד

1. clip_image002 טיפ מספר 1: ליצירת משימות בתהליך השתמש ב-Custom Task Process
נתבקשת להקצות משימה לאדם או לקבוצת אנשים באופן סידרתי או במקביל. ב-SharePoint Designer קיימים מספר ACTIONS ליצירת משימה או סבב אישורים. כשמדובר ביצירת משימה בודדת לגורם אחד – אנו עשויים להתפתות להשתמש בפעולות מסוג-COLLECT DATA או ב-Assign a To-Do Item (המוכרים לנו מגירסת 2007) היות והם כביכול מיועדים למשימה פשוטה, אולם גם כשאנו יוצרים משימה לאדם בודד יתכן וסביר שהלקוח שלנו יבקש דברים מורכבים יותר בעתיד כמו: להגדיר SLA (זמן תגובה מקסימלי לאישור משימה), או לאפשר לעובד להעביר את המשימה לאדם אחר. Custom Task Process יוכל לתמוך בכל המצבים האלה ולכן הכי בטוח לצאת איתו אל הדרך. שימוש בפעולה זו תבטיח לך שתוכל בעתיד לתמוך ברוב הדרישות שיעלו.

Start Approval Process ו-Start Feedback Process הם אחים של ה-ACTION הזה וגם הם יוכלו לתמוך במצבים מתקדמים.

clip_image004

הוספת Custom Task Process

2. clip_image005 טיפ מספר 2: פתח את האתר באנגלית, שנה לעברית לאחר מכן
אם תפתח את האתר עליו הינך עובד בעברית, כל ה-ACTIONS של זרימת העבודה ב-SHAREPOINT DESIGNER יופיעו בעברית. סביר להניח שלא תבין חלק גדול מהתירגומים המוזרים (בחן את עצמך: מה הוא "תהליך משימה מותאם אישית"?…), כשיהיו לך תקלות לא תוכל לחפש במנוע חיפוש עזרה כי כל המידע יהיה בעברית. לפיכך, כדאי לפתוח האתר באנגלית,
ואז במידת הצורך להוסיף את השפה העברית, במקרה כזה ה-ACTIONS ימשיכו להיות באנגלית.

3. clip_image005[1] טיפ מספר 3: הגדר שמות של TASK PROCESS באנגלית
כשהינך מגדיר פעילויות של איסוף משוב ומשימה (Start Approval Process או Start Feedback Process או Custom Task Process), בחר את השם באנגלית וללא רווחים. יש לבצע זאת לפני ביצוע ה-PUBLISH הראשוני לזרימת העבודה. מדוע? משום ששם ה-ACTION יקבע את שם סוג התוכן (Content Type) המשוייך לפעולה זו, ואם השם יהיה עברי לדוגמא, יופיעו בשם כל מיני סימנים מוזרים, אחוזים ועוד תווים שאינם נעימים לעין, בנוסף לא תוכל להבין את שמות הטפסים שיווצרו ולא תדע איזה טופס לערוך.

4. clip_image007 טיפ מספר 4: צור למשתמש ויזואליזציה של מצב התהליך בשתי רמות

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

איור חצים נותן את המבט המהיר והפשוט, הנה איור לדוגמא שמציג למשתמש היכן נמצא התהליך:
clip_image009

חצים להציג למשתמש היכן נמצאת זרימת העבודה

ליד איור החצים הפשוט נשים לינק לתצוגה מורחבת שתפתח את האיור ש-VISIO SERVICES מייצר באופן
אוטומטי. הבעיה היא שהאיור ברירת מחדל שנוצר על ידי VISIO כולל את כל הפעילויות שבתהליך כולל דברים טכניים שלא אמורים לעניין את המשתמש העיסקי (למה שמשתמש במערכת יצטרך לדעת שתהליך ביצע פעולה מסוג Write To History List?), לכן לאחר שנוצרת הדיאגרמה אנו יכולים לערוך אותה ב-VISIO ולעצב אותה כך שתתאים למשתמש העיסקי ותראה רק שלבים רלוונטים. הנה איור של הדיאגרמה לפני ואחרי:

clip_image011תמונת לפני: ויזואליזציה שנוצרה אוטומטית לתהליך ב-VISIO, המשתמש העיסקי שלך צריך לראות את זה?

clip_image013
אחרי: תמונת ויזואליזציה שנערכה בתוכנת VISIO, הפרטים הטכניים הוסרו, נשארו רק שלבים עסקיים

5. clip_image014 טיפ מספר 5: איך תפעיל זרימת עבודה לפי SCHEDULE?

לעתים אנו צריכים להריץ זרימת עבודה כל יום או פעם בשבוע. למשל לאחר היווצרות מסמך המתאר מוצר בקטלוג של החברה נרצה בכל שבוע להריץ זרימת עבודה שתיצור למנהל המוצר משימה לעדכן את פרטי המוצר. הדרך הקלה והזולה לביצוע פעולה מסוג זה היא להשתמש במנגנון ה-RETENTION של ה-Information policy management. מנגנון זה מאפשר לנו להריץ זרימת עבודה באופן אוטומטי כל X ימים/שבועות/שנים באופן חוזר.

clip_image016

הגדרת תיזמון לזרימת עבודה

6. clip_image017 טיפ מספר 6: בפיתוח REUSABLE WF – השתמש במקורות מידע יחסיים

אם הינך מפתח זרימת עבודה לשימוש חוזר (REUSABLE) באמצעות SPD ואתה צריך לקרוא מידע מרשימת המשימות או מרשימת ההיסטוריה – באפשרותך לפנות לרשימות באתר באמצעות שמן, אך אם תעשה זאת וה-WF יופץ לאתר עם רשימות בשם שונה – דברים פשוט לא יעבדו. זרימת העבודה תחפש רשימות שאינן קיימות. לפיכך, באפשרותך לפנות למקור מידע שהוא דינמי, כזה שהוא חלק מההגדרה של זרימת העבודה. בתיבת מקורות המידע עליך לבחור Association: Task List. כעת, אין בעיה שזרימת העבודה תופץ בכמה מקומות ובכל מקום תהיה רשימת משימות עם שם שונה.

clip_image019

שימוש במקור מידע יחסי

7. clip_image005[2] טיפ מספר 7: רשימות ההיסטוריה והמשימות נמחקות כל 60 יום!

רבים לפניך כבר נפלו, גם אני נפלתי בפח למרות שקראתי בעצמי את המידע הזה, פשוט הרשיתי לעצמי לשכוח ושילמתי מחיר. מאוד סביר שתציג במערכת דו"חות ומידע מרשימת המשימות או ההיסטוריה. לדוגמא, תרצה להציג את מהלך האירועים בכל תהליך שהתרחש, המשתמש יוכל לאתר תהליך מהעבר ולראות את כל המשימות שהיו בו. שים לב: משיקולים של ביצועים, 60 לאחר סיום זרימת העבודה – כל המשימות והרישומים ברשימת ההיסטוריה נמחקים! כלומר אם המערכת שלך נסמכת על רישומים אילו לצורך תיעוד ההיסטוריה – יתכן שתגלה שנמחקו לך נתונים חשובים. אז מה עושים? (1) ניתן לבטל את ה-TIMER JOB שמבצע פעולה זו, עשה זאת רק אם אתה בטוח שכמויות המידע ברשימות ההיסטוריה והמשימות סביר (2) ברמת השיוך של זרימת העבודה (Workflow Association), ניתן להגדיל את מועד ניקוי במידע לערך גדול. גם כאן, עשה זאת רק אם אתה בטוח שכמויות המידע ברשימות ההיסטוריה והמשימות סביר. (3) העבר בעצמך את המשימות או רישומי ההיסטוריה לרשימת ארכיב, ובדוחות הצג מידע גם מרשימות הארכיב. פעולה זו כמובן תצריך מאמץ פיתוח.

8. clip_image020 טיפ מספר 8: אינטגרציה קלה עם מערכות חיצוניות

עוד בקשה נפוצה היא לקבל או לעדכן מידע ממערכת חיצונית דרך WEB SERVICE או ישירות מהדטה בייס. SPD אינו כולל ACTION לפניה למערכות חיצוניות (קיים רכיב חינמי ב-CODEPLEX), בקוד זה כמובן אפשרי בקלות (Window Workflow Foundation כולל ACTIVITY מובנה לפניה ל-WS), אך מה נעשה אם איננו רוצים לכתוב קוד? במקרים לא מסובכים מדי, יש פיתרון קל ופשוט: ניצור סוג תוכן חיצוני ורשימת חיצונית (BCS – External Content Type), בדיוק כפי ש-SPD יודע לקרוא ערכים מרשימה רגילה באתר – כך נוכל לקרוא גם מרשימה חיצונית (מידע שמאחורי הקלעים מגיע בזמן אמת ממערכת חיצונית) ואפילו לעדכן/להוסיף/למחוק.

9. clip_image002[1] טיפ מספר 9: איך להשתמש באותו טופס InfoPath למשימות שונות

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

AllFiles-Workflows-[workflow name]-[workflowName].xoml.wfconfig.xml

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

clip_image022

שינוי טופס המשימה של סוג התוכן

עד כאן החלק הראשון בסידרה, אהבת? חלקים 2,3 ו-4 ממתינים לך.
יוני גולדברג Yoni Goldberg

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: