ההליך חוסם את כל המודלים של גיבוי נתוני קובצי עזר שמגדירים את החתימה של את התהליך (שם, פרמטרים וחזרה). את המודלים של הנתונים שמספקים הפלאגין @blockly/block-shareable-procedures מובנה כדי לשכפל את ההתנהגות של בלוקי התהליכים המובנים מדור קודם של Blockly.
הדבר כולל התנהגויות שלא תרצו לבצע במסגרת התהליך המותאם אישית בלוקים, כולל:
- אין תמיכה בסוגי החזרה
- כל הפרמטרים משויכים למשתנה גלובלי
אם רוצים לשנות את אופן הפעולה, אפשר ליצור נתונים של הליכים מותאמים אישית למשימות ספציפיות.
הטמעת מודל של התהליך
במודל של נתוני התהליכים שלכם צריך להטמיע ממשק IProcedureModel.
class MyProcedureModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
// Note: construction should not add the model to the procedure map.
},
// Other methods are omitted for brevity...
}
הטמעת מודל פרמטרים
במודל הנתונים של הפרמטרים צריך להטמיע ממשק IParameterModel.
class MyParameterModel {
constructor(workspace, name, id) {
this.workspace = workspace;
this.name = name;
this.id = id;
},
setProcedureModel(model) {
this.model = model;
return this;
}
// Other methods are omitted for brevity...
}
שינויים בטריגר
כל אחת מהשיטות שמבצעות שינויים במודל ההליך צריכה להפעיל גם
triggerProceduresUpdate
מ-
הפלאגין @blockly/block-shareable-procedures. הפעולה הזו תגרור
קוראים לפונקציה doProcedureUpdate
בכל בלוק של פרוצדורות, מה שיגרום לכך שהעיבוד שלהן יתבצע.
import {triggerProceduresUpdate} from '@blockly/block-shareable-procedures';
class MyProcedureModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
setName(name) {
this.name = name;
triggerProcedureUpdate();
return this;
}
// Other methods are omitted for brevity...
}
אירועים
המודלים של התהליכים גם הפלאגין @blockly/block-shareable-procedures מופעל אירועים כשהנהלים משתנים. כך אפשר ליצור כמה סביבות עבודה נשארים מסונכרנים, ושיתופם מודלים של תהליכי עבודה. אפשר גם לבחור כדי להפעיל אירועים אם רוצים.
deserialization
בנוסף, כדי לתמוך בכיתות שלך צריך להגדיר את שיטת static loadState
פעולת deserialization.
class MyProcedureModel {
static loadState(state, workspace) {
// Note that the procedure model should not deserialize parameters.
// The deserializer will handle that.
return new MyProcedureModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}
class MyParameterModel {
static loadState(state, workspace) {
return new MyParameterModel(workspace, state.name, state.id);
}
// Other methods are omitted for brevity...
}