התייעצות בDESIGN
יש לי מחלקה הנקראת JOB. היא מייצגת עבודה/משימה מהעולם האמיתי - משימה שמפעל צריך לבצע. לדוגמא היא כוללת את התאריך האחרון לביצוע ומידע נוסף. יש לי דרישה לבצע פעולה מסוג ROUTING. פעולה זו למעשה קובעת כיצד תתפצל המשימה בין מפעלים שונים. מבחינת תוכנה, הפעולה הזאת בסה"כ תשנה ערכים של תכונות בתוך ג'וב. אולם פעולה זו מורכבת והיא משתמש במאשבים חיצונים לקבלת החלטות (קבצי EXCEL למשל). יש לי דילמה בDESIGN ואשמח לשמוע דיעות בנושא. אפשרות א': אני יוצר SERVICE (מחלקה עם פעולות בלבד) עם פעולה ROUTEJOB (המקבלת כפרמטר מופע של ג'וב). יוצר ממשק להגדרת פעולת ראוטינג IROUTINGPROVIDER, הממשק מחייב מתודה אחת: routeJob המתודה מקבלת ג'וב כפרמטר ומשנה את הערכים. יוצר מימושים של הממשק הנ"ל (אחד אמיתי, אחד לטסטים). ואז פשוט הסרוויס מאתחל מופע כלשהו של IROUTINGPROVIDER מעביר לו הג'וב. באפשרות הזאת ה-IROUTINGPROVIDER אחראי לבדו לביצוע פעולות הראוטינג והוא משנה ערכים בתוך ג'וב. יתרון: מודול גדול שמקבל החלטה עם משאבים חיצוניים מופרד לממשק נוסף ותחום, היישות לא צריכה להתעסק בלוגיקה המסובכת הזאת חיסרון: אין אפשרות לעשות ראוטינג לפי סוגים שונים של ג'וב. מודול חיצוני משנה את היישויות ולא מאפשר ליישויות לתקשר בינהן. אפשרות ב': הג'וב עצמו מממש מתודה ROUTE והג'וב עצמו אחראי לפעולת הראוטינג. הוא אולי ישתמש בעצמו בROUTING PROVIDER ואולי לא - כל מימוש של ג'וב יכול לעשות ראוטינג איך שבא לו. יתרון: הג'וב עצמו מחליט איך להתנהג, מאפשר הורשה של ג'ובים שונים שיעשו ראוטיג בצורה שונה. חיסרון: הג'וב שהוא בסה"כ ישות מיישם מודול גדול מאוד של החלטה שצריכה להשתמש במשאבים חיצוניים (אקסל). דעתכם?
יש לי מחלקה הנקראת JOB. היא מייצגת עבודה/משימה מהעולם האמיתי - משימה שמפעל צריך לבצע. לדוגמא היא כוללת את התאריך האחרון לביצוע ומידע נוסף. יש לי דרישה לבצע פעולה מסוג ROUTING. פעולה זו למעשה קובעת כיצד תתפצל המשימה בין מפעלים שונים. מבחינת תוכנה, הפעולה הזאת בסה"כ תשנה ערכים של תכונות בתוך ג'וב. אולם פעולה זו מורכבת והיא משתמש במאשבים חיצונים לקבלת החלטות (קבצי EXCEL למשל). יש לי דילמה בDESIGN ואשמח לשמוע דיעות בנושא. אפשרות א': אני יוצר SERVICE (מחלקה עם פעולות בלבד) עם פעולה ROUTEJOB (המקבלת כפרמטר מופע של ג'וב). יוצר ממשק להגדרת פעולת ראוטינג IROUTINGPROVIDER, הממשק מחייב מתודה אחת: routeJob המתודה מקבלת ג'וב כפרמטר ומשנה את הערכים. יוצר מימושים של הממשק הנ"ל (אחד אמיתי, אחד לטסטים). ואז פשוט הסרוויס מאתחל מופע כלשהו של IROUTINGPROVIDER מעביר לו הג'וב. באפשרות הזאת ה-IROUTINGPROVIDER אחראי לבדו לביצוע פעולות הראוטינג והוא משנה ערכים בתוך ג'וב. יתרון: מודול גדול שמקבל החלטה עם משאבים חיצוניים מופרד לממשק נוסף ותחום, היישות לא צריכה להתעסק בלוגיקה המסובכת הזאת חיסרון: אין אפשרות לעשות ראוטינג לפי סוגים שונים של ג'וב. מודול חיצוני משנה את היישויות ולא מאפשר ליישויות לתקשר בינהן. אפשרות ב': הג'וב עצמו מממש מתודה ROUTE והג'וב עצמו אחראי לפעולת הראוטינג. הוא אולי ישתמש בעצמו בROUTING PROVIDER ואולי לא - כל מימוש של ג'וב יכול לעשות ראוטינג איך שבא לו. יתרון: הג'וב עצמו מחליט איך להתנהג, מאפשר הורשה של ג'ובים שונים שיעשו ראוטיג בצורה שונה. חיסרון: הג'וב שהוא בסה"כ ישות מיישם מודול גדול מאוד של החלטה שצריכה להשתמש במשאבים חיצוניים (אקסל). דעתכם?