ขั้นตอนจะบล็อกโมเดลข้อมูลสนับสนุนอ้างอิงทั้งหมดที่กำหนดลายเซ็นของ กระบวนการ (ชื่อ พารามิเตอร์ และการคืนสินค้า) โมเดลข้อมูลจัดทำโดย ปลั๊กอิน @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 ก็เริ่มทำงานเช่นกัน เหตุการณ์เมื่อมีการแก้ไขขั้นตอน ซึ่งทำให้พื้นที่ทำงานหลายแห่ง ซิงค์กันอยู่เสมอ และโมเดลของกระบวนการที่จะแชร์ นอกจากนี้ คุณยังสามารถเลือก เพื่อทำให้เหตุการณ์เริ่มทำงานหากคุณต้องการ
การดีซีเรียลไลซ์
ชั้นเรียนแต่ละชั้นต้องมีเมธอด static loadState
เพื่อรองรับด้วย
การดีซีเรียลไลซ์
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...
}