يوضّح هذا الدليل كيفية تحديد موارد مخصّصة في Google Workspace Flows.
الموارد المخصّصة هي بنى بيانات مخصّصة يمكنك تحديدها لتجميع عدة متغيرات معًا. على سبيل المثال، لإنشاء عميل محتمل في نظام إدارة علاقات العملاء، مرِّر موردًا مخصّصًا يحتوي على عنوان بريد إلكتروني وعنوان شارع واسم.
في ما يلي طريقتان لتحديد الموارد المخصّصة:
- كمرجع: عند إخراج مورد مخصّص كمرجع، يمكنك إرجاع المورد المخصّص باستخدام معرّفه بدلاً من كائن المورد المخصّص الكامل. يؤدي ذلك إلى تحسين الأداء من خلال تقليل البيانات المنقولة بين خطوات سير العمل. عندما تتطلّب البيانات عمليات بحث ثانوية، يكون عرض رقم تعريفها مفيدًا لإجراء عمليات البحث هذه.
- كقيمة: استخدِم هذه الطريقة عندما يجب استرداد البيانات أثناء التنفيذ، أو عندما يكون المورد المخصّص صغيرًا ولا يحتوي على بيانات حساسة.
إخراج مرجع لمورد مخصّص
من خلال إخراج مرجع لمورد مخصّص، يمكنك عرض المورد المخصّص حسب معرّفه بدلاً من عرض كائن المورد المخصّص الكامل. إذا كان أحد الموارد المخصّصة كبيرًا أو معقّدًا، سيؤدي تمرير المعرّف فقط إلى تحسين الأداء من خلال تقليل البيانات المنقولة بين خطوات سير العمل.
لعرض مرجع لمورد مخصّص، عدِّل ملف البيان الخاص بالخطوة والرمز.
تعديل ملف البيان
في ملف البيان:
حدِّد
workflowResourceDefinitionsوعيِّن لهidومصفوفةfields[]وproviderFunction. workflowResourceDefinitionsهي بنية تحدّد أنواع البيانات ومحتوى المورد المخصّص.ضمن مصفوفة
fields[]، يمكنك تحديد الحقول الفردية التي تشكّل المورد المخصّص، والذي يُطلق عليه في هذا المثالfield_1وfield_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": "onMessageResourceFunction" } ] }في
outputs[]، حدِّد متغيّر إخراج يعرض مجموعة ديناميكية من متغيّرات الإخراج. يحتوي متغيّر الإخراج علىdataTypeمع السمةresourceType. يجب أن تكون قيمةcardinalityهي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"
}
]
}
}
}
تعديل الرمز البرمجي
في رمز التطبيق:
نفِّذ
providerFunction، الذي يُطلق عليهonMessageResourceFunction()في هذا المثال، والذي يسترد محتوى الموارد المخصّصة عند الحاجة. تتلقّى هذه السمة الإدخال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, }) } } } }; }يجب أن تعرض دالة الموفّر قيمة المورد المخصّص من خلال استردادها باستخدام آلية مناسبة، مثل استدعاء واجهة برمجة تطبيقات أو قراءة قاعدة بيانات.
لاسترداد مورد مخصّص وعرضه حسب معرّفه، يجب عرضه على النحو التالي:
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، يمكنك تحديد ناتج إحدى الخطوات.
لعرض مورد مخصّص كقيمة، عدِّل ملف البيان والرمز البرمجي للخطوة.
تعديل ملف البيان
في ملف البيان:
حدِّد
workflowResourceDefinitionsوأعطِه معرّفًا.workflowResourceDefinitionsهو بنية تحدّد أنواع البيانات ومحتوى المورد المخصّص. ضمنworkflowResourceDefinitions، يمكنك تحديد الحقول الفردية التي تشكّل المورد المخصّص، والتي تُسمى في هذا المثالfield_1وfield_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" } ] }في
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 ]
}
}]
}
}
}
};
}
مواضيع ذات صلة
- متغيّرات الإدخال
- التحقّق من صحة متغيّر إدخال
- متغيّرات الإخراج
- تسجيل النشاط والأخطاء
- عنصر حدث سير العمل