Tạo mô hình dữ liệu quy trình tuỳ chỉnh

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...
}