Özel prosedür veri modelleri oluşturma

Yordam, yordamın imzasını (ad, parametreler ve dönüş) tanımlayan tüm referans destekleme veri modellerini engeller. @blockly/block-shareable-procedures eklentisi tarafından sağlanan veri modelleri, Blockly'nin eski yerleşik prosedür bloklarının davranışını kopyalamak için oluşturulmuştur.

Bu, özel prosedür bloklarınızda istemeyebileceğiniz bazı davranışları içerir. Örneğin:

  • İade türleri desteklenmiyor
  • Tüm parametreler bir global değişkenle ilişkilendirilir.

Farklı bir davranış istiyorsanız kendi özel prosedür verisi modellerinizi oluşturabilirsiniz.

Prosedür modeli uygulama

Prosedür veri modeliniz, IProcedureModel arayüzünü uygulamalıdır.

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

Parametre modeli uygulaması

Parametre veri modelinizin IParameterModel arayüzünü uygulaması gerekir.

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

Tetikleyici değişiklikleri

Prosedür modelinde değişiklikleri tetikleyen yöntemlerin, @blockly/block-shareable-procedures eklentisinden triggerProceduresUpdate işlevini de çağırması gerekir. Bu işlem, tüm prosedür bloklarında doProcedureUpdate işlevini çağırarak blokların yeniden oluşturulmasına neden olur.

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

Etkinlikler

@blockly/block-shareable-procedures eklentisindeki prosedür modelleri, prosedürler değiştirildiğinde de etkinlikleri tetikler. Bu sayede birden fazla çalışma alanı senkronize edilebilir ve prosedür modelleri bu alanlar arasında paylaşılabilir. İsterseniz etkinlikleri tetiklemeyi de seçebilirsiniz.

Seri durumdan çıkarma

Sınıflarınızın her birinde de seri durumdan çıkarma işlemini desteklemek için static loadState yöntemi bulunmalıdır.

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