Table of Contents
יישום דפוס Prototype עבור קלונינג מורכבות גלגולי עבודה ב BPM Tools
כלים לניהול תהליכים עסקיים (BPM) חיוניים לדוגמת, ביצוע, וקידוד של זרימת עבודה ארגונית.כפי שזרימות העבודה הללו צומחות במורכבות ו- mdash; עתירות מספר מדינות, צמתות החלטות, ענפי מקבילות, ו- sub-מעבדים ונהנים ו-mdash; הצורך לשכפל את מצבי העבודה הקיימים באופן יעיל הופכת ל- BPM.
הבנת תבנית הפרוטוטיפ בפירוט
מהו דפוס הפרוטוטיפ?
דפוס הפרוטוטיפ הוא דפוס עיצוב בריא המאחד את תהליך ההשבחה לאובייקטים האמיתיים להיות משובקים.זה מגדיר ממשק או מעמד בסיס עם FLT:0 שיטה, המאפשר אובייקטים ליצור עותקים של עצמם.תבנית זו היא שימושית במיוחד כאשר מחיקה האובייקטיבית היא יקרה או מורכבת, כגון כאשר אובייקטים מכילים תכונות רבות, היררכיות עמוקות, או לוגיקה ראשונית של מבנה חדש, במקום, עותק של אדם אחר, 1F, מקבל אבטיפוס עצמאי, על גבי חפץ עצמאי.
Shallow vs. Deep Copy: A Critical Distinction
(ה) יישום תבנית הפרוטוטיפ דורש הבנה של ההבדל בין עותקים רדודים ועמוקים. AFLT:0shallow copyFLT:1 משכפל רק את האובייקט ו-Squo; שדות, בעוד שהתייחסות לאובייקטים הקנוניים נותרו משותפים בין הקן המקורי לבין השיבוט, במדינות עבודה רדודות של BPM, יכולות להוביל לתופעות לוואי בלתי ממושכות; לדוגמה, שינוי של כל העתקים של AFD2, כולל העתקים אחרים, אשר מכילים עותקים של שינוי מלא של שינוי.
תבנית פרוטוטיפ בקונטקסט של BPM
BPM קובע כי תמונת מצב של מקרה תהליך בשלב מסוים בזמן.מדינות אלה כוללות תכונות כמו node נוכחי, משימות מושלמות, החלטות ממתינים, ערכים משתנים, וקישורים למעבדים.
- (ב) ,0) ,התקדשות: 1 (ב) יצירת מקרים חדשים של תהליכים מתבנית בסיס
- (ב) ⁇ :0) ⁇ וסימולציה: ⁇ 1 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
דפוס Prototype מאפשר למפתחים לשכטו במהירות מצב מקור, ללא ספק, להימנע מראש של הכחשה מחדש של כל התכונות מאפס.
יישום דפוס Prototype למדינות זרימת העבודה
Defining a Prototype Interface
הצעד הראשון הוא ליצור ממשק או מחלקה בסיסית מופשטת המכריזה על השיטה (FLT:2) במערכת BPM טיפוסית, זה עשוי להיראות:
// Java example
public interface WorkflowStatePrototype {
WorkflowStatePrototype clone();
}
כל שיעורי מצב של זרימת עבודה קונקרטית ליישם ממשק זה.סוג ההחזר צריך להיות אותו הדבר כמו סוג הבסיס כדי לאפשר חיקוי פולימורפי.
יישום עמוק Clone בכיתות מדינת גלגול
יישום של ההרחבה:4 חייב לבצע עותק עמוק של כל שדה, במיוחד אוספים, אובייקטים מקונן, ואת הפניות בולטות. בשפות כמו Java או C#, מפתחים יכולים למנף סידורי (למשל, FLT:5 עם FLT:6) כדי להשיג שיבוט עמוק באופן אוטומטי, אם כי גישה זו יש ביצועים יותר על פני שליטה, העתק עמוק באמצעות בנייה או העתקים (למשל מפעלים לדוגמה: Java.
public class ProcessState implements WorkflowStatePrototype {
private String currentTask;
private Map<String, Object> variables;
private List<SubProcessState> subStates;
// constructor, getters, setters...
@Override
public ProcessState clone() {
ProcessState copy = new ProcessState();
copy.currentTask = this.currentTask; // immutable String
copy.variables = new HashMap<>(this.variables); // shallow copy of map; deep copy each value if mutable
copy.subStates = this.subStates.stream()
.map(SubProcessState::clone) // assume SubProcessState implements clone()
.collect(Collectors.toList());
return copy;
}
}
עקבו אחרי BPM Workflow Management
ברגע ששיטת ההטמעה מיושמת, מנוע BPM יכול לקרוא לזה בכל פעם שנדרשת שכפול.לדוגמה, כאשר משתמש מבקש מקרה חדש המבוסס על קיים, המערכת משחזרת את מצב האבטיפוס, מתקשרת אליו (FLT:8), ומקצה אותה מזהה חדש.המצב השט הוא עצמאי, כך שינויים הבאים אינם משפיעים על המקור.
- (ב) ,0) ,Explicit API: FLT:1 לחשוף את נקודת הסיום של ה-FLT 9 עבור שיבוט ידני על ידי מנהלי או תסריטים.
- (ב) ⁇ :0) ⁇ ⁇ : כאשר זרימת עבודה מגיעה לנקודת החלטה, המנוע מסיט את המדינה הנוכחית לכל נתיב חלופי.
- (ב) ⁇ :0) ,(הופנה מהדף ביקורת: ⁇ 1) , השיבו את המדינה לפני ניתוח קריטי כדי לאפשר לגלגל.
היתרונות של שימוש בתבנית Prototype ב BPM
יעילות המדינה מקבלת את המדינה
יצירת מצבי גלגול מורכבים מאפס כרוך בהקמת אובייקטים מקושרים רבים: מיפוי משתנה, קישור מעברים המדינה, קביעת פרמטרים של משימות, וטעינה הגדרות ברירת מחדל.התבנית הפרוטוטיפית מאמת את ההתקנה על ידי העתק ישיר של מדינה קיימת, מוגדרת באופן מלא על ידי הגדרות BPM רגישות ביצועים, זה יכול להפחית את זמן יצירת אובייקטים על ידי פקודות גודל.
שקיפות ותיקון שגיאות
כאשר המשובט נעשה באופן ידני (למשל, העתקת שדה על ידי שדה בקוד הלקוחות), הסיכון של שכחה שדה או התייחסות מוטעית הוא גבוה.תבנית הפרוטוטיפית מבססת את ההיגיון השט בתוך האובייקט עצמו, להבטיח שכל קבוצה של שיבוט הוא עותק נאמן.עקב זה הוא בעל ערך במיוחד כאשר מצבי זרימת העבודה יש תחלודות מורכבות (למשל, כל המשתנים שאינם חייבים להיות מקודמים כראוי על ידי מערכת מסוימת או לא מלאה).
גמישות להתאמה ולבדיקה
מדינות קלודות יכולות לשמש החל נקודות עבור הסתברות מהירה.לדוגמה, מהנדס QA יכול לשכט מצב של זרימה טובה ידועה, ליישם שינויים קלים (למשל, לשנות ערך משתנה), ולהפעיל תרחיש מבחן מבלי לבנות מחדש את המדינה כולה מאפס.זה מאיץ יצירת מבחן ותומכת בבדיקת בירור.
אחריות יחידה
על ידי הצבת לוגיקה משובצת בתוך האובייקט המדינה עצמה, התבנית דבקה בעקרון האחריות הבודד: כל מחלקה יודעת כיצד להעתיק את עצמה.אם המבנה הפנימי של מצב זרימת עבודה משתנה (למשל, הוספת שדה חדש עבור הפניות חיצוניות), מפתחים מתעדכנים רק את שיטת FLT:11 בכיתה זו.
אתגרים ושיקולים
מורכבות עותק עמוק וביצועים Overhead
העתקה עמוקה של מבנים מורכבים, כגון גרמים של מעבדים תת-מעבדים, יכול להיות יקר במונחים של זיכרון וזמן CPU. במצב של זרימת עבודה גדולה עם מאות של תת-קרקעיות, שיבוט עשוי לגרום לעקביות בולטת.מפתחים חייבים להעריך את הבורסות:
- עותק עם העתק-על-קול סמנטיים עבור חלקים בלתי-מוגדרים
- עותק עמוק חלקית: שיבוט רק חלקי נייר בעת שיתוף אובייקטים בלתי-מאומתים (למשל הגדרות תצורה)
- דוגמאות של קגרד כדי להימנע העתקה עמוקה חוזרת של תת-קרקעית זהה
חשוב גם להתמודד עם הפניות מחזוריות & mdash; לדוגמה, מעבד שמתייחס למצב ההורה שלה.אלגוריתם עותק עמוק חייב לזהות מחזורים כדי להימנע מטיולים אינסופיים.טכניקות כמו שימוש במפה ביקרה (הגדרת זהות) במהלך שיבוט יכול להפחית את זה.
תרגום ואבולוציה של מבנה המדינה
כאשר הגדרות מצב זרימת העבודה משתנות לאורך זמן (למשל, תכונות חדשות, שדות הוסרו, שינויים מסוגים), מצבים משוטפים מטיפוסי אבטיפוס מבוגרים עשויים להיות לאתואמים עם המערכת הנוכחית.
- (FLT:0)Prototype Register:FLT:1 לשמור על רישום של אובייקטים אבטיפוס לגרסה; בעת שיבוט, ציין את גרסת האבטיפוס.
- (ב) ⁇ :0) , ⁇ : 1 לאחר שיבוט, החל לוגיקה של שינוי כדי לעדכן את המדינה החדשה כדי להתאים את הschema האחרונה.
- (ב) ,0) אבטיפוסים בלתי ניתנים למניעה: FLT:1 מתייחס לאבטיפוס כתבניות בלתי-מוגדרות; לשכט אותם פעם אחת ולעולם לא לשנות את המקור.
[01:0] מרטין פיולר ’ תבניות של אדריכלות יישומים ארגונית 1FIRLT:1 נדון חששות דומים לגבי התנגדות העתקה במערכות ארגוניות, תוך הדגשת הצורך באבולוציה של סכימה זהירה.
Serialization ו-Deserialization for Cloning
יישוםים רבים משתמשים בסידוריות (למשל, Java ’sFLT:13 / irveFLT:14 או JSON סידוריזציה / deserialization) כדי להשיג עותק עמוק באופן אוטומטי.גישה זו נוחה אך יכולה להציג סיכונים ביטחוניים אם נתונים לא בוטחים הוא deserialed, וזה עשוי להיות איטי יותר מאשר משובט ידני כי זה כרוך I / O פעולות בנוסף, לא כל אובייקטים הם בלתי ניתנים לשחזור (למשל, תיבות של Bizable), לאחר פעולות.
ניהול זיכרון וניהול משאבים
Cloning גדול זרימת עבודה במדינות מגביר את צריכת הזיכרון, שכן כל שיבוט תופס את סט האובייקטים שלו.בסביבות עם מקרים רבים של תהליך במקביל, לחץ זיכרון יכול להיות משמעותי.מפתחים צריכים ליישם אופטימיזציה או עצלה עבור שדות איסוף גדולים, ולשקול באמצעות דפוסים במשקל זבוב עבור חלקים לא מתואמים משותף.
אסטרטגיות יישום בשפות ומסגרות
ג'אווה ו-JVM Languages
(הופנה מהדף ו-FLT:17) (העתק מוגן, רדוד), אך עבור פתרונות מבוססי שיבוט עמוק, סידוריים מבוססי סידורי או העתקה ידנית מועדפים.מסגרות פופולריות כמו FLT:0Apache Commons LangcioFLT, אך עבור שיבוטים עמוקים יותר (למשל, כללי BPM) שנבנו על פני האביב (למשל, קמארטי), ניתן ליישם את התצורה של שימוש ב-טיפוס של תצורה חדשה (FLT) עם טיפול ב-ADD) עם טיפול תזונתי (תיקון: 19) עם טיפול תזונתי (תיקון: 19) עם טיפול תזונתי (FLT) עם טיפול תזונתי (תיקון:
JavaScript / TypeScript Environments
במערכות BPM מבוססות Node.js (למשל, באמצעות ההרחבה:0ZeebeveFLT:1 או מנועי סטרימינג עבודה מותאמים אישית), שיבוט עמוק נעשה בדרך כלל באמצעות FLT:21 עבור אובייקטים פשוטים. עבור אובייקטים מורכבים עם פונקציות, פריטים תאריך, או הפניות מעגליות, ספריות כמו FLT:22 הם טובים יותר.
interface Cloneable<T> {
clone(): T;
}
class WorkflowState implements Cloneable<WorkflowState> {
clone(): WorkflowState {
return deepClone(this);
}
}
.NET (C#)
(ב) (ב) , עיין ב[[1924]], [[1924]], [[1924]], [[1924]]]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]], [[1924]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]], [[1924]], [[1924]]]], [[1924]]]]]]]], [[1924]]]]]], [[1924]]]]]]]]]]]]]], [[[[1924]], [[1924]], [[[[1924]]]]]], [[[[1924]]]]]]]] [[[[1924]]]]]]
Python
(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
השוואת דפוס Prototype עם תבניות הבריאה אחרות ב BPM
שיטת Prototype לעומת Factory Method
תבנית שיטת המפעל מגדיר ממשק ליצירת אובייקטים אך מאפשר תת-מחלקות לשנות את הסוג.ב.ב.פי., מפעל יכול לשמש ליצירת סוגים שונים של מצבי זרימת עבודה (למשל, מדינת אישור, מדינת ביקורת) עם זאת, כאשר המדינה הרצויה כבר מוגדר לחלוטין, שיבוט הוא יעיל יותר מאשר הפעלת לוגיקה במפעל.
Prototype לעומת Build
דפוס הBuild הוא אידיאלי לבניית אובייקטים מורכבים צעד אחר צעד, עם שליטה על תצורה.ב BPM, בונה שימושיים לבניית מצבי גלגול עבודה חדשים מאפס או מתבנית.עם זאת, עבור שיבוט מדינה קיימת שכבר יש לו את התצורה הנכונה, קורא FLT:34 הוא פשוט ומהיר יותר מאשר האכלה של בונה עם כל המדינה ’ נתונים.
Prototype לעומת Singleton
Singletons לספק מקרה אחד בכיתה, אשר אנטי-פנס עבור מצבי זרימת עבודה כי כל תהליך צריך המדינה שלו.עם זאת, מרשם אבטיפוס ניתן ליישם כטון (למשל, FLT:35) לאחסן ולנהל מקרים אבטיפוס.
דוגמה אמיתית לעולם: הקלת זרימת עבודה במנוע תהליכים
בהתחשב במערכת BPM המטפלת בזרימות אישור ההלוואה.מצב תהליך ההלוואה כולל נתונים של מבקש, ציוני אשראי, מעמד מסמך, ומשימות סקירה ending.כאשר קצין הלוואה רוצה לדמות a “ מה אם ” תרחיש (למשל, שינוי קצב ההלוואה), המערכת משטפת את מצב זרימת העבודה הנוכחי, חל על השינוי, ומפעילה את הסימולציה ללא תהליך חי של מערכת נתונים ו-Fontipi-ofi-ofi-of-of-of-of-of-of-of-of-of-of-of-of-of-of-upi-upi-upit, ללא טיפוליתיקים, ללא טיפול, ללא טיפול, מערכת ניהולי-upit-upit-up-upit-upit-upit-up-up-upi-up-up-up-up-up-up-up-up-of-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-up-
פלטפורמות BPM בקנה מידה גדול כמו FLT:0 ,CamundaveFLT:1 ; בעוד Camunda לא להשתמש בתבנית Prototype עבור משקעים (הוא נמשך המדינה למסד נתונים יחסי), הרעיון של העתקה של מקרה תהליך שלם (למשל, באמצעות תהליך הגירה) כרוך באתגרים דומים.
Best Practices for Apply the Prototype Pattern ב- BPM
השתמש בשדות אי-מקלע היכן שאפשר
אם שדה הוא בלתי-מוגדר (למשל, FLT:37, ;FLT:38 או ערך אובייקטים), ניתן לשתף אותו בין מקורי לשיבוט ללא העתקה.זה מקטין את הזיכרון מעל הראש וסימול את יישום ההשבחה.
קיצור של Prototype Registry
אבטיפוס מרשם מאחזר אחד או יותר מקרים ידועים מראש (למשל, וולדקו; Default orderWorkflowstate ” “ אישור עם Escalation ”) כאשר מנוע BPM צריך מדינה חדשה, הוא מבקש שיבוט מהרישום על ידי הרישום יכול גם לטפל בגירסה: אבטיפוס רשומים עם גרסה מזהה, תיקון מנוע זה.
העתק-על-וטקס למבנהים גדולים
אם מצב זרימת עבודה מכיל מפה או רשימה ענקית שלעתים נדירות משתנה לאחר שיבוט, לשקול באמצעות עטיפה העתק-על-כתיבה. עטיפה אלה חולקים את האוסף הבסיסי עד ששינוי מתרחש, שבו הם יוצרים עותק פרטי.טכניקה זו משפרת את הביצועים כאשר המשובט הוא תכוף אך שינויים במקרים משוטעים הם נדירים.
לספק API ברור ללקוחות
השיטה (FLT:40) צריכה להיות מטופלת היטב לגבי מה מקבל משובץ (למשל, עמוק מול רדודה) לקוחות צריכים להבין כי השיבוט הוא עצמאי, וכי שינוי השיבוט אינו משפיע על המקור.
מבחן Cloning Thoroughly
כי שיבוט כולל העתקת מבנים מורכבים, בדיקות יחידה צריכות לאמת:
- עצמאות: שינוי שיבוט לא צריך לשנות את המקור.
- שוויון: ההטמעה צריכה להיות שווה ערך למקור (אלא אם כן נשגב).
- עותק עמוק: אובייקטים מזוינים הם אזכורים נפרדים.
- טיפול במחזור: אין ערימה מעל פניות או לולאות אינסופיות.
- תיקון עגול של Serialization אם באמצעות שיבוט מבוסס סידוריזציה.
מסקנה
תבנית Prototype מציעה פתרון חזק ואלגנטי עבור מדינות זרימת עבודה מורכבות BPM כלים. על ידי מרכזי לוגיקה השיבוט בתוך כל אובייקט מדינה, היא משפרת יעילות, עקביות, גמישות, ותחזוקתיות. עם זאת, יישום מוצלח דורש תשומת לב זהירה מכניקת עותק עמוקה, ביצועים ביצועים ביצועים, עצירות, טיפול מחזורי, כאשר מוחלשים מחשבה, דפוסים מאפשרים BPM כדי להגדיל את היקף של סימולציה ואפקטים, תוך שמירה על יעילות, או טיפול, תוך כדי שיפור של יעילות של יעילות של נתונים ובדיקת סימולציה של פעילות; כמו גם על יעילות, או טיפול.
(ב) לקריאה נוספת על תבניות עיצוב ועיבוד אובייקטים, ייעוץ:0 “ Head First Design Patterns ” veFLT:1 ו-FLT:2Spring Framework ’s beanoping DocumentsFLT 3: for Comparative Approach.