Özel prosedür veri modelleri oluşturma

Prosedür, imzasını tanımlayan tüm referans yedekleme veri modellerini engeller. (ad, parametreler ve döndürülen sonuç). Search Ads 360'ın sağladığı veri modelleri @blockly/block-shareable-procedures eklentisi, Blockly'nin eski yerleşik prosedür bloklarının davranışını çoğaltın.

Bu, özel prosedürünüzde istemeyebileceğiniz bazı davranışları içerir engellemeler:

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

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

Prosedür modelini uygulama

Prosedür veri modelinizin IProcedureModel arayüzünün ekran görüntüsü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 modeliniz, IParameterModel arayüzü.

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 tümü, Şuradan triggerProceduresUpdate: @blockly/block-shareable-procedures eklentisi. Bu, tüm prosedür bloklarında doProcedureUpdate yöntemini çağırarak bunların yeniden oluşturulmasına neden olun.

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

Bu dizindeki prosedür modelleri, @blockly/block-shareable-procedures eklentisi de etkinleşiyor gösterilen etkinliklerdir. Böylece birden fazla çalışma alanı ve prosedür modellerinin bunlar arasında paylaşılmasını sağlaması gerekir. Şunları da seçebilirsiniz: etkinlikleri tetikleyebilirsiniz.

Seriden çıkarma

Ayrıca sınıflarınızın her birinde, uygulamayı desteklemek için static loadState yöntemi de gereklidir seri durumdan çıkarma.

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