خطوات تحرير البيانات
توفر خطوات تحرير البيانات منطقة تنسيق حرة يمكنك فيها تحديد أوامر للتحكم في معالجة السكريبت الخاص بك.
أدخل أوامر كتابة السكريبت في حقل تحرير نص البيانات. انقر الأيقونة المجاورة لفتح إطار يوفر مساحة أكبر لتحديد خطوة تحرير البيانات.
بوجه عام، تعتبر الصياغة المتوافرة في عملية تحرير البيانات مماثلة للأوامر المتاحة داخل أنواع الخطوات الصريحة. مع ذلك، هناك عدد قليل من الأوامر المتوافرة فقط ضمن عملية تحرير البيانات. على سبيل المثال، الأمرين البنيويين: For وIf.
تتناول الموضوعات الواردة في هذا القسم تفاصيل الصياغة المدعومة في نوع خطوة تحرير بيانات.
المحتويات
تحديد واستدعاء الكائنات المستندة إلى المخطط
تحديد كائن عمل بمجموعة كائنات عمل
تعليقات
يمكنك إضافة تعليقات في السكريبت الخاص بك باستخدام رمز شرطة مائلة مزدوجة // في أول حرفين في خطوة تحرير البيانات. مثال:
//
// quit with error
//
if ("not(customer/securityEnabled)")
terminate with error (8000, 1001 %1="customer/id" %2='not allowed');
end-if;
المتغيرات المؤقتة
يمكن تحديد المتغيرات المؤقتة في كل أنواع السكريبتات. ويجب الإشارة لها ببادئة علامة دولار فردية ('$'). على الرغم من ذلك، تختلف طريقة عمل المتغيرات المؤقتة في أنواع السكريبتات المتنوعة:
-
في سكريبتات مساعد عمليات الأعمال (BPA)، تبقى المتغيرات المؤقتة ثابتة من سكريبت مساعد عمليات أعمال لآخر (ارجع إلى عبارتا Perform Script وTransfer Control)، مما يعني إمكانية استخدام المتغيرات الثابتة للاتصال بين سكريبتات مساعد عمليات الأعمال.
-
لا يمكن تمرير المتغيرات المؤقتة من سكريبت مساعد عمليات أعمال (BPA) إلى سكريبت خدمة أو سكريبت خوارزمية مساعدة. لا يمكن تمرير إلا عناصر منطقة البيانات فقط بين هذه الأنواع من السكريبتات.
-
في سكريبتات الخوارزمية المساعدة وسكريبتات الخدمة، تبقى المتغيرات المؤقتة ثابتة فقط طوال مدة السكريبت المعيَّن الذي قام بتحديد المتغير. وهذا يعني أنه لا يمكن تمرير المتغيرات الثابتة بين سكريبتات الخدمة وسكريبتات الخوارزميات المساعدة، ولا يمكن تمرير إلا المتغيرات العامة ومتغيرات السياق وعناصر منطقة البيانات فقط بين هذه الأنواع من السكريبتات.
تحديد / تهيئة / ضبط الإعدادات الافتراضية للمتغيرات المؤقتة
عند استخدام متغير مؤقت، يجب تحديده أو تهيئته بقيمة مناسبة قبل استخدامه. من الطرق المعتادة في تحديد أحد المتغيرات هي، نقل البيانات إليه في عبارة move، على سبيل المثال:
move "0" to $index;
بالنسبة لسكريبتات مساعد عمليات الأعمال (BPA)، كما هو مذكور بالأعلى، يمكن تمرير المتغيرات المؤقتة من سكريبت مساعد عمليات أعمال لآخر. لذلك، من الشائع الإشارة إلى متغير مؤقت في سكريبت مساعد عمليات أعمال يجب تهيئته بواسطة سكريبت مساعد عمليات أعمال سابق. لكن في حالة وجود أي سبب يمنع تهيئة متغير مؤقت بواسطة سكريبت مساعد عمليات أعمال سابق، فسوف تتسبب الإشارة إليه في حدوث خطأ. لذلك، من الأفضل استخدام عبارة default التي ستقوم بتهيئة المتغيرات المؤقتة التي لم يتم بالفعل إنشاؤها/تهيئتها.
-
سوف تقوم العبارة التالية بتهيئة المتغير المؤقت $InputAction – إذا لم تكن تمت تهيئة المتغير المؤقت بعد:
default $InputAction;
-
سوف تقوم العبارة التالية بتعيين قيمة المتغير المؤقت $InputAction على "read" – لكن إذا لم تكن تمت تهيئة المتغير بعد:
default $InputAction as 'read';
الكلمة الأساسية |
---|
إضافة |
مثل |
asError |
مساعد عمليات الأعمال (BPA) |
الفرع |
البيانات |
declareBO |
declareBS |
declareDA |
declareMap |
declareSS |
افتراضي |
حذف |
تحرير |
العنصر |
آخر |
end-edit |
end-for |
end-if |
خطأ |
تخطي |
تقييم |
fastAdd |
fastUpdate |
لأجل |
goto |
لو |
في |
invokeBO |
invokeBS |
invokeMap |
invokeSS |
التسمية |
المخطط |
نقل |
تنقل |
navigateAndReloadDashboard |
فارغ |
الصفحة |
performScript |
قائمة منبثقة |
قراءة |
readWithoutVersion |
استبدال |
حظر |
الهدف |
إنهاء |
إلى |
transferControl |
تحديث |
استخدام |
تحذير |
مع |
متغيرات السياق
لا تكون متغيرات السياق متاحة إلا داخل سكريبتات الخدمة. يكون متغير السياق متاحًا لمدة سكريبت الخدمة وكل ما يقوم باستدعائه. لذلك، يمكنك استخدام متغير سياق داخل سكريبت خدمة لنقل المعلومات إلى مخطط أو سكريبت خدمة بمستوى أدنى. ويجب الإشارة لها ببادئة علامة دولار مزدوجة ('$$').
تحديد/تهيئة/ضبط الإعدادات الافتراضية لمتغيرات السياق
عند استخدام متغير سياق، يجب تحديده أو تهيئته بقيمة مناسبة قبل استخدامه. من الطرق المعتادة في تحديد أحد المتغيرات هي، نقل البيانات إليه في عبارة move، على سبيل المثال:
move 'context variable' to $$contextVariable;
عبارة Move
تقوم عبارة Move بنسخ قيمة مصدر إلى هدف. يوضح الجدول التالي الخيارات المتعددة المدعومة في عبارة Move.
العبارة | وصف المثال | صياغة المثال |
---|---|---|
النقل إلى عنصر نقل "xpath" إلى "xpath"؛ ملاحظة: يكون تعبير مسار X محاطًا بعلامة اقتباس مزدوجة.
|
عبارة Move بمرجع مسار X بسيط. |
|
عبارة Move بدالة concatenate للمسار X. |
|
|
عبارة Move بدالة قبل substring-before للمسار X. |
|
|
عبارة Move بدالة substring-after للمسار X. |
|
|
عبارة Move بدالة substring للمسار X. |
|
|
النقل إلى عنصر نقل 'literal' إلى "xpath"؛ ملاحظة: تكون القيمة الحرفية محاطة بعلامة اقتباس مفردة.
|
عبارة Move باستخدام سلسلة حرفية. |
|
النقل إلى عنصر نقل 'Boolean' إلى "xpath"؛ |
عبارة Move بقيمة منطقية كسلسلة حرفية. |
|
نقل التعبير الذي تنتج عنه قيمة منطقية. لاحظ أنه تم وضع المرشح في المثال أدناه في عقدة مجموعة. |
|
|
النقل إلى مجموعة نقل "xpath" إلى "xpath"؛ |
نقل مجموعة عناصر من مجموعة لمجموعة أخرى. يطابق النظام المستوى الأولي لأسماء العناصر وأسماء المجموعات/القوائم من المخطط المصدر إلى المخطط الهدف. بالنسبة للقوائم والمجموعات، فإن الأسلوب الافتراضي هو نقل كل العناصر الموجودة في المجموعة/القائمة المصدر إلى المجموعة/القائمة الهدف (حتى وإن لم تكن محددة في المجموعة/القائمة الهدف). يمكن استخدام خدمة الأعمال F1-MoveByName لمزيد من التحكم متعدد المستويات على عملية النقل (دون الحاجة إلى تحديد كل عبارة نقل فردية). |
هذه العبارة مساوية للعبارة التالية:
|
النقل باستخدام متغير مؤقت |
عند النقل إلى متغير محلي مؤقت، لا يكون محاطًا بعلامة اقتباس مزدوجة. move "xpath" to $variable |
|
عند النقل من متغير مؤقت، يكون المتغير محاطًا بعلامة اقتباس مزدوجة. نقل "$variable" إلى “xpath”؛ |
|
|
النقل باستخدام متغير السياق نقل "xpath" إلى $$variable؛ نقل $$variable إلى “xpath”؛ |
تتم الإشارة إلى متغيرات السياق، المصدر أو الهدف، بدون أية علامات اقتباس مزدوجة. |
|
النقل باستخدام موقع ديناميكي نقل "xpath" | 'literal' لتقييم ("xpath" | $variable)؛ نقل تقييم ("xpath" | $variable) إلى "xpath" | $variable; |
تتيح لك عبارة evaluate اشتقاق نقل موقع المصدر أو الهدف ديناميكيًا من موقع عنصر مخطط أو متغير. |
|
تخطي النقل نقل تخطي ("xpath" | $variable) إلى "xpath" | $variable; |
لا يكون تخطي النقل متاحًا إلا لسكريبت الخوارزمية المساعدة وسكريبت الخدمة فقط. تقوم عبارة escape بالمسح الضوئي لقيمة النص المصدر لمحتوى HTML وتجاوزها؛ بمعنى، استبدال أية حروف مثل HTML بحروف خاصة تم تخطيها من عرض HTML. وبهذا الإجراء سيتم عرض النص كنص عادي عند عرضه كجزء من عنصر HTML. ملاحظة: لا يجب استخدام هذه الدالة إلا في حالة عرض النص كجزء من عنصر HTML ومن المتوقع أن يحتوي على حروف مثل حروف HTML أو حروف HTML أسوأ لا يجب عرضها كجزء من HTML. في حالة العرض بشكل غير صحيح باستخدام عنصر ليس من HTML، فسوف تكون حروف التخطي الخاصة، إن وجدت، مرئية كجزء من النص الخاص بك. ارجع إلى دالات وسمات مخطط واجهة المستخدم للحصول على مزيد من المعلومات حول كيفية تحديد عنصر لعرض محتوى HTML.
|
|
نقل القيم الخالية نقل خالٍ إلى "xpath"؛ |
يمكنك إزالة المعلومات من مستند مثيل XML من خلال الصياغة الخاصة بنقل "القيم الخالية". لاحظ أنه يمكنك تحديد إما اسم عقدة في تعبير المسار X أو اسم مجموعة. إذا حددت مجموعة، فسوف يتم حذف المجموعة وكل العناصر الفرعية من المعالجة. |
إزالة عقدة وكل العقد الفرعية لها:
إزالة كل العقد الفرعية لعقدة مجموعة باللاحقة '/*'.
|
عبارة Go To
تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة الانتقال. الصياغة هي goto label; حيث تمثل التسمية موقع آخر داخل حقل تحرير نص البيانات (المحدد بهذه التسمية) أو تمثل خطوة أخرى في السكريبت.
فيما يلي مثال على الانتقال إلى موقع آخر في نفس الخطوة المحددة بتسمية addSpouse.
if ("string(parm/spouse/name) != $BLANK")
goto addSpouse;
end-if;
addSpouse: invokeBO 'Person' using "parm/spouse" for add;
وفيما يلي مثال على الانتقال إلى خطوة مختلفة داخل نفس السكريبت. تسلسل الخطوة هو المرجع المستخدم كتسمية.
if ("string(parm/spouse/name) != $BLANK")
goto 110;
end-if;
.
.
.
110: invokeBO 'Person' using "parm/spouse" for add;
عبارة Conditional Branch
تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة Conditional Branch. الصياغة هي branch (“xpath”) goto label else label; حيث:
-
يجب تعيين شرط المسار X في عبارة branch على قيمة منطقية "صواب أو خطأ".
-
الأهداف لعبارات goto وelse هي تسميات تمثل موقع آخر في حقل تحرير نص البيانات (محددة بهذه التسمية) أو تمثل خطوة أخرى في السكريبت.
في الأمثلة التالية، يتم استخدام تسميات لأجل addSpouse وaddAccount
branch ("string(parm/spouse/name) != $BLANK") goto addSpouse else addAccount;
عبارة If
تتشابه عبارة IF مع عبارة conditional branch. يمكن استخدام أي منهما لبناء هيكل منطق السكريبت الخاص بك. اختياريًا، هذه العبارة يمكن أن تتضمن عبارة else ولكن يجب أن تنتهي بعبارة end-if.
الصياغة هي if (“xpath”) else end-if;. يجب تعيين شرط المسار X على قيمة منطقية "صواب أو خطأ". فيما يلي بعض الأمثلة.
مثال على احتواء المسار X على شرط منطقي بسيط.
if ("string(parm/spouse/name) != $BLANK")
//
// Create spouse since spouse name present
goto addSpouse;
else
//
// Create account without spouse
goto addAccount;
end-if;
مثال على احتواء المسار X على شرط مركب.
if ("string(parm/spouse/name) != $BLANK and string(parm/hasSpouse) = true or boolean(parm/requireSpouse)")
//
// Create spouse since spouse name present
goto addSpouse;
end-if;
مثال لمجموعة مكدسة من العبارات مستخدمة لتقييم قيم ممكنة متعددة لأحد الحقول.
if ("parm/rowCount = 0")
//
// no rows found
goto quit;
end-if;
if ("parm/rowCount = 1")
//
// one row found
goto process;
end-if;
if ("parm/rowCount > 1")
//
// more than one row found
goto quit;
end-if;
quit: terminate;
يوضح المسار X التالي قيمة منطقية على أساس وجود العقدة. في هذا المثال، في حالة وجود العقدة في مستند مثيل XML الجاري معالجته، فسوف يتم تعيين العبارة على القيمة "صواب". في حالة عدم وجود العنصر، يتم تعيين العبارة على القيمة "خطأ".
if ("boolean(parm/spouse/name)")
goto addSpouse;
else
//
// Create account without spouse
goto addAccount;
end-if;
if ("not(parm/spouse/name)")
//
// Create account without spouse
goto addAccount;
else
goto addSpouse;
end-if;
عبارة For
تقوم عبارة for بإنشاء قائمة بالعقد أو القيم حسب تعبير المسار X الخاص بك. إذا حددت عقدة قائمة فسوف تكون كل عقدة فرعية للقائمة، بالإضافة إلى محتوياتها، مُتاحة في الحلقة. إذا حددت عقدة فرعية بشكل مباشر، فلن تكون قائمة القيم متاحة إلا في الحلقة.
الصياغة هي for ($variable in "xpathList") end-for;. يجب تعيين شرط المسار X على قيمة منطقية "صواب أو خطأ".
وفيما يلي أمثلة على أساس هذا المخطط العينة:
<schema>
<SAList type="list">
<id/>
<balance/>
</SAList>
<SAContributor type="list">
<id/>
</SAContributor>
</schema>
مثال يحدد عقدة القائمة في تعبير المسارX حيث تكون كل العقد الفرعية متاحة للمعالجة.
move "0" to $AccountBalance;
move "0" to $index;
for ($SAList in "SAList")
move "$SAList/balance + $AccountBalance" to $AccountBalance;
//
// keep track of each SA contributing to the balance in the SA Contributor list
move "1 + $index" to $index;
move "$SAList/id" to "SAContributor[$index]/id";
end-for;
مثال يحدد عقدة فرعية داخل عقدة القائمة في تعبير المسار X. لا توجد قيم مُتاحة للمعالجة إلا قيم تلك العقدة فقط.
move "0" to $AccountBalance;
for ($SABalance in "SAList/balance")
move "$SABalance + $AccountBalance" to $AccountBalance;
end-for;
مثال يوضح إمكانية استخدام مرشح لتقييد الصفوف المحددة بواسطة حلقة for.
move "0" to $AccountDebitBalance;
for ($SAList in "SAList[Balance>0]")
move "$SAList/balance + $AccountDebitBalance" to $AccountDebitBalance;
end-for;
مثال يوضح استخدام مرشح عند تحديد العقد الفرعية.
move "0" to $AccountCreditBalance;
for ($SABalance in "SAList[Balance<0]/balance")
move "$SABalance + $AccountCreditBalance" to $AccountCreditBalance;
end-for;
معالجة القائمة
يقدم هذا القسم تفاصيل حول معالجة القوائم. تشير الأمثلة في هذا القسم إلى المخطط التالي:
<schema>
<parm type="group">
<name/>
</parm>
<Person type="group">
<names type="list">
<type/>
<name/>
</names>
</Person>
</schema>
الإشارة إلى عنصر قائمة. يمكنك نقل قيمة إلى مثيل قائمة معين من خلال الإشارة إلى عقدة تحديد في القائمة داخل مرشح ما. الصياغة هي move "xpath" to "xpathList[filter]/element"; مثال:
move "parm/name" to "Person/names[type='main']/name";
إنشاء مثيل قائمة جديد. مجموعة رموز خاصة يمكن استخدامها في عبارة move target للإشارة إلى مثيل قائمة جديد يجب إنشاؤه. يشير الرمز "+" إلى معالج السكريبت بوجود مثيل جديد لقائمة يجب تهيئته للعنصر الهدف. الصياغة هي move "xpath" to "+xpathList"; مثال:
move "parm/name" to "Person/+names/name";
حذف مثيل قائمة. يمكن حذف قيد قائمة XML من قاعدة البيانات عن طريق نقل سمة الإجراء 'حذف' إلى اسم لعنصر. لكي تقوم قاعدة بيانات بحذف قيد قائمة يتطلب سمة إجراء = "حذف" في عقدة هدف واتصال كائن عمل تحديث لاحق. الصياغة هي move 'delete' to "xpathList@action"); مثال:
if ("parm/action = 'd'")
move "0" to $index;
for ($CCList in "CCList")
move "1 + $index" to $index;
if ("$CCList/id = parm/id")
move 'delete' to "CCList[$index]@action";
goto update;
end-if;
end-for;
end-if;
يوضح ما يلي قيم XML الناتجة.
<root>
<CCList>
<id>9876538976</id>
<balance>309.98</balance>
</CCList>
<CCList action="delete">
<id>4321125899</id>
<balance>87.45</balance>
</CCList>
</root>
دالات معالجة القائمة
يوفر المسار X العديد من الدالات المفيدة في معالجة عناصر قائمة بما في ذلك count وsum وlast.
فيما يلي أمثلة على أساس مستند XML النموذجي التالي:
<xml>
<ft>
<type>bill</type>
<date>20100101</date>
<amt>30.30</amt>
<cat>tax</cat>
</ft>
<ft>
<type>adj</type>
<date>20100301</date>
<amt>20.20</amt>
<cat>int</cat>
</ft>
<ft>
<type>bill</type>
<date>20100201</date>
<amt>10.10</amt>
<cat>tax</cat>
</ft>
</xml>
فيما يلي مثال على دالة sum: الصياغة هي move "sum(xpathList/element)" to $variable; المثال يوضح مجموع الرصيد الإجمالي.
move "sum(ft/amt)" to $TotalBalance;
فيما يلي مثال على دالة sum باستخدام مرشح للحصول على إجمالي فرعي. يوضح المثال مجموع رصيد القيود التي لها فئة "الضريبة".
move "sum(ft[cat='tax']/amt)" to $TaxBalance;
فيما يلي مثال على count. الصياغة هي move "count(xpathList)" to $variable; يشرح المثال حساب عدد قيود المعاملة المالية في القائمة.
move "count(ft)" to $TranCount;
فيما يلي مثال على دالة "last"، والذي يُستخدم لتحديد موقع القيد الأخير. الصياغة هي move "last(xpathList)" to $variable; يشرح المثال المبلغ الأخير في قائمة المعاملة المالية.
move "ft[last()]/amt" to $LastAmount;
تحديد واستدعاء الكائنات المستندة إلى المخطط
يمكنك استدعاء كائن عمل أو خدمة عمل أو سكريبت خدمة في خطوة تحرير البيانات. لدعم الاستدعاء الديناميكي، يمكن تحديد اسم منطقة بيانات ديناميكية.
يمكن أن يكون المخطط الذي يتم تحديده مخطط كائن عمل (BO) أو مخطط خدمة أعمال (BS) أو مخطط سكريبت خدمة (SS) أو مخطط منطقة بيانات (DA) أو مخطط واجهة مستخدم. ستختلف عبارة declare بناءًا على نوع المخطط، ولكن الصياغة تكون متشابهة.
-
declareBO 'اسم كائن العمل' | $variable | "المسار X" كصياغة 'DynamicDataArea'؛
-
declareBS اسم خدمة الأعمال' | $variable | "xpath" كصياغة 'DynamicDataArea'؛
-
declareSS 'اسم سكريبت الخدمة' | $variable | "المسار X" كصياغة 'DynamicDataArea'؛
-
declareDA 'اسم منطقة البيانات' | $variable | "المسار X" كصياغة 'DynamicDataArea'؛
-
declareMap 'اسم المخطط' | $variable | "المسار X" كصياغة 'DynamicDataArea'؛
عند استدعاء كائن عمل أو خدمة أعمال أو سكريبت خدمة، يمكن تحديد اسم الكائن على أنه قيمة حرفية أو أن يكون قيمة موجودة في عنصر أو متغير. لكل استدعاء، يجب توفير مرجع مسارX إلى كل اسم مجموعة.
عند استدعاء كائن عمل، يجب وجود إجراء. الصياغة هي invokeBO 'BO Name' | $variable | "xpath" using "xpath" for action;. الإجراءات الصالحة كما يلي:
-
قراءة. سيقوم هذا الإجراء بقراءة العرض الحالي لبيانات كائن العمل.
-
إضافة. سيقوم هذا الإجراء بإضافة الكائن وقراءة العرض الناتج لكائن العمل وعرضه.
-
fastAdd. سيقوم هذا الإجراء بإضافة الكائن دون إجراء "قراءة" لاحقة لإظهار العرض الناتج لكائن العمل. يعد هذا الخيار أفضل من الإضافة لأغراض الأداء إن لم يكن هناك حاجة لإعادة قراءة السجلات.
-
تحديث. سيقوم هذا الإجراء بتحديث الكائن وقراءة العرض الناتج لكائن العمل وعرضه. يقوم هذا الإجراء بتنفيذ 'دمج' المعلومات المحددة في مستند XML لطلب عبارة invoke مع بيانات كائن العمل الموجود. يسمح استخدام هذا الإجراء بألا يشير السكريبت إلا للعناصر المتغيرة فقط.
-
fastUpdate. سيقوم هذا الإجراء بتحديث الكائن دون إجراء "قراءة" لاحقة لإظهار العرض الناتج لكائن العمل. يعد هذا الخيار أفضل من تحديث لأغراض الأداء إن لم يكن هناك حاجة لإعادة قراءة السجلات.
-
حذف. سيقوم هذا الإجراء بحذف الكائن.
-
استبدال. يمثل إجراء بديل لإجراء التحديث. يقوم إجراء الاستبدال باستبدال بيانات كائن العمل الموجودة تمامًا بالمعلومات الموجودة في مستند الطلب. عادةً يتم استخدام إجراء الاستبدال عند وجود كائن عمل يحتوي على قائمة لأنه من الأسهل استبدال كل مثيلات قائمة بدلاً من محاولة دمج قائمة، مما يتطلب منطق خاص من أجل حذف مثيل قائمة صراحة.
ملاحظة: يجب استخدام إجراء الاستبدال عند استخدام وظيفة مخطط واجهة مستخدم لأجل تحميل ملف القيم المفصولة بفاصلة (CSV).لاحظ: أن إجراء الاستبدال ليس مدعومًا حاليًا لأي كائن صيانة تتم صيانته في صفحة ’ثابتة‘ تستخدم قائمة العرض المجمع لإظهار كل السجلات في صفحة واحدة. إن العملة هي مثال على هذا النوع من الصفحات.
أمثلة:
invokeBO 'BusinessObject' using "dataArea" for fastAdd;
invokeBO $variableBO using "dataArea" for fastUpdate;
invokeBO "daName/boElement" using "dataArea" for replace;
تتشابه صياغة عبارات invoke لكل من خدمة أعمال وسكريبت خدمة. يتم تحديد خدمة الأعمال/سكريبت الخدمة بالإضافة إلى مرجع المسارX إلى اسم المجموعة:
-
استدعاء خدمة الأعمال 'BS Name' | $variable | "xpath" باستخدام "xpath"؛
-
استدعاء سكريبت الخدمة 'SS Name' | $variable | "xpath" باستخدام "xpath";
يستخدم المثال عبارة invokeBS لكن العبارات متشابهة بالنسبة لعبارة invokeSS.
invokeBS 'BusinessService' using "dataArea";
invokeBS $variableBS using "dataArea";
invokeBS "daName/bsElement" using "dataArea";
تحذيرات كائن العمل. لاحظ أنه بالنسبة لكتابة سكريبت مساعد عمليات الأعمال (BPA)، يمكن أن تشير عبارات invoke أيضًا إلى طريقة معالجة التحذيرات.
الصياغة | الوصف | الأمثلة |
---|---|---|
with warn asError |
يشير إلى أنه يجب التعامل مع التحذير كخطأ معروض في مخطط واجهة المستخدم. يمثل نص في شكل خطأ نصًا اختياريًا. |
|
with warn popup |
يشير إلى أنه يجب عرض التحذير في القائمة المنبثقة القياسية لإطار العمل. في هذا السيناريو، يتم عرض الزرين القياسيين "موافق" و"إلغاء" للمستخدم. إذا نقر المستخدم زر "موافق"، فيعني هذا أنه يجب متابعة المعالجة. إذا نقر المستخدم زر "إلغاء"، فيعني هذا أنه يجب عدم الاستمرار في المعالجة. هذا هو الإعداد الموصى به. |
|
with warn suppress |
يشير إلى أنه يجب حظر تحذير. تمثل القيمة الافتراضية في حالة عدم إضافة صياغة تحذير إلى عبارة invoke. |
|
بالنسبة لسكريبتات مساعد عمليات الأعمال، يجب وجود منطق بعد الاستدعاء لمعالجة الأخطاء والتحذيرات (في حالة استخدام with warn as popup). يتم تعيين متغير النظام $ WARNING على صواب إذا قام المستخدم بنقر الزر "إلغاء" في النافذة المنبثقة للتحذير. في حالة إظهار مخطط، يجب أن يعيد المنطق عرض المخطط (حيث ستتم إعادة عرض رسالة التحذير). يتيح هذا للمستخدم إمكانية إجراء تغييرات والحفظ مرة أخرى. في حالة عدم عرض أي مخطط قبل التحذير، يجب إنهاء المنطق.
يشير متغير النظام $ ERROR إلى تلقي خطأ. في حالة إظهار مخطط قبل الخطأ، يجب أن يقوم المنطق بإعادة عرض المخطط حيث سيتم إظهار الخطأ. في حالة عدم إظهار مخطط، يوفر المنتج سكريبت مساعد عمليات الأعمال F1–HandleErr الذي يجب استخدامه لعرض الخطأ. فيما يلي مثال على منطق معالجة أخطاء نموذجي.
invokeBO "F1-DetermineBo/output/bo" using "boSchema" for update with warn popup;
if ("$WARNING")
if ("map_schema/action = 'DEL'")
terminate;
else
goto maintMap;
end-if;
end-if;
if ("$ERROR")
if ("map_schema/action != 'DEL'")
goto maintMap;
else
transferControl 'F1-HandleErr';
end-if;
end-if;
النظام والمتغيرات العامة
توضح الجداول التالية النظام والمتغيرات العامة المتاحة لكتابة السكريبت.
متغيرات النظام - كل أنواع السكريبتات
متغيرات النظام التالية متاحة لكافة أنواع السكريبتات (سكريبتات الخدمة وسكريبتات الخوارزمية المساعدة وسكريبتات مساعد عمليات الأعمال).
المتغير | الوصف | مثال |
---|---|---|
$BLANK | يمثل عقدة فارغة. |
|
$CURRENT-DATE | يمثل التاريخ الحالي. بالنسبة لسكريبتات مساعد عمليات الأعمال، هذا هو تاريخ المستعرض. بالنسبة لسكريبتات الملقم، هذا هو تاريخ الملقم (وهو خاضع لمنطق تجاوز تاريخ النظام). |
|
$CURRENT-STD-DTTM | يمثل الوقت-التاريخ الحالي مُعبرًا عنه بالتوقيت القياسي (بمعنى بدون تعديلات للتوقيت الصيفي). |
|
$DEVICE-OS | يمثل نظام تشغيل الجهاز الخاص بالمستخدم. |
|
$DEVICE-BROWSER | يمثل مستعرض جهاز المستخدم. |
|
$DEVICE-DISPLAY-TYPE | يمثل نوع عرض شاشة جهاز المستخدم؛ ما إذا كان بحجم سطح المكتب أو متوسط أو صغير الحجم. قد تكون القيم الناتجة مثل oraDesktop وoraTablet وoraPhone. |
|
$DEVICE-INFO | توفر توليفة من الثلاث خصائص للجهاز (DEVICE-OS وDEVICE-BROWSER وDEVICE-DISPLAY-TYPE) ويتم فصل كل قيمة خاصية بفاصلة منقوطة. |
|
متغيرات النظام - سكريبتات مساعد عمليات الأعمال فقط
متغيرات النظام التالية تنطبق على / متاحة فقط لأنواع سكريبتات مساعد عمليات الأعمال.
المتغير | الوصف | مثال |
---|---|---|
$DOUBLE_QUOTE | يمثل علامة اقتباس مزدوجة. |
|
$SINGLE_QUOTE | يمثل فاصلة عليا. |
|
$SPACE | يحتوي على قيمة مسافة واحدة. |
|
$SYSTEM-DATE | يمثل تاريخ الملقم. لاحظ أن هذا التاريخ يتأثر بمنطق تجاوز تاريخ النظام) |
|
متغيرات النظام - سكريبتات الملقم فقط
متغيرات النظام التالية متاحة فقط / تنطبق على سكريبت الخدمة وأنواع سكريبتات الخوارزمية المساعدة.
المتغير | الوصف | مثال |
---|---|---|
$ADDITIONAL-IP-INFO | يتضمن طلب HTTP حقل عنوان "عنوان IP إضافي". يمكن تعميم هذا الحقل بواسطة عملية تنفيذ في حالة وجود بعض المعلومات متاحة في ملقم الوكيل أو موازن التحميل، مثل عنوان IP للمنشأ. |
|
$CURRENT-DTTM | يمثل الوقت-التاريخ الحالي. |
|
$F1-INSTALLATION-TIMEZONE | يمثل رمز المنطقة الزمنية المحدد في خيارات التركيب. |
|
$LANGUAGE | يمثل رمز اللغة الذي يستخدمه السكريبت. وعادةً تكون لغة المستخدم الافتراضية. |
|
$PROCESS-DATE | يمثل تاريخ العملية. يختلف تاريخ العملية عن التاريخ الحالي لأن تاريخ العملية سيبقى ثابتًا خلال مدة العملية الجاري تنفيذها. على سبيل المثال، إذا كان سكريبت خدمة يقوم بتخزين عدة كائنات عمل – تتم تهيئة تاريخ العملية في بداية تنفيذ سكريبت الخدمة وسوف يتم ضبط الإعدادات الافتراضية لكل كائن عمل على نفس تاريخ العملية. سوف يعكس التاريخ الحالي، خاصة وقت التاريخ الحالي، الوقت الفعلي للمعالجة. |
|
$PROCESS-DTTM | يمثل وقت-تاريخ العملية. لاحظ أنه تتم تهيئة تاريخ ووقت العملية في بداية عملية معينة ولن يعكس التاريخ والوقت الفعلي لتحديث ما. |
|
$REQUESTING-IP-ADDRESS | يمثل عنوان IP من طلب HTTP. لاحظ أنه إذا تم توجيه الطلب من خلال ملقم وكيل أو موازن تحميل، يكون عنوان IP هذا هو عنوان IP للوكيل أو موازن التحميل، ليس عنوان IP للمستخدم النهائي. للحصول على معلومات، ارجع إلى متغير $ADDITIONAL-IP-INFO. |
|
$USER | يمثل معرف المستخدم الخاص بالمستخدم الذي يقوم بتنفيذ السكريبت. |
بالنسبة لسكريبتات مساعد عمليات الأعمال التي تحتاج إلى معرفة معرف المستخدم الخاص بالمستخدم الحالي، ارجع إلى نصائح وتلميحات مفيدة. |
المتغيرات العامة
تمتلك كل من سكريبتات مساعد عمليات الأعمال وسكريبتات الخدمة صلاحية الوصول إلى القيم المحددة في السياق العام.
عندما يتم إطلاق سكريبت مساعد عمليات أعمال من واجهة المستخدم، تتم تهيئة هذه المتغيرات آليًا. ويمكن الإشارة إليها بعلامة دولار فردية أمام اسم الحقل. على سبيل المثال، إذا كان PER_ID هو متغير عام مدعوم، فيمكن الإشارة إلى $PER_ID في سكريبت مساعد عمليات الأعمال:
move "$PER_ID" to "schema/customerId";
بالنسبة لسكريبتات الخدمة، يمكن ألا تتم الإشارة للمتغيرات العامة إلا إذا تم استدعاء سكريبت الخدمة مباشرة من سكريبت مساعد عمليات الأعمال أو منطقة في بوابة. عندما يتم استدعاء سكريبت الخدمة من سكريبت مساعد العمليات الإجرائية أو منطقة البوابة فسوف يكون لديهم صلاحية وصول إلى مجموعة من متغيرات السياق العام ملء session. في واجهة المستخدم بالنسبة لسكريبت الخدمة، يجب أن تبدأ الحقول العامة بعلامتي دولار (بدلاً من واحدة مثل سكريبت مساعد عمليات الأعمال). على سبيل المثال، إذا كان PER_ID هو متغير سياق عام مدعوم، فيمكن الإشارة إلى $$PER_ID في سكريبت الخدمة.
move $$PER_ID to "schema/customerId";
عبارتا Perform Script وTransfer Control
تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة تنفيذ السكريبت ونوع خطوة تحويل التحكم. لا تنطبق هاتين إلا على سكريبتات مساعد عمليات الأعمال.
الصياغة | القيم الصالحة | تعليقات |
---|---|---|
performScript |
'BPA Script Name' | توفير السكريبت المطلوب تنفيذه صراحةً. |
$Variable | العثور على السكريبت المطلوب تنفيذه في متغير. | |
"المسار X" | العثور على السكريبت المطلوب تنفيذه في عنصر، مُشار إليه بالمسار X الخاص به. | |
transferControl |
مشابه لعبارة performScript |
تحديد كائن عمل بمجموعة كائنات عمل
هذه العبارة خاصة بسكريبتات مساعد عمليات الأعمال التي تخطط لاستخدام السكريبت الأساسي "المعالجة الرئيسية لصيانة كائن العمل" (F1–MainProc) لعبارات Generate Edit Map الخاصة به. يتوقع هذا السكريبت أن توجد البيانات المُعتاد عرضها في المخطط داخل علامة boGroup.
الصياغة | القيم الصالحة | تعليقات |
---|---|---|
declareBOWithBOGroup |
'BO Name' | توفير كائن العمل صراحةً. |
$Variable | العثور على كائن العمل في متغير. | |
"المسار X" | العثور على كائن العمل في عنصر، مُشار إليه بالمسار X الخاص به. |
يوضح الجدول التالي الصياغة الإضافية لهذه العبارة.
الصياغة | القيم الصالحة |
---|---|
as |
"اسم المخطط الديناميكي" |
أمثلة:
declareBOWithBOGroup 'BusinessObject' as 'newMapSchema';
declareBOWithBOGroup $variableBO as 'newMapSchema';
declareBOWithBOGroup "daName/boElement" as 'newMapSchema';
عبارة Invoke Map
تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة Invoke map. لا ينطبق هذا إلا على سكريبتات مساعد عمليات الأعمال.
الصياغة | القيم الصالحة | تعليقات |
---|---|---|
invokeMap |
"اسم المخطط" | توفير مخطط واجهة المستخدم صراحةً. |
$Variable | العثور على مخطط واجهة المستخدم في متغير. | |
"المسار X" | العثور على مخطط واجهة المستخدم في عنصر، مُشار إليه بالمسار X الخاص به. |
يوضح الجدول التالي الصياغة الإضافية لهذه العبارة.
الصياغة | القيم الصالحة | تعليقات |
---|---|---|
using |
"اسم مجموعة منطقة البيانات" | يشير إلى منطقة البيانات المطلوب المرور إليها إلى ومن الملقم عند عرض نموذج HTML المرتبط بالمخطط. |
target |
bpa |
|
page |
||
popup |
لمزيد من المعلومات حول قيم الهدف، ارجع إلى نوع خطوة Invoke map.
إذا تم تكوين مخطط واجهة المستخدم لإرجاع قيمة، يمكن تقييمها باستخدام المتغير $MAP-VALUE.
invokeMap 'UI Map' using "dataArea";
invokeMap $variableMap using "dataArea";
invokeMap "daName/mapElement" using "dataArea" target bpa;
// $MAP-VALUE is a variable returned by the invoked map.
if ("$MAP-VALUE='continue' ")
goto 300;
else
terminate;
end if;
عبارات Generate Edit Map
يتم استخدام عبارات "Generate Edit Map" لإنشاء وبدء تحرير مخطط واجهة المستخدم ديناميكيًا حسب تعريف أحد المخططات. يمكن أن يمثل المخطط المستخدم مخطط كائن عمل أو مخطط خدمة أعمال أو مخطط منطقة بيانات. لا ينطبق هذا إلا على سكريبتات مساعد عمليات الأعمال. ستختلف عبارة generate بناءًا على نوع المخطط، ولكن الصياغة تكون متشابهة.
الصياغة |
---|
generateBOEditMap |
generateBSEditMap |
generateSSEditMap |
generateDAEditMap |
يمكن تحديد رمز كائن العمل / رمز خدمة الأعمال / رمز منطقة البيانات باستخدام قيمة حرفية (مُحاطة بعلامة اقتباس فردية)، كمتغير مؤقت أو عن طريق الإشارة إلى موقع مخطط مسار X (مُحاط بعلامة اقتباس مزدوجة).
يوضح الجدول التالي الصياغة الإضافية لهذه العبارة.
الصياغة | القيم الصالحة | تعليقات |
---|---|---|
using |
"اسم مجموعة منطقة البيانات" | يشير إلى منطقة البيانات المطلوب المرور إليها إلى ومن الملقم عند عرض نموذج HTML المرتبط بالمخطط. |
target |
bpa |
|
page |
||
popup |
توضح قيم الهدف المكان الذي يجب عرض المخطط المُنشأ فيه كما هو موضح في نوع الخطوة Invoke map. إذا تم تكوين مخطط واجهة المستخدم لإرجاع قيمة، يمكن تقييمها باستخدام المتغير $MAP-VALUE.
يستخدم المثال عبارة generateBOEditMap ولكن العبارات متشابهة بالنسبة لأنواع المخططات الأخرى.
generateBOEditMap 'BO Name' using "dataArea";
generateBOEditMap $variableMap using "dataArea";
generateBOEditMap "daName/mapElement" using "dataArea" target bpa;
// $MAP-VALUE is a variable returned by the invoked map.
if ("$MAP-VALUE='continue' ")
goto 300;
else
terminate;
end if;
عبارة Terminate
تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة إنهاء.
فيما يلي مثال على خطوة إنهاء بسيطة ستقوم بإيقاف السكريبت.
if ("not(parm/spouse/name)")
terminate;
else
goto addSpouse;
end-if;
لا تكون عبارة terminate with error متاحة إلا في سكريبت خدمة.
الصياغة | السمات | تعليقات |
---|---|---|
terminate with error (x, y %n= element= ) |
يمثل 'x' فئة الرسالة | مطلوب. |
يمثل 'y' رقم الرسالة | مطلوب. | |
%n="Element XPath" أو %n='literal' | يحدد معلمات الاستبدال التي تدعمها الرسالة باستخدام قيم حرفية أو مراجع المسار X. عندما تكون القيمة المطلوب استبدالها عنصرًا ضمن قائمة، استخدم XPath الخاص بالعنصر الموجود داخل القائمة المؤهلة بواسطة حدث القائمة. | |
element='Element XPath' أو element=$variable | يمكنك اختياريًا تحديد اسم عنصر داخل مخطط واجهة مستخدم لتمييزه كجزء من الخطأ. عندما يكون العنصر الذي به خطأ ضمن قائمة، استخدم XPath الخاص بالعنصر في القائمة المؤهلة بواسطة حدث القائمة. |
مثال على الحقل البسيط:
if ("string(customer/lastName) = $BLANK")
terminate with error (8000, 1001 %1="customer/lastName" %2='Last name required' element='customer/lastName');
end-if;
مثال على الإنهاء حيث يكون العنصر المطلوب تعليمه موجود بقائمة:
for ($list in "parm/hard/newBusinessObject/listName")
if //** check some condition for elementName
terminate with error (11000, 11000 %1="$list/elementName" element='$list/elementName');
end-if;
end-for;
استدعاء رمز Groovy
إذا كان لديك سكريبت خوارزمية مساعدة أو سكريبت خدمة يمزج بين سكريبت XPath وسكريبت Groovy، فإن خطوة تحرير البيانات تدعم إمكانية استدعاء رمز لغة Groovy باستخدام الصياغة invokeGroovy 'method'; حيث يشير 'method' إلى اسم أسلوب محدد في خطوة عناصر Groovy في السكريبت. لا يمكن استدعاء إلا الأساليب التي لا تتلقى وسيطات وإلغاء إرجاع بهذه الطريقة. لكن يمكن دعم الأسلوب الذي تم استدعاؤه من خطوة تحرير البيانات بواسطة رمز Groovy إضافي في أنواع خطوات عناصر Groovy الأخرى.
مثال على خطوة تحرير البيانات:
invokeGroovy 'invoke';
مثال على خطوة عناصر Groovy:
void invoke() {
initParms()
readBO()
initConfig()
retrieve()
updateBO()
}
تصحيح أخطاء سكريبت مساعد عمليات الأعمال
إذا كان ارتفاع سكريبت مساعد عمليات الأعمال أكبر من صفر، يمكن عرض العقد المحددة لمنطقة بيانات السكريبت في وقت التشغيل. يتم عرض بيانات XML أثناء تنفيذ السكريبت في منطقة عرض سكريبت مساعد عمليات الأعمال. حدد المسار X من عقدة XML من أي من مناطق بيانات سكريبت مساعد عمليات الأعمال (BPA)، بين الحروف المزدوجة: %+' و'+%'.
على سبيل المثال، يتم عرض محتويات عقدة مجموعة المخططات التي تسمى 'مدخلات' ومحتويات عنصر المخطط المخصصة التي تسمى 'مخرجات/الحالة' في منطقة عرض سكريبت مساعد عمليات الأعمال (BPA). يجب إدخال نص تصحيح الأخطاء في منطقة النص لسكريبت مساعد عمليات الأعمال (BPA) وليس في حقل تحرير بيانات السكريبت. يمكن تحديد نص تصحيح الأخطاء لأي من الخطوات الصريحة للسكريبت.
display input: %+input+% , and output status: %+output/status+%
نصائح وتلميحات مفيدة
يقدم هذا القسم بعض الاقتراحات حول كيفية تنفيذ بعض من المنطق العام.
البحث عن المستخدم الذي قام بتسجيل الدخول في مساعد عمليات الأعمال
بالنسبة للسكريبتات المستندة إلى الملقم، يتم ملء متغير $USER بالمستخدم المسجل دخوله حاليًا. هذا المتغير غير متاح لسكريبتات مساعد عمليات الأعمال. يمكن أن يقوم مساعد عمليات الأعمال باستدعاء سكريبت الخدمة F1-GetUser إذا كانت هذه المعلومات مطلوبة.
إصدار خطأ من سكريبت مساعد عمليات الأعمال
بالنسبة للسكريبتات المستندة إلى الملقم، يمكنك استخدام عبارة إنهاء مع وجود خطأ لإرجاع رسالة خطأ لعرضها للمستخدم. يمكن أن يعرض مساعد عمليات الأعمال هذا الخطأ عن طريق نقل التحكم إلى F1-HandleErr كما هو موضح في تحديد واستدعاء الكائنات المستندة إلى مخطط. هذا غير مدعوم في سكريبت مساعد عمليات الأعمال. تستخدم التقنية المتوفرة لمساعد عمليات الأعمال لإصدار خطأ في استدعاء خدمة الأعمال F1-RethrowError التي تُدخل تفاصيل الخطأ. تقوم خدمة الأعمال هذه بملء حقول أخطاء النظام الملائمة المطلوبة لإصدار الخطأ. ثم قم بنقل التحكم إلى F1-HandleErr.
if ("string($assignedToUser) != string(F1-GetUser/user)")
declareBS 'F1-RethrowError' as 'errorMsg';
move '11010' to "errorMsg/messageCategory";
move '11511' to "errorMsg/messageNumber";
move "$toDoEntryId" to "errorMsg/messageParameters/+parameters/parameterValue";
invokeBS 'F1-RethrowError' using "errorMsg";
transferControl 'F1-HandleErr';
end-if;