این راهنما نحوه ایجاد یک متغیر پویا را توضیح میدهد.
در صورت امکان، یک متغیر باید به صورت ایستا در فایل مانیفست به عنوان یک متغیر ورودی یا خروجی تعریف شود. با این حال، برخی موقعیتها به متغیری نیاز دارند که فقط هنگام پیکربندی جریان توسط کاربر قابل تعریف باشد زیرا ماهیت ورودی متفاوت است. به عنوان مثال، تعداد سوالات و پاسخها (و محتوای آنها) برای یک فرم گوگل تا زمانی که یک فرم خاص در طول پیکربندی جریان انتخاب نشود، قابل تعیین نیست.
متغیرهای پویا با امکان تعریف ورودی که مجموعهای پویا از خروجیها را در فایل مانیفست و در کد هر مرحله تولید میکند، این موارد را در نظر میگیرند.
متغیر خروجی را در فایل مانیفست تعریف کنید
در فایل مانیفست، مراحل زیر را دنبال کنید:
در
inputs[]، یک متغیر ورودی مشخص کنید که یک مقدار ورودی پویا را بپذیرد.در
outputs[]، یک متغیر خروجی مشخص کنید که مجموعهای پویا از متغیرهای خروجی را برمیگرداند. به این خروجی،dataTypeبرابر با"workflowResourceDefinitionId": "dynamic_resource_id"بدهید.یک منبع سفارشی برای مدیریت متغیر پویا تعریف کنید.
workflowResourceDefinitionsبا"resourceType": "DYNAMIC"و"providerFunction": "onDynamicProviderFunction"مشخص کنید.idباید باworkflowResourceDefinitionIdتنظیم شده درoutputs[]مطابقت داشته باشد. برای کسب اطلاعات بیشتر در مورد منابع سفارشی، به بخش تعریف یک منبع سفارشی مراجعه کنید.dynamicResourceDefinitionProviderبرابر با نام تابع مربوطه در کد مرحله قرار دهید، در این مثالonDynamicDefinitionFunction()، که یک کارت پیکربندی را تعریف و برمیگرداند که یک مقدار ورودی پویا را میپذیرد و یک منبع سفارشی را برمیگرداند.
جیسون
"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تنظیم شده در فایل مانیفست مطابقت داشته باشد. این ویجت ورودی پویا به کاربران اجازه میدهد هنگام پیکربندی جریان خود، مانند انتخاب یک فرم گوگل، یک متغیر پویا تنظیم کنند. -
onDynamicVariableExecuteFunction() که دادههای متغیر پویا را هنگام اجرای مرحله به عنوان خروجی برمیگرداند. نام این تابع باید با مقدارonExecuteFunction() در فایل مانیفست مطابقت داشته باشد.variableIdتابعreturnOutputVariablesActionباید باidمتغیر خروجی تنظیم شده در فایل مانیفست مطابقت داشته باشد. منبع پویا در شیء رویداد جریان درe.workflow.resourceFieldsDefinitionRetrievalیافت میشود. ورودی نمیتواند به متغیرها ارجاع دهد زیرا همه ورودیهای یک منبع پویا باید در زمان پیکربندی در دسترس باشند. - تابع
onDynamicDefinitionFunction()دادههای متغیر پویا را از شیء رویداد جریان، بهویژهresourceFieldsDefinitionRetrieval، بازیابی میکند وresourceFieldsDefinitionRetrievedActionرا برمیگرداند که دادهها را در قالب JSON قابل استفاده به عنوان خروجی برای مراحل بعدی ارائه میدهد.resourceIdباید باidیک آیتم در آرایهworkflowResourceDefinitions[]که در فایل مانیفست تنظیم شده است، مطابقت داشته باشد. onDynamicProviderFunction()متغیر پویا را از شیء رویداد جریان درe.workflow.resourceRetrieval.resourceReference.resourceIdبازیابی میکند و JSON را به عنوان خروجی برای مراحل بعدی برمیگرداند.
اسکریپت برنامهها
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",
})
}
}
}
};
}
مباحث مرتبط
- متغیرهای ورودی
- اعتبارسنجی یک متغیر ورودی
- متغیرهای خروجی
- تعریف منبع سفارشی
- ثبت فعالیتها و خطاها
- شیء رویداد جریان