इस गाइड में डाइनैमिक वैरिएबल बनाने का तरीका बताया गया है.
जब भी मुमकिन हो, वैरिएबल को मेनिफ़ेस्ट फ़ाइल में स्टैटिक तौर पर तय किया जाना चाहिए. इसे इनपुट या आउटपुट वैरिएबल के तौर पर तय किया जाना चाहिए. हालांकि, कुछ स्थितियों में ऐसे वैरिएबल की ज़रूरत होती है जिसे सिर्फ़ तब तय किया जा सकता है, जब उपयोगकर्ता फ़्लो को कॉन्फ़िगर करता है. ऐसा इसलिए, क्योंकि इनपुट का टाइप अलग-अलग होता है. उदाहरण के लिए, Google फ़ॉर्म के लिए सवालों और जवाबों की संख्या (और उनका कॉन्टेंट) तब तक तय नहीं की जा सकती, जब तक फ़्लो कॉन्फ़िगरेशन के दौरान कोई फ़ॉर्म नहीं चुना जाता.
डाइनैमिक वैरिएबल की मदद से, इन मामलों को ध्यान में रखा जाता है. इनकी मदद से, ऐसा इनपुट तय किया जा सकता है जो मेनिफ़ेस्ट फ़ाइल और चरण के कोड में डाइनैमिक आउटपुट का सेट जनरेट करता है.
मेनिफ़ेस्ट फ़ाइल में आउटपुट वैरिएबल तय करना
मेनिफ़ेस्ट फ़ाइल में, यह तरीका अपनाएं:
inputs[]में, ऐसा इनपुट वैरिएबल तय करें जो डाइनैमिक इनपुट वैल्यू स्वीकार करता हो.outputs[]में, ऐसा आउटपुट वैरिएबल तय करें जो आउटपुट वैरिएबल का डाइनैमिक सेट दिखाता हो. इस आउटपुट कोdataTypeका"workflowResourceDefinitionId": "dynamic_resource_id"दें.डाइनैमिक वैरिएबल को मैनेज करने के लिए, कस्टम रिसॉर्स तय करें.
"resourceType": "DYNAMIC"और"providerFunction": "onDynamicProviderFunction"के साथworkflowResourceDefinitionsतय करें.id,outputs[]में सेट किए गएworkflowResourceDefinitionIdसे मेल खाना चाहिए. कस्टम संसाधनों के बारे में ज़्यादा जानने के लिए, कस्टम संसाधन तय करना लेख पढ़ें.dynamicResourceDefinitionProviderको चरण के कोड में मौजूद, मिलते-जुलते फ़ंक्शन के नाम पर सेट करें. इस उदाहरण में,onDynamicDefinitionFunction()ऐसा फ़ंक्शन है जो कॉन्फ़िगरेशन कार्ड को तय करता है और उसे दिखाता है. यह फ़ंक्शन, डाइनैमिक इनपुट वैल्यू को स्वीकार करता है और कस्टम संसाधन दिखाता है.
JSON
"flows": {
"workflowElements" : [{
"id": "getDynamicVariable",
"state": "ACTIVE",
"name": "Get Dynamic Variable",
"description": "Get Dynamic Variable",
"workflowAction": {
"inputs": [
{
"id": "dynamic_resource_input",
"description": "Dynamic Resource Input",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "dynamic_resource_output",
"description": "Dynamic Data",
"cardinality": "SINGLE",
"dataType": {
"resourceType": {
"workflowResourceDefinitionId": "dynamic_resource_id"
}
}
}
],
"onConfigFunction": "onDynamicVariableConfigFunction",
"onExecuteFunction": "onDynamicVariableExecuteFunction"
}
}],
"workflowResourceDefinitions": [{
"id": "dynamic_resource_id",
"name": "Dynamic Resource",
"providerFunction": "onDynamicProviderFunction",
"resourceType" : "DYNAMIC"
}],
"dynamicResourceDefinitionProvider" : "onDynamicDefinitionFunction",
}
कोड में आउटपुट वैरिएबल तय करना
इस चरण के कोड में ये फ़ंक्शन शामिल हैं:
onDynamicVariableConfigFunction(), जो डाइनैमिक इनपुट विजेट के साथ कॉन्फ़िगरेशन कार्ड बनाता है और उसे दिखाता है. इस फ़ंक्शन का नाम, मेनिफ़ेस्ट फ़ाइल में मौजूदonConfigFunction()की वैल्यू से मेल खाना चाहिए. डाइनैमिक इनपुट विजेट का नाम, मेनिफ़ेस्ट फ़ाइल में सेट किए गएidसे मेल खाना चाहिए. इस डाइनैमिक इनपुट विजेट की मदद से उपयोगकर्ता, फ़्लो को कॉन्फ़िगर करते समय डाइनैमिक वैरिएबल सेट कर सकते हैं. जैसे, Google फ़ॉर्म चुनना.onDynamicVariableExecuteFunction(), जो चरण के चलने पर डाइनैमिक वैरिएबल डेटा को आउटपुट के तौर पर दिखाता है. इस फ़ंक्शन का नाम, मेनिफ़ेस्ट फ़ाइल में मौजूदonExecuteFunction()की वैल्यू से मेल खाना चाहिए.returnOutputVariablesActionकेvariableIdकी वैल्यू, मेनिफ़ेस्ट फ़ाइल में सेट किए गए आउटपुट वैरिएबल केidसे मेल खानी चाहिए. डाइनैमिक संसाधन, फ़्लो इवेंट ऑब्जेक्ट मेंe.workflow.resourceFieldsDefinitionRetrievalपर मौजूद होता है. इनपुट, वैरिएबल का रेफ़रंस नहीं दे सकता, क्योंकि डाइनैमिक संसाधन के सभी इनपुट, कॉन्फ़िगरेशन के समय उपलब्ध होने चाहिए.onDynamicDefinitionFunction(), जो फ़्लो इवेंट ऑब्जेक्ट से डाइनैमिक वैरिएबल डेटा को फ़ेच करता है. खास तौर पर,resourceFieldsDefinitionRetrievalसे औरresourceFieldsDefinitionRetrievedActionको दिखाता है. यह बाद के चरणों के लिए, इस्तेमाल किए जा सकने वाले JSON फ़ॉर्मैट में डेटा उपलब्ध कराता है.resourceId, मेनिफ़ेस्ट फ़ाइल में सेट किए गएworkflowResourceDefinitions[]ऐरे में मौजूद किसी आइटम केidसे मेल खाना चाहिए.onDynamicProviderFunction(), जोe.workflow.resourceRetrieval.resourceReference.resourceIdपर मौजूद फ़्लो इवेंट ऑब्जेक्ट से डाइनैमिक वैरिएबल को वापस लाता है. साथ ही, बाद के चरणों के लिए JSON को आउटपुट के तौर पर दिखाता है.
Apps Script
function onDynamicVariableConfigFunction() {
var card = {
"sections": [
{
"widgets": [
{
"textInput": {
"name": "dynamic_resource_input",
"label": "Dynamic Resource Input",
}
},
]
}
]
};
return {
"action": {
"navigations": [{
"push_card": card
}]
}
};
}
function onDynamicVariableExecuteFunction(){
var dynamic_resource_id = uuidv4();
return {
"hostAppAction": {
"workflowAction": {
"returnOutputVariablesAction": {
"variableValues": [{
"variableId": "dynamic_resource_output",
"variableData": {
"resourceReferences" : [ dynamic_resource_id ]
}
}]
}
}
}
};
}
function onDynamicDefinitionFunction(e) {
var input_value = e.workflow.resourceFieldsDefinitionRetrieval.inputs.dynamic_resource_input.stringValues[0];
// input_value == "dynamic_resource_input"
return {
"hostAppAction": {
"workflowAction": {
"resourceFieldsDefinitionRetrievedAction": {
"dynamicResourceDefinitions": [{
"resourceId": "dynamic_resource_id",
"fields": [{
"selector": "question_1",
"displayText": "Question 1"
},{
"selector": "question_2",
"displayText": "Question 2"
},{
"selector": "question_3",
"displayText": "Question 3"
}]
}]
}
}
}
};
}
function onDynamicProviderFunction(e) {
var resourceId = e.workflow.resourceRetrieval.resourceReference.resourceId;
// resourceId == uuidv4();
var workflowResourceDefinitionId = e.workflow.resourceRetrieval.resourceReference.resourceType.workflowResourceDefinitionId;
// workflowResourceDefinitionId == "dynamic_resource_id"
return {
"hostAppAction": {
"workflowAction": {
"resourceRetrievedAction": {
"resourceJson": JSON.stringify({
"question_1": "Answer 1",
"question_2": "Answer 2",
"question_3": "Answer 3",
})
}
}
}
};
}
मिलते-जुलते विषय
- इनपुट वैरिएबल
- इनपुट वैरिएबल की पुष्टि करना
- आउटपुट वैरिएबल
- कस्टम संसाधन तय करना
- गतिविधि और गड़बड़ियों को लॉग करना
- फ़्लो इवेंट ऑब्जेक्ट