Quy trình chặn tất cả các mô hình dữ liệu hỗ trợ tham chiếu xác định chữ ký của quy trình (tên, tham số và giá trị trả về). Các mô hình dữ liệu do trình bổ trợ @blockly/block-shareable-procedures cung cấp được tạo để sao chép hành vi của các khối quy trình tích hợp cũ của Blockly.
Điều này bao gồm một số hành vi mà bạn có thể không muốn cho các khối quy trình tuỳ chỉnh của mình, bao gồm:
- Không hỗ trợ các loại giá trị trả về
- Tất cả các tham số đều được liên kết với một biến toàn cục
Nếu muốn có hành vi khác, bạn có thể tạo các mô hình dữ liệu quy trình tuỳ chỉnh của riêng mình.
Triển khai mô hình quy trình
Mô hình dữ liệu quy trình của bạn cần triển khai giao diện 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...
}
Triển khai mô hình tham số
Mô hình dữ liệu tham số của bạn cần triển khai giao diện 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...
}
Thay đổi trình kích hoạt
Mọi phương thức kích hoạt các thay đổi đối với mô hình quy trình cũng phải gọi triggerProceduresUpdate
từ trình bổ trợ @blockly/block-shareable-procedures. Thao tác này sẽ gọi doProcedureUpdate
trên mọi khối quy trình, khiến các khối đó kết xuất lại.
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...
}
Sự kiện
Các mô hình quy trình trong trình bổ trợ @blockly/block-shareable-procedures cũng kích hoạt các sự kiện khi quy trình được sửa đổi. Điều này cho phép nhiều không gian làm việc được đồng bộ hoá và các mô hình quy trình được chia sẻ giữa các không gian làm việc đó. Bạn cũng có thể chọn kích hoạt sự kiện nếu muốn.
Giải tuần tự hoá
Mỗi lớp của bạn cũng cần có một phương thức static loadState
để hỗ trợ việc chuyển đổi tuần tự.
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...
}