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