इस गाइड में, डाइनैमिक वैरिएबल बनाने का तरीका बताया गया है.
जब भी मुमकिन हो, वैरिएबल को मेनिफ़ेस्ट फ़ाइल में स्टैटिक तौर पर इस तरह से तय किया जाना चाहिए: इनपुट वैरिएबल, आउटपुट वैरिएबल, या कस्टम संसाधन. हालांकि, कुछ स्थितियों में ऐसे वैरिएबल की ज़रूरत होती है जिसे सिर्फ़ तब तय किया जा सकता है, जब उपयोगकर्ता फ़्लो को कॉन्फ़िगर करता है. ऐसा इसलिए, क्योंकि इनपुट का टाइप अलग-अलग होता है. उदाहरण के लिए, 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": "INTEGER"
}
}
],
"outputs": [
{
"id": "dynamic_resource_output",
"description": "Dynamic Data",
"cardinality": "SINGLE",
"dataType": {
"resourceType": {
"workflowResourceDefinitionId": "resource_definition_1"
}
}
}
],
"onConfigFunction": "onDynamicVariableConfigFunction",
"onExecuteFunction": "onDynamicVariableExecuteFunction"
}
}],
"workflowResourceDefinitions": [{
"id": "resource_definition_1",
"name": "Dynamic Resource",
"providerFunction": "onDynamicProviderFunction",
"resourceType" : "DYNAMIC"
}],
"dynamicResourceDefinitionProvider" : "onDynamicDefinitionFunction",
}
कोड में आउटपुट वैरिएबल तय करना
चरण के कोड में ये फ़ंक्शन शामिल हैं:
onDynamicVariableConfigFunction, जो डाइनैमिक इनपुट विजेट के साथ कॉन्फ़िगरेशन कार्ड बनाता है और उसे दिखाता है. इस फ़ंक्शन का नाम, मेनिफ़ेस्ट फ़ाइल में मौजूदonConfigFunctionकी वैल्यू से मेल खाना चाहिए. डाइनैमिक इनपुट विजेट का नाम, मेनिफ़ेस्ट फ़ाइल में सेट किए गएidसे मेल खाना चाहिए. इस डाइनैमिक इनपुट विजेट की मदद से उपयोगकर्ता, अपने चरण को कॉन्फ़िगर करते समय डाइनैमिक वैरिएबल सेट कर सकते हैं. जैसे, Google फ़ॉर्म चुनना.onDynamicVariableExecuteFunction, जो चरण के चलने पर डाइनैमिक वैरिएबल का डेटा आउटपुट के तौर पर दिखाता है. इस फ़ंक्शन का नाम, मेनिफ़ेस्ट फ़ाइल मेंonExecuteFunctionकी वैल्यू से मेल खाना चाहिए.returnOutputVariablesActionमें मौजूदvariableDataकी कुंजी, मेनिफ़ेस्ट फ़ाइल में सेट किए गए आउटपुट वैरिएबलidसे मेल खानी चाहिए. डाइनैमिक संसाधन, इवेंट ऑब्जेक्ट मेंe.workflow.resourceFieldsDefinitionRetrievalपर मौजूद है. इनपुट, वैरिएबल का रेफ़रंस नहीं दे सकता, क्योंकि डाइनैमिक संसाधन के सभी इनपुट, कॉन्फ़िगरेशन के समय उपलब्ध होने चाहिए.onDynamicDefinitionFunction, जो इवेंट ऑब्जेक्ट से डाइनैमिक वैरिएबल डेटा को फिर से हासिल करता है. खास तौर पर,resourceFieldsDefinitionRetrievalसे औरresourceFieldsDefinitionRetrievedActionदिखाता है. यह बाद के चरणों के लिए आउटपुट वैरिएबल का नाम देता है. साथ ही, यह सिलेक्टर भी देता है, ताकिonDynamicProviderFunctionहर आउटपुट वैरिएबल को उससे जुड़ी वैल्यू दे सके.resourceId, मेनिफ़ेस्ट फ़ाइल में सेट किए गएworkflowResourceDefinitions[]ऐरे में मौजूद किसी आइटम केidसे मेल खाना चाहिए.onDynamicProviderFunction, जोresourceIdऔरworkflowResourceDefinitionIdको ऐक्सेस करके, कुंजियों के तौर पर सिलेक्टर का इस्तेमाल करके, हर आउटपुट वैरिएबल के लिए वैल्यू उपलब्ध कराता है.
Apps Script
function onDynamicVariableConfigFunction() {
let section = CardService.newCardSection()
.addWidget(
CardService.newTextInput()
.setFieldName("dynamic_resource_input")
.setTitle("Dynamic Resource Input")
.setHint("Enter an integer value between 1 and 3 (inclusive) for the corresponding number of output variables")
);
const card = CardService.newCardBuilder()
.addSection(section)
.build();
return card;
}
function onDynamicDefinitionFunction(e) {
console.log("Payload in onDynamicDefinitionFunction: ", JSON.stringify(e));
var input_value = e.workflow.resourceFieldsDefinitionRetrieval.inputs.dynamic_resource_input.integerValues[0];
let resourceDefinitions = AddOnsResponseService.newDynamicResourceDefinition()
.setResourceId("resource_definition_1")
.addResourceField(
AddOnsResponseService.newResourceField()
.setSelector("question_1")
.setDisplayText("Question 1")
);
if (input_value == 2 || input_value == 3) {
resourceDefinitions = resourceDefinitions
.addResourceField(
AddOnsResponseService.newResourceField()
.setSelector("question_2")
.setDisplayText("Question 2")
);
}
if (input_value == 3) {
resourceDefinitions = resourceDefinitions
.addResourceField(
AddOnsResponseService.newResourceField()
.setSelector("question_3")
.setDisplayText("Question 3")
);
}
let workflowAction = AddOnsResponseService.newResourceFieldsDefinitionRetrievedAction()
.addDynamicResourceDefinition(resourceDefinitions);
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
let renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
function onDynamicVariableExecuteFunction(e) {
console.log("Payload in onDynamicVariableExecuteFunction: ", JSON.stringify(e));
let workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.setVariableDataMap({
"dynamic_resource_output": AddOnsResponseService.newVariableData()
.addResourceReference("my_dynamic_resource_id")
});
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
let renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
function onDynamicProviderFunction(e) {
console.log("Payload in onDynamicProviderFunction: ", JSON.stringify(e));
// resourceId == "my_dynamic_resource_id"
var resourceId = e.workflow.resourceRetrieval.resourceReference.resourceId;
// workflowResourceDefinitionId == "resource_definition_1"
var workflowResourceDefinitionId = e.workflow.resourceRetrieval.resourceReference.resourceType.workflowResourceDefinitionId;
const workflowAction = AddOnsResponseService.newResourceRetrievedAction()
.setResourceData(
AddOnsResponseService.newResourceData()
.addVariableData("question_1", AddOnsResponseService.newVariableData().addStringValue("Answer 1"))
.addVariableData("question_2", AddOnsResponseService.newVariableData().addStringValue("Answer 2"))
.addVariableData("question_3", AddOnsResponseService.newVariableData().addStringValue("Answer 3"))
);
const hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
const renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
मिलते-जुलते विषय
- इनपुट वैरिएबल
- इनपुट वैरिएबल की पुष्टि करना
- आउटपुट वैरिएबल
- कस्टम संसाधन तय करना
- गतिविधि और गड़बड़ियों को लॉग करना
- Workspace Studio के इवेंट ऑब्जेक्ट