خطوات تحرير البيانات

توفر خطوات تحرير البيانات منطقة تنسيق حرة يمكنك فيها تحديد أوامر للتحكم في معالجة السكريبت الخاص بك.

أدخل أوامر كتابة السكريبت في حقل تحرير نص البيانات. انقر الأيقونة المجاورة لفتح إطار يوفر مساحة أكبر لتحديد خطوة تحرير البيانات.

بوجه عام، تعتبر الصياغة المتوافرة في عملية تحرير البيانات مماثلة للأوامر المتاحة داخل أنواع الخطوات الصريحة. مع ذلك، هناك عدد قليل من الأوامر المتوافرة فقط ضمن عملية تحرير البيانات. على سبيل المثال، الأمرين البنيويين: For وIf.

ملاحظة: لا يتم دعم كل أنواع خطوات مساعد عمليات الأعمال (BPA) باستخدام صياغة تحرير البيانات. اطلع على التفاصيل أدناه لمعرفة المزيد من المعلومات حول أوامر تحرير البيانات والأمثلة عليها.

تتناول الموضوعات الواردة في هذا القسم تفاصيل الصياغة المدعومة في نوع خطوة تحرير بيانات.

المحتويات

التعليقات

المتغيرات المؤقتة

متغيرات السياق

عبارة Move

عبارة Go To

عبارة Conditional Branch

عبارة If

عبارة For

معالجة القائمة

دالات معالجة القائمة

تحديد واستدعاء الكائنات المستندة إلى المخطط

النظام والمتغيرات العامة

تنفيذ السكريبت والتحويل

عبارة Navigate

عبارة Invoke Map

تحديد كائن عمل بمجموعة كائنات عمل

عبارات Generate Edit Map

عبارة Terminate

استدعاء رمز Groovy

تصحيح أخطاء سكريبت مساعد عمليات أعمال

نصائح وتلميحات مفيدة

تعليقات

يمكنك إضافة تعليقات في السكريبت الخاص بك باستخدام رمز شرطة مائلة مزدوجة // في أول حرفين في خطوة تحرير البيانات. مثال:

// 
// 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;
المسار السريع: لمزيد من المعلومات حول التحديد الضمني لمتغير مؤقت في عبارة move، ارجع إلى النقل إلى متغير مؤقت.

بالنسبة لسكريبتات مساعد عمليات الأعمال (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 "acct/totalBalance" to 
"parm/formattedValue";
عبارة Move بدالة concatenate للمسار X.
move "concat(person/firstName, ',', 
person/lastName)" 
to "parm/fullName";
عبارة Move بدالة قبل substring-before للمسار X.
move "substring-before(parm/fullName,',')" 
to "person/firstName";
عبارة Move بدالة substring-after للمسار X.
move "substring-after(parm/fullName,',')" 
to "person/lastName";
عبارة Move بدالة substring للمسار X.
move "substring(parm/date,1,4)" 
to "parm/year";
النقل إلى عنصر

نقل 'literal' إلى "xpath"؛

ملاحظة: تكون القيمة الحرفية محاطة بعلامة اقتباس مفردة.
عبارة Move باستخدام سلسلة حرفية.
move 'okay for mailing' 
to "account/preferences[type="mail"]/text";
النقل إلى عنصر

نقل 'Boolean' إلى "xpath"؛

عبارة Move بقيمة منطقية كسلسلة حرفية.
if ("account/balance > 0") 
  move 'true' 
  to "account/hasDebitBalance"; 
end-if;
نقل التعبير الذي تنتج عنه قيمة منطقية. لاحظ أنه تم وضع المرشح في المثال أدناه في عقدة مجموعة.
<schema>
  <account>
    <hasDebitBalance type="boolean"/>
    <balance/>
  </account>
</schema>

move "boolean(account[balance>0])" 
to "account/hasDebitBalance";
النقل إلى مجموعة

نقل "xpath" إلى "xpath"؛

نقل مجموعة عناصر من مجموعة لمجموعة أخرى.

يطابق النظام المستوى الأولي لأسماء العناصر وأسماء المجموعات/القوائم من المخطط المصدر إلى المخطط الهدف. بالنسبة للقوائم والمجموعات، فإن الأسلوب الافتراضي هو نقل كل العناصر الموجودة في المجموعة/القائمة المصدر إلى المجموعة/القائمة الهدف (حتى وإن لم تكن محددة في المجموعة/القائمة الهدف).

يمكن استخدام خدمة الأعمال F1-MoveByName لمزيد من التحكم متعدد المستويات على عملية النقل (دون الحاجة إلى تحديد كل عبارة نقل فردية).

move "account/custInfo" to "person";

هذه العبارة مساوية للعبارة التالية:

move "account/custInfo/*" to "person/*";

النقل باستخدام متغير مؤقت

عند النقل إلى متغير محلي مؤقت، لا يكون محاطًا بعلامة اقتباس مزدوجة.

move "xpath" to $variable

move "count(Person/names/personName) 
+ count(Person/ids/personId)" 
to $PersonChildCount;
عند النقل من متغير مؤقت، يكون المتغير محاطًا بعلامة اقتباس مزدوجة.

نقل "$variable" إلى “xpath”؛

move "$AccountBalance" 
to "parm/formattedValue";

النقل باستخدام متغير السياق

نقل "xpath" إلى $$variable؛

نقل $$variable إلى “xpath”؛

تتم الإشارة إلى متغيرات السياق، المصدر أو الهدف، بدون أية علامات اقتباس مزدوجة.
move 'context value' 
to $$contextVariable;
// 
// here, we move from a context variable.
move $$contextVariable 
to "MarketMessage/sender";
النقل باستخدام موقع ديناميكي

نقل "xpath" | 'literal' لتقييم ("xpath" | $variable)؛

نقل تقييم ("xpath" | $variable) إلى "xpath" | $variable;

تتيح لك عبارة evaluate اشتقاق نقل موقع المصدر أو الهدف ديناميكيًا من موقع عنصر مخطط أو متغير.
move 'literal' 
to evaluate("schemaLocation"); 
//
move "schemaLocation" 
to evaluate($Variable);
move evaluate("schemaLocation") 
to $Variable;
// 
move evaluate($Variable) 
to "schemaLocation";
تخطي النقل

نقل تخطي ("xpath" | $variable) إلى "xpath" | $variable;

لا يكون تخطي النقل متاحًا إلا لسكريبت الخوارزمية المساعدة وسكريبت الخدمة فقط. تقوم عبارة escape بالمسح الضوئي لقيمة النص المصدر لمحتوى HTML وتجاوزها؛ بمعنى، استبدال أية حروف مثل HTML بحروف خاصة تم تخطيها من عرض HTML. وبهذا الإجراء سيتم عرض النص كنص عادي عند عرضه كجزء من عنصر HTML.
ملاحظة: لا يجب استخدام هذه الدالة إلا في حالة عرض النص كجزء من عنصر HTML ومن المتوقع أن يحتوي على حروف مثل حروف HTML أو حروف HTML أسوأ لا يجب عرضها كجزء من HTML. في حالة العرض بشكل غير صحيح باستخدام عنصر ليس من HTML، فسوف تكون حروف التخطي الخاصة، إن وجدت، مرئية كجزء من النص الخاص بك. ارجع إلى دالات وسمات مخطط واجهة المستخدم للحصول على مزيد من المعلومات حول كيفية تحديد عنصر لعرض محتوى HTML.
move escape("schemaLocation") 
to $Variable;
// 
move escape($Variable) 
to "schemaLocation";
نقل القيم الخالية

نقل خالٍ إلى "xpath"؛

يمكنك إزالة المعلومات من مستند مثيل XML من خلال الصياغة الخاصة بنقل "القيم الخالية". لاحظ أنه يمكنك تحديد إما اسم عقدة في تعبير المسار X أو اسم مجموعة. إذا حددت مجموعة، فسوف يتم حذف المجموعة وكل العناصر الفرعية من المعالجة.

إزالة عقدة وكل العقد الفرعية لها:

if ("boolean(customer/securityEnabled)")
  goto updateInfo;
else
  move null to "customer"; 
end-if;   

إزالة كل العقد الفرعية لعقدة مجموعة باللاحقة '/*'.

if ("boolean(customer/securityEnabled)")
  move null to "customer/*";
end-if;

عبارة 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 الجاري معالجته، فسوف يتم تعيين العبارة على القيمة "صواب". في حالة عدم وجود العنصر، يتم تعيين العبارة على القيمة "خطأ".

ملاحظة: عند معالجة عقد المسار X كمتغيرات منطقية، يجب مراعاة أنه يتم تعيين أية عقدة فارغة على القيمة "صواب". العقدة المفقودة فقط هي التي تظهر الحالة "خطأ".
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>
ملاحظة: يكون حذف مثيل قائمة باستخدام سمة الإجراء أمرًا خطيرًا إذا تتطلب اتصالات كائن عمل تكراري. لن يتغير مستند XML الذي يحتوي على مثيل القائمة المطلوب حذفه بعد اتصال كائن عمل ناجح وهذا يعني أن المستند يظل يحتوي على مثيل القائمة حتى بعدما لا يكون موجودًا. ولحل هذه المشكلة، فمن الضروري إعادة قراءة كائن العمل بعد إجراء أي تحديث لكائن العمل كلما تم استخدام سمة الإجراء "حذف".
ملاحظة: استخدام إجراء كائن العمل استبدال هو البديل لسمة "حذف" الموضحة هنا. تؤدي معالجة قائمة لاستخدام إجراء الاستبدال إلى تجنب المشكلة الموضحة أعلاه بشأن معلومات قديمة في مستندات الطلبات بعد تحديث كائن العمل.

دالات معالجة القائمة

يوفر المسار 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

يشير إلى أنه يجب التعامل مع التحذير كخطأ معروض في مخطط واجهة المستخدم. يمثل نص في شكل خطأ نصًا اختياريًا.

invokeBO 'BusinessObject' using "dataArea" for add with warn asError;

invokeSS 'ServiceScript' using "dataArea" with warn;

with warn popup

يشير إلى أنه يجب عرض التحذير في القائمة المنبثقة القياسية لإطار العمل. في هذا السيناريو، يتم عرض الزرين القياسيين "موافق" و"إلغاء" للمستخدم. إذا نقر المستخدم زر "موافق"، فيعني هذا أنه يجب متابعة المعالجة. إذا نقر المستخدم زر "إلغاء"، فيعني هذا أنه يجب عدم الاستمرار في المعالجة. هذا هو الإعداد الموصى به.

invokeBS "daName/bsElement" using "dataArea" with warn popup;

with warn suppress

يشير إلى أنه يجب حظر تحذير. تمثل القيمة الافتراضية في حالة عدم إضافة صياغة تحذير إلى عبارة invoke.

invokeBS "daName/bsElement" using "dataArea" with warn suppress;

invokeSS 'ServiceScript' using "dataArea";
ملاحظة: بالنسبة لسكريبتات الخدمة، سوف يكون لكل الكائنات المُستدعاة من سكريبت الخدمة نفس مستوى التحذير. لذلك، إذا تم استدعاء سكريبت الخدمة بتحذير، فسوف يتم استدعاء كل عبارات الاستدعاء المضمنة أيضًا بتحذير.

بالنسبة لسكريبتات مساعد عمليات الأعمال، يجب وجود منطق بعد الاستدعاء لمعالجة الأخطاء والتحذيرات (في حالة استخدام 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 يمثل عقدة فارغة.
if ("string(parm/spouse/name) != $BLANK")
  goto addSpouse;
end-if;
$CURRENT-DATE يمثل التاريخ الحالي.

بالنسبة لسكريبتات مساعد عمليات الأعمال، هذا هو تاريخ المستعرض.

بالنسبة لسكريبتات الملقم، هذا هو تاريخ الملقم (وهو خاضع لمنطق تجاوز تاريخ النظام).

move "$CURRENT-DATE" to $tempDate;
$CURRENT-STD-DTTM يمثل الوقت-التاريخ الحالي مُعبرًا عنه بالتوقيت القياسي (بمعنى بدون تعديلات للتوقيت الصيفي).
move "$CURRENT-STD-DTTM" to $tempDateTime;
$DEVICE-OS يمثل نظام تشغيل الجهاز الخاص بالمستخدم.
move "$DEVICE-OS" to $tempDeviceOs;
$DEVICE-BROWSER يمثل مستعرض جهاز المستخدم.
move "$DEVICE-BROWSER" to $tempDeviceBrowser;
$DEVICE-DISPLAY-TYPE يمثل نوع عرض شاشة جهاز المستخدم؛ ما إذا كان بحجم سطح المكتب أو متوسط أو صغير الحجم. قد تكون القيم الناتجة مثل oraDesktop وoraTablet وoraPhone.
move "$DEVICE-DISPLAY-TYPE" to $tempDeviceDisplayType;
$DEVICE-INFO توفر توليفة من الثلاث خصائص للجهاز (DEVICE-OS وDEVICE-BROWSER وDEVICE-DISPLAY-TYPE) ويتم فصل كل قيمة خاصية بفاصلة منقوطة.
move "$DEVICE-INFO" to $tempDeviceInfo;

متغيرات النظام - سكريبتات مساعد عمليات الأعمال فقط

متغيرات النظام التالية تنطبق على / متاحة فقط لأنواع سكريبتات مساعد عمليات الأعمال.

المتغير الوصف مثال
$DOUBLE_​QUOTE يمثل علامة اقتباس مزدوجة.
move "$DOUBLE_QUOTE" to $tempField;
$SINGLE_​QUOTE يمثل فاصلة عليا.
move "$SINGLE_QUOTE" to $tempField;
$SPACE يحتوي على قيمة مسافة واحدة.
move "$SPACE" to $tempField;
$SYSTEM-DATE يمثل تاريخ الملقم. لاحظ أن هذا التاريخ يتأثر بمنطق تجاوز تاريخ النظام)
move "$SYSTEM-DATE" to $tempDate;

متغيرات النظام - سكريبتات الملقم فقط

متغيرات النظام التالية متاحة فقط / تنطبق على سكريبت الخدمة وأنواع سكريبتات الخوارزمية المساعدة.

المتغير الوصف مثال
$ADDITIONAL-IP-INFO ‏‏يتضمن طلب HTTP حقل عنوان "عنوان IP إضافي". يمكن تعميم هذا الحقل بواسطة عملية تنفيذ في حالة وجود بعض المعلومات متاحة في ملقم الوكيل أو موازن التحميل، مثل عنوان IP للمنشأ.
move "$ADDITIONAL-IP-INFO" to "parm/request/headerIpAddress";
$CURRENT-DTTM يمثل الوقت-التاريخ الحالي.
move "$CURRENT-DTTM" to $tempDateTime;
$F1-INSTALLATION-TIMEZONE يمثل رمز المنطقة الزمنية المحدد في خيارات التركيب.
move "$F1-INSTALLATION-TIMEZONE" to $timeZone;
$LANGUAGE يمثل رمز اللغة الذي يستخدمه السكريبت. وعادةً تكون لغة المستخدم الافتراضية.
move "$LANGUAGE" to $tempLanguage;
$PROCESS-DATE يمثل تاريخ العملية. يختلف تاريخ العملية عن التاريخ الحالي لأن تاريخ العملية سيبقى ثابتًا خلال مدة العملية الجاري تنفيذها. على سبيل المثال، إذا كان سكريبت خدمة يقوم بتخزين عدة كائنات عمل – تتم تهيئة تاريخ العملية في بداية تنفيذ سكريبت الخدمة وسوف يتم ضبط الإعدادات الافتراضية لكل كائن عمل على نفس تاريخ العملية. سوف يعكس التاريخ الحالي، خاصة وقت التاريخ الحالي، الوقت الفعلي للمعالجة.
move "$PROCESS-DATE" to $tempDate;
$PROCESS-DTTM يمثل وقت-تاريخ العملية. لاحظ أنه تتم تهيئة تاريخ ووقت العملية في بداية عملية معينة ولن يعكس التاريخ والوقت الفعلي لتحديث ما.
move "$PROCESS-DTTM" to $tempDateTime;
$REQUESTING-IP-ADDRESS يمثل عنوان IP من طلب HTTP. لاحظ أنه إذا تم توجيه الطلب من خلال ملقم وكيل أو موازن تحميل، يكون عنوان IP هذا هو عنوان IP للوكيل أو موازن التحميل، ليس عنوان IP للمستخدم النهائي. للحصول على معلومات، ارجع إلى متغير $ADDITIONAL-IP-INFO.
move "$REQUESTING-IP-ADDRESS" to "parm/request/systemIpAddress";
$USER يمثل معرف المستخدم الخاص بالمستخدم الذي يقوم بتنفيذ السكريبت.
move "$USER" to $tempUser;

بالنسبة لسكريبتات مساعد عمليات الأعمال التي تحتاج إلى معرفة معرف المستخدم الخاص بالمستخدم الحالي، ارجع إلى نصائح وتلميحات مفيدة.

المتغيرات العامة

تمتلك كل من سكريبتات مساعد عمليات الأعمال وسكريبتات الخدمة صلاحية الوصول إلى القيم المحددة في السياق العام.

عندما يتم إطلاق سكريبت مساعد عمليات أعمال من واجهة المستخدم، تتم تهيئة هذه المتغيرات آليًا. ويمكن الإشارة إليها بعلامة دولار فردية أمام اسم الحقل. على سبيل المثال، إذا كان 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
ملاحظة: عند انتهاء السكريبت المُسمى في عبارة performScript، يتم إرجاع التحكم إلى سكريبت مساعد عمليات الأعمال للاستدعاء. عند انتهاء السكريبت المُسمى في عبارة transferControl، لن تعود إلى سكريبت الاستدعاء، ويتم منح التحكم التام للمحول إلى السكريبت.

عبارة Navigate

تدعم خطوة تحرير البيانات وظيفة مشابهة لنوع خطوة التنقل إلى صفحة. لا ينطبق هذا إلا على سكريبتات مساعد عمليات الأعمال.

الصياغة القيم الصالحة تعليقات

navigate

'Navigation Code' توفير خيار التنقل صراحةً.
$Variable العثور على خيار التنقل في متغير.
"المسار X" العثور على خيار التنقل في عنصر، مُشار إليه بالمسار X الخاص به.

بالإضافة إلى ذلك، تدعم خطوة تحرير البيانات إمكانية الإشارة إلى أنه يجب تجديد لوحة المعلومات عند التنقل. لا ينطبق إلا على سكريبتات مساعد عمليات الأعمال.

الصياغة القيم الصالحة

navigateAndReloadDashboard

مشابه لعبارة Navigate

تحديد كائن عمل بمجموعة كائنات عمل

هذه العبارة خاصة بسكريبتات مساعد عمليات الأعمال التي تخطط لاستخدام السكريبت الأساسي "المعالجة الرئيسية لصيانة كائن العمل" (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()
}
ملاحظة: كما هو مذكور في استخدام Groovy داخل السكريبتات، إذا كان هذا سكريبت خوارزمية مساعدة والرمز هو Groovy فقط، يجب استخدام إصدار محرك سكريبت Groovy بدلاً من التقنية أعلاه. ويعتبر ذلك أكثر فاعلية لأنه يتجنب تحويل البيانات إلى واجهة XML ومنها.

تصحيح أخطاء سكريبت مساعد عمليات الأعمال

إذا كان ارتفاع سكريبت مساعد عمليات الأعمال أكبر من صفر، يمكن عرض العقد المحددة لمنطقة بيانات السكريبت في وقت التشغيل. يتم عرض بيانات 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;