В этом руководстве объясняется, как создать динамическую переменную.
По возможности переменная должна быть статически определена в файле манифеста как входная или выходная. Однако в некоторых ситуациях требуется переменная, которую можно определить только при настройке потока пользователем, поскольку характер входных данных может меняться. Например, количество вопросов и ответов (и их содержание) для Google Forms невозможно определить, пока не будет выбрана конкретная форма при настройке потока.
Динамические переменные учитывают эти случаи, позволяя вам определить входные данные, которые создают динамический набор выходных данных в файле манифеста и в коде шага.
Определить выходную переменную в файле манифеста
В файле манифеста выполните следующие действия:
В
inputs[]укажите входную переменную, которая принимает динамическое входное значение.В
outputs[]укажите выходную переменную, которая возвращает динамический набор выходных переменных. Для этого выходного значения укажите типdataType"workflowResourceDefinitionId": "dynamic_resource_id".Определите пользовательский ресурс для обработки динамической переменной. Укажите
workflowResourceDefinitionsс"resourceType": "DYNAMIC"и"providerFunction": "onDynamicProviderFunction".idдолжен соответствоватьworkflowResourceDefinitionIdзаданному вoutputs[]. Подробнее о пользовательских ресурсах см. в разделе Определение пользовательского ресурса .Задайте для
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()в файле манифеста.variableIdreturnOutputVariablesActionдолжен соответствовать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",
})
}
}
}
};
}
Похожие темы
- Входные переменные
- Проверить входную переменную
- Выходные переменные
- Определить пользовательский ресурс
- Журнал активности и ошибок
- Объект события потока