একটি কাস্টম রিসোর্স ব্যবহার করে জটিল ডেটা উপস্থাপন করুন

এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে Google Workspace Flows-এর জন্য কাস্টম রিসোর্স সংজ্ঞায়িত করতে হয়।

কাস্টম রিসোর্স হলো কাস্টম ডেটা স্ট্রাকচার যা আপনি একাধিক ভেরিয়েবলকে একসাথে গ্রুপ করার জন্য সংজ্ঞায়িত করতে পারেন। উদাহরণস্বরূপ, একটি CRM লিড তৈরি করতে, একটি ইমেল ঠিকানা, রাস্তার ঠিকানা এবং নাম সম্বলিত একটি কাস্টম রিসোর্স পাস করুন।

কাস্টম রিসোর্স সংজ্ঞায়িত করার জন্য এই দুটি উপায় রয়েছে:

  • রেফারেন্স হিসেবে: যখন আপনি একটি কাস্টম রিসোর্সকে রেফারেন্স হিসেবে আউটপুট করেন, তখন আপনি সম্পূর্ণ কাস্টম রিসোর্স অবজেক্টের পরিবর্তে কাস্টম রিসোর্সটিকে তার আইডি দিয়ে ফেরত পাঠান। এটি ফ্লো ধাপের মধ্যে স্থানান্তরিত ডেটা হ্রাস করে কর্মক্ষমতা উন্নত করে। যখন ডেটার জন্য সেকেন্ডারি লুকআপের প্রয়োজন হয়, তখন সেই লুকআপগুলি সম্পাদনের জন্য এর আইডি ফিরিয়ে দেওয়া কার্যকর।
  • মান হিসেবে: যখন কার্যকর করার সময় ডেটা পুনরুদ্ধার করতে হয়, অথবা যখন কাস্টম রিসোর্স ছোট হয় এবং সংবেদনশীল ডেটা ধারণ করে না, তখন এই পদ্ধতিটি ব্যবহার করুন।

রেফারেন্স হিসেবে একটি কাস্টম রিসোর্স আউটপুট করুন

একটি কাস্টম রিসোর্সকে রেফারেন্স হিসেবে আউটপুট করে, আপনি সম্পূর্ণ কাস্টম রিসোর্স অবজেক্টের পরিবর্তে কাস্টম রিসোর্সটিকে তার আইডি দিয়ে ফেরত দিতে পারেন। যদি একটি কাস্টম রিসোর্স বড় বা জটিল হয়, তাহলে শুধুমাত্র আইডি পাস করলে ফ্লো ধাপগুলির মধ্যে স্থানান্তরিত ডেটা হ্রাস করে কর্মক্ষমতা উন্নত হয়।

রেফারেন্স হিসেবে একটি কাস্টম রিসোর্স আউটপুট করতে, ধাপের ম্যানিফেস্ট ফাইল এবং কোড সম্পাদনা করুন।

ম্যানিফেস্ট ফাইলটি সম্পাদনা করুন

ম্যানিফেস্ট ফাইলে:

  1. একটি workflowResourceDefinitions নির্দিষ্ট করুন এবং এটিকে একটি id , একটি fields[] অ্যারে এবং একটি providerFunction বরাদ্দ করুন। workflowResourceDefinitions হল একটি কাঠামো যা কাস্টম রিসোর্সের ডেটা টাইপ এবং বিষয়বস্তু সংজ্ঞায়িত করে।

  2. fields[] অ্যারের মধ্যে, আপনি কাস্টম রিসোর্স তৈরি করে এমন পৃথক ক্ষেত্রগুলি নির্দিষ্ট করেন, এই উদাহরণে field_1 এবং field_2 বলা হয়।

  3. providerFunction এর মান অবশ্যই ধাপের কোডে থাকা ফাংশনের নামের সাথে মিলবে। প্রয়োজনে providerFunction প্রকৃত কাস্টম রিসোর্স কন্টেন্ট পুনরুদ্ধার করে।

    JSON সম্পর্কে

    {
        "workflowResourceDefinitions": [
            {
                "id": "resource_id",
                "name": "Custom Resource",
                "fields": [
                    {
                        "selector": "field_1",
                        "name": "Field 1",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    },
                    {
                        "selector": "field_2",
                        "name": "Field 2",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    }
                ],
                "providerFunction": "onMessageResourceFunction"
            }
        ]
    }
    
  4. outputs[] তে, এমন একটি আউটপুট ভেরিয়েবল নির্দিষ্ট করুন যা আউটপুট ভেরিয়েবলের একটি গতিশীল সেট প্রদান করে। আউটপুট ভেরিয়েবলের একটি dataType থাকে যার বৈশিষ্ট্য resourceTypecardinality মান অবশ্যই SINGLE হতে হবে।

    JSON সম্পর্কে

    "outputs": [{
            "id": "resource_data",
            "description": "Resource Data",
            "cardinality": "SINGLE",
            "dataType": {
              "resourceType": { "workflowResourceDefinitionId": "resource_id" }
            }
          }]
    

এখানে একটি সম্পূর্ণ ম্যানিফেস্ট ফাইল রয়েছে যা একটি কাস্টম রিসোর্সকে সংজ্ঞায়িত করে:

JSON সম্পর্কে

{
    "timeZone": "America/Los_Angeles",
    "exceptionLogging": "STACKDRIVER",
    "runtimeVersion": "V8",
    "addOns": {
        "common": {
            "name": "Calculator",
            "logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
            "useLocaleFromApp": true
        },
        "flows": {
            "workflowElements": [
                {
                    "id": "getResourceData",
                    "state": "ACTIVE",
                    "name": "Get Resource by ID",
                    "description": "Get Resource by ID",
                    "workflowAction": {
                        "outputs": [
                            {
                                "id": "resource_data",
                                "description": "Resource Data",
                                "cardinality": "SINGLE",
                                "dataType": {
                                    "resourceType": {
                                        "workflowResourceDefinitionId": "resource_id"
                                    }
                                }
                            }
                        ],
                        "onConfigFunction": "onConfigResourceFunction",
                        "onExecuteFunction": "onExecuteResourceFunction"
                    }
                }
            ],
            "workflowResourceDefinitions": [
                {
                    "id": "resource_id",
                    "name": "Custom Resource",
                    "fields": [
                        {
                            "selector": "field_1",
                            "name": "Field 1",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        },
                        {
                            "selector": "field_2",
                            "name": "Field 2",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        }
                    ],
                    "providerFunction": "onMessageResourceFunction"
                }
            ]
        }
    }
}

কোডটি সম্পাদনা করুন

অ্যাপ্লিকেশন কোডে:

  1. এই উদাহরণে onMessageResourceFunction() নামক providerFunction প্রয়োগ করুন, যা প্রয়োজনে কাস্টম রিসোর্স কন্টেন্ট পুনরুদ্ধার করে। এটি ইনপুট e নেয় যা ধাপের ইভেন্ট অবজেক্ট JSON পেলোড , এবং এটি থেকে কাস্টম রিসোর্স আইডি সেট করে।

    অ্যাপস স্ক্রিপ্ট

    function onMessageResourceFunction(e) {
      var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
      var field_1 = ...;
      var field_2 = ...;
    
      return {
        "hostAppAction": {
          "workflowAction": {
            "resourceRetrievedAction": {
              "resourceJson": JSON.stringify({
                "field_1": field_1,
                "field_2": field_2,
              })
            }
          }
        }
      };
    }
    
  2. প্রোভাইডার ফাংশনকে অবশ্যই কাস্টম রিসোর্সের মান একটি উপযুক্ত প্রক্রিয়া ব্যবহার করে পুনরুদ্ধার করে ফেরত পাঠাতে হবে, যেমন একটি API কল করা বা একটি ডাটাবেস পড়া।

  3. একটি কাস্টম রিসোর্সকে তার আইডি দ্বারা পুনরুদ্ধার এবং ফেরত দিতে, এটিকে returnOutputVariablesAction হিসাবে ফেরত দিন, যেমনটি onExecuteResourceFunction() এ দেখানো হয়েছে।

    অ্যাপস স্ক্রিপ্ট

    function onExecuteResourceFunction(e) {
      var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
      return {
        "hostAppAction": {
          "workflowAction": {
            "returnOutputVariablesAction": {
              "variableValues": [{
                "variableId": "resource_data",
                "variableData": {
                  "resourceReferences" : [ resource_id ]
                }
              }]
            }
          }
        }
      };
    }
    

এখানে একটি সম্পূর্ণ উদাহরণ:

অ্যাপস স্ক্রিপ্ট

function onMessageResourceFunction(e) {
  var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
  var field_1 = ...;
  var field_2 = ...;

  return {
    "hostAppAction": {
      "workflowAction": {
        "resourceRetrievedAction": {
          "resourceJson": JSON.stringify({
            "field_1": field_1,
            "field_2": field_2,
          })
        }
      }
    }
  };
}

function onExecuteResourceFunction(e) {
  var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
  return {
    "hostAppAction": {
      "workflowAction": {
        "returnOutputVariablesAction": {
          "variableValues": [{
            "variableId": "resource_data",
            "variableData": {
              "resourceReferences" : [ resource_id ]
            }
          }]
        }
      }
    }
  };
}

একটি কাস্টম রিসোর্সকে মান হিসেবে আউটপুট করুন

যখন আপনি একটি কাস্টম রিসোর্সকে রেফারেন্স হিসেবে আউটপুট করেন, তখন আপনি সম্পূর্ণ কাস্টম রিসোর্স অবজেক্টের পরিবর্তে কাস্টম রিসোর্সটিকে তার আইডি দিয়ে ফেরত পাঠান। যদি আপনার সম্পূর্ণ রিসোর্স অবজেক্টটি পাস করার প্রয়োজন হয়, তাহলে আপনি resourceValues ​​ব্যবহার করতে পারেন।

resourceValues ​​তে, আপনি একটি ধাপের আউটপুট সংজ্ঞায়িত করেন।

একটি কাস্টম রিসোর্সকে মান হিসেবে আউটপুট করতে, ধাপের ম্যানিফেস্ট ফাইল এবং কোড সম্পাদনা করুন।

ম্যানিফেস্ট ফাইলটি সম্পাদনা করুন

ম্যানিফেস্ট ফাইলে:

  1. একটি workflowResourceDefinitions নির্দিষ্ট করুন এবং এটিকে একটি আইডি বরাদ্দ করুন। workflowResourceDefinitions হল এমন একটি কাঠামো যা কাস্টম রিসোর্সের ডেটা টাইপ এবং বিষয়বস্তু সংজ্ঞায়িত করে। workflowResourceDefinitions মধ্যে, আপনি কাস্টম রিসোর্স তৈরি করে এমন পৃথক ক্ষেত্রগুলি নির্দিষ্ট করেন, এই উদাহরণে field_1 এবং field_2 বলা হয়।

  2. ধাপের কোডে একটি ফাংশনের নাম হিসেবে একটি providerFunction উল্লেখ করুন। প্রয়োজনে providerFunction প্রকৃত কাস্টম রিসোর্স কন্টেন্ট পুনরুদ্ধার করে।

    JSON সম্পর্কে

    {
        "workflowResourceDefinitions": [
            {
                "id": "resource_id",
                "name": "Custom Resource",
                "fields": [
                    {
                        "selector": "field_1",
                        "name": "Field 1",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    },
                    {
                        "selector": "field_2",
                        "name": "Field 2",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    }
                ],
                "providerFunction": "onExecuteResourceAsValuesFunction"
            }
        ]
    }
    
  3. outputs[] তে, একটি আউটপুট ভেরিয়েবল নির্দিষ্ট করুন যা resourceValues ​​প্রদান করে। cardinality মান অবশ্যই SINGLE হতে হবে।

    JSON সম্পর্কে

    {
        "outputs": [
            {
                "id": "resource_data",
                "description": "Resource Data",
                "cardinality": "SINGLE",
                "dataType": {
                    "resourceValues": {
                        "value1": "value one"
                    }
                }
            }
        ]
    }
    

এখানে একটি সম্পূর্ণ ম্যানিফেস্ট ফাইল রয়েছে যা একটি কাস্টম রিসোর্স সংজ্ঞায়িত করে:

JSON সম্পর্কে

{
    "timeZone": "America/Los_Angeles",
    "exceptionLogging": "STACKDRIVER",
    "runtimeVersion": "V8",
    "addOns": {
        "common": {
            "name": "Calculator",
            "logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
            "useLocaleFromApp": true
        },
        "flows": {
            "workflowElements": [
                {
                    "id": "getResourceData",
                    "state": "ACTIVE",
                    "name": "Get Resource by ID",
                    "description": "Get Resource by ID",
                    "workflowAction": {
                        "outputs": [
                            {
                                "id": "resource_data",
                                "description": "Resource Data",
                                "cardinality": "SINGLE",
                                "dataType": {
                                    "resourceValues": {
                                        "value1": "value one"
                                    }
                                }
                            }
                        ],
                        "onConfigFunction": "onConfigResourceFunction",
                        "onExecuteFunction": "onExecuteResourceFunction"
                    }
                }
            ],
            "workflowResourceDefinitions": [
                {
                    "id": "resource_id",
                    "name": "Custom Resource",
                    "fields": [
                        {
                            "selector": "field_1",
                            "name": "Field 1",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        },
                        {
                            "selector": "field_2",
                            "name": "Field 2",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        }
                    ],
                    "providerFunction": "onExecuteResourceAsValuesFunction"
                }
            ]
        }
    }
}

কোডটি সম্পাদনা করুন

অ্যাপ্লিকেশন কোডে, providerFunction প্রয়োগ করুন, যা এই উদাহরণে onExecuteResourceAsValuesFunction() নামে পরিচিত, যা কাস্টম রিসোর্সকে JSON হিসাবে সংজ্ঞায়িত করে এবং ফেরত দেয়, এখানে resourceJSON হিসাবে বিমূর্ত করা হয়েছে:

অ্যাপস স্ক্রিপ্ট

function onExecuteResourceAsValuesFunction() {
  var field_1 = "value 1";
  var field_2 = "value 2";
  var resourceJSON = JSON.stringify({
    "field_1": field_1,
    "field_2": field_2,
  });
  return {
    "hostAppAction": {
      "workflowAction": {
        "returnOutputVariablesAction": {
          "variableValues": [{
            "variableId": "resource_data",
            "variableData": {
              "resourceValues" : [ resourceJSON ]
            }
          }]
        }
      }
    }
  };
}