कस्टम प्रोसेस के लिए डेटा मॉडल बनाना

प्रक्रिया, रेफ़रंस के तौर पर काम करने वाले उन सभी डेटा मॉडल को ब्लॉक कर देती है जो इनके हस्ताक्षर को तय करते हैं प्रक्रिया (नाम, पैरामीटर, और रिटर्न). वे डेटा मॉडल जिन्हें @blockly/block-shareable-proदाures प्लगिन, इन कामों के लिए बनाया गया है ब्लॉकली के लेगसी बिल्ट-इन प्रोसेस ब्लॉक के व्यवहार की नकल करें.

इसमें ऐसा व्यवहार शामिल है जो हो सकता है कि आप अपनी कस्टम प्रक्रिया के लिए न चाहें ब्लॉक, जिनमें शामिल हैं:

  • रिटर्न टाइप इस्तेमाल नहीं किए जा सकते
  • सभी पैरामीटर, ग्लोबल वैरिएबल से जुड़े होते हैं

अगर आपको अलग व्यवहार करना है, तो अपनी ज़रूरत के मुताबिक कस्टम प्रोसेस डेटा बनाया जा सकता है मॉडल.

प्रोसेस मॉडल को लागू करना

आपके प्रक्रिया डेटा मॉडल को 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...
}

पैरामीटर मॉडल को लागू करना

आपके पैरामीटर डेटा मॉडल को 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...
}

ट्रिगर में हुए बदलाव

प्रोसेस मॉडल में बदलाव को ट्रिगर करने वाले किसी भी तरीके को triggerProceduresUpdate @blockly/block-shareable-procedures प्लगिन. इससे किसी भी प्रोसेस ब्लॉक पर doProcedureUpdate को कॉल करें, जिसकी वजह से वे रीरेंडर हो जाएं.

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

इवेंट

प्रोसेस मॉडल @blockly/block-shareable-pro समझतेs प्लगिन भी ट्रिगर होता है प्रोसेस में बदलाव किए जाने पर इवेंट. इससे एक से ज़्यादा फ़ाइल फ़ोल्डर और उनमें प्रोसेस के मॉडल शेयर किए जाएंगे. इन्हें भी चुना जा सकता है अगर आप चाहें, तो इवेंट फ़ायर किए जा सकते हैं.

डीसीरियलाइज़ेशन

आपकी हर क्लास के लिए एक static loadState तरीका भी ज़रूरी है, ताकि डीसीरियलाइज़ेशन.

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