سمات وعُقد المخطط

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

المحتويات

أنواع العناصر الأربعة

نوع بيانات عنصر الحقل

الإشارة إلى العناصر الأخرى

اعتبارات التوقيت القياسي

سمات التعيين

السمات الوصفية

ثوابت المخطط

الإعداد الافتراضي ومتغيرات النظام

سمات وعُقد الفصل

منطقة البحث

توسيع الحماية لسكريبت الخدمة

إجراء التجاوز لخدمة الأعمال

تحديد "searchBy" لخدمة البحث

تضمين المخططات الأخرى

سمات التوافق

أنواع العناصر الأربعة

يمكن أن يكون عنصر المخطط واحدًا من أنواع البنية الأربعة المختلفة. لاحظ أنه توجد فئتان من أنواع العناصر: قائمة ومجموعة عُقد البنية والبيانات التي تحتوي على عُقد الحقل والقيم الأولية.

رمز الاختصار القيم الصالحة الوصف الأمثلة
type= "field"

نوع الحقل هو النوع الافتراضي لأي عنصر لم تتم تسميته بشكل واضح كشيء آخر غير الحقل. لذلك، لا يتطلب منك فعليًا أن تضع تسمية لعنصر ما بشكل واضح كحقل. لاحظ أن عنصر الحقل، بعكس المجموعة أو القائمة، سيحتوي على معلومات في العُقد الخاصة به، بدلاً من العُقد الأخرى.

"group"

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

لاحظ أنه عند تجميع العناصر المختلفة المستخدمة كلها في تعيين بنية XML لحقل CLOB/XML لسجل معتمد على كائن العمل، يمكن أن يكون التعيين على مستوى المجموعة.

مثال، عند استخدام مجموعة لإنشاء بنية

<schema>
  <input type="group"
    <userId/>
  </input>
  <output type="group">
    <firstName/>
    <lastName/>
  </output>
</schema>

مثال، عند احتواء المجموعة على التعيين:

<parameters type="group" 
mapXML="BO_DATA_AREA" mdField=
"F1_TODOSUMEMAIL_PARM_LBL"/>
  <numberOfDays 
  mdField="F1_NBR_DAYS" 
  required="true"/>
  <frequency 
   mdField="F1_FREQUENCY"/>
"list"

عقدة القائمة هي عقدة بنية مثل عقدة المجموعة. والاختلاف الوحيد هو أن بنية القائمة لديها إمكانية التكرار مرات متعددة في مستند XML.

مثال على مخطط بقائمة:

<schema>
  <statesList type="list">
    <state isPrimeKey="true"/>
    <description/>
  </statesList>
</schema>

مثال على مخطط بقائمة:

<xml>
  <statesList>
    <state>AK</state>
    <description>Alaska</description>
  </statesList>
  <statesList>
    <state>AL</state>
    <description>Alabama</description>
  </statesList>
...
</xml>
"raw"

يُستخدم نوع البيانات الأولية في تسجيل جزء من النص الأولي الذي ليس له أي بنية أصلية مرتبطة به.

<sendDetail type="raw" />

مثال على مثيل XML للمخطط بالأعلى:

<sendDetail>
  <messageInfo>
    <senderAddress>123 W. Main St,    Ontario, CA
    </senderAddress>
    <corpZone>3A</corpZone>
  </messageInfo>
</sendDetail>

نوع بيانات عنصر الحقل

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

رمز الاختصار القيم الصالحة الوصف الأمثلة
dataType= "string"

وفقًا للإعدادات الافتراضية، عنصر الحقل هو سلسلة. لذلك، لا يتطلب تحديد نوع بيانات السلسلة.

<schema>
  <custName dataType="string"/>
</schema>
"number"

يحدد عنصرًا، والذي يمثل رقمًا.

ملاحظة: تتضمن تلميحات واجهة المستخدم الإعداد الذي يخص إيقاف تنسيق الأرقام آليًا.
ملاحظة: استخدم السمة currencyRef للعرض الآلي لرمز العملة المرتبط برمز العملة المشار إليه. يتم تجاهل الخانات العشرية للعملة عند استخدام هذا التنسيق، مما يتيح لك عرض رمز العملة لتعرفة الوحدة بخانات عشرية كثيرة.

الأمثلة

<schema>
  <count dataType="number"/>
</schema>
<schema>
  <taxRate dataType="number" 
   currencyRef="currency"/>
</schema>
"money"

السمات الإضافية الاختيارية

currencyRef="اسم العنصر"

يحدد عنصرًا، والذي يمثل مبلغًا نقديًا.

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

ملاحظة: للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.
<schema>
  <currency default="USD" 
    suppress="true"/>
  <balance dataType="money" 
   currencyRef="currency"/>
</schema>
"lookup"

السمة الإضافية المطلوبة

lookup="اسم الحقل"

يحدد عنصرًا، والذي له قيم صالحة محددة باستخدام البحث. وحقل البحث هو حقل مطلوب.

<schema>
  <status dataType="lookup" 
   lookup="STATUS_FLG"/>
</schema>
"lookupBO"

السمة الإضافية المطلوبة

lookupBO="اسم كائن العمل"

يحدد عنصرًا، والذي له قيم صالحة محددة باستخدام البحث القابل للتوسيع. وكائن العمل الخاص بالبحث القابل للتوسيع مطلوب.

<schema>
  <category dataType="lookupBO" 
   lookupBO="CM-BusinessCategory"/>
</schema>
"boolean"

يحدد عنصرًا، والذي له قيم "نعم" و"لا".

<schema>
  <allowsEdit dataType="boolean"/>
</schema>
"date"

يحدد عنصرًا، والذي يمثل التاريخ.

<schema>
  <startDate dataType="date"/>
</schema>

"dateTime"

يحدد عنصرًا، والذي يمثل التاريخ والوقت.

ملاحظة: للحصول على التكوين الإضافي المتاح لحقول التاريخ/الوقت التي تمثل التوقيت القياسي، الرجاء الرجوع إلى اعتبارات التوقيت القياسي.
<schema>
  <startDateTime 
  dataType="dateTime"/>
</schema>
"time"

يحدد عنصرًا، والذي يمثل الوقت.

<schema>
  <startTime dataType="time"/>
</schema>
"uri"

يحدد عنصرًا، والذي يقوم بتسجيل عنوان URI. وتؤدي العناصر المحددة بهذا النوع إلى تمكين دعم قائمة السماح والاستبدال لعناوين URI، كما هو موضح في الإشارة إلى معرفات URI.

<schema>
  <exportDirectory dataType="uri"/>
</schema>

الإشارة إلى العناصر الأخرى

توجد سمات مختلفة تتيح إمكانية الإشارة إلى عنصر آخر في نفس المخطط. الصياغة المدعومة لمرجع المسار X هي نفس الصياغة في كل حالة. يعرض هذا القسم أمثلة باستخدام سمة المرجع الافتراضي (defaultRef).

الإشارة إلى عنصر فرعي:

<schema>
   <id mapField="ACCT_ID" required="true"/>
   <altId defaultRef="id" required="true"/>
</schema>

الإشارة إلى عنصر في مجموعة أعلى:

<schema>
   <id mapField="ACCT_ID" required="true"/>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId defaultRef="../id" required="true"/>
   </msgInfo>
</schema>

الإشارة إلى عنصر في مجموعة أقل:

<schema>
   <id mapField="ACCT_ID" defaultRef="msgInfo/altId" required="true"/>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId required="true"/>
   </msgInfo>
</schema>

الإشارة إلى عنصر في مجموعة أخرى:

<schema>
  <acctInfo type="group">
    <id mapField="ACCT_ID" required="true"/>
  </acctInfo>
   <msgInfo type="group" mapXML="XML_FIELD">
     <altId defaultRef="../acctInfo/altId" required="true"/>
   </msgInfo>
</schema>

اعتبارات التوقيت القياسي

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

عند تحديد عنصر بالقيمة dataType="dateTime"، يمكنك اختياريًا تكوين stdTime="true" للإشارة إلى أن البيانات المسجلة في العنصر تمثل التوقيت القياسي دائمًا في المنطقة الزمنية "الأساسية". يتم تحديد المنطقة الزمنية "الأساسية" في خيارات التثبيت.

ملاحظة: في حالة ما إذا تم ربط عنصر بجدول/حقل بنوع توقيت قياسي فعلي، يتم تضمين stdTime="true". لمزيد من المعلومات، ارجع إلى الحقول.

مثال:

<schema>
  <startTime dataType="Time" stdTime="true"/>
</schema>

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

مثال:

<schema>
  <alternateTimeZone fkRef="F1-TZONE" suppress="true"/>
  <startDateTime dataType="dateTime" stdTimeRef="alternateTimeZone"/>
</schema>
ملاحظة: في حالة ما إذا تم ربط عنصر بجدول/حقل بنوع توقيت قياسي مشار إليه، يتم تضمين "المسار X" stdTime=. لمزيد من المعلومات، ارجع إلى الحقول.
ملاحظة: عند تسجيل عناصر المخطط بالتوقيت القياسي، يدعم مخطط واجهة المستخدم مجموعة رموز بتنسيق HTML لعرض البيانات الخاصة بتطبيق التوقيت الصيفي/تصحيح توقيت الصيف آليًا. لمزيد من المعلومات، الرجاء الرجوع إلى سمة HTML oraType="dateTime; stdTime:true".

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

<schema>
  <displayTimeZone fkRef="F1-TZONE" suppress="true"/>
  <startDateTime dataType="dateTime" stdTime="true" displayRef="displayTimeZone"/>
</schema>

سمات التعيين

عند إنشاء المخطط الخاص بك، يمكنك الاختيار من إحدى سمات التعيين التالية.

رمز الاختصار القيم الصالحة الوصف الأمثلة
mapField= "اسم الحقل"

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

<schema>
  <factId 
   mapField="FACT_ID"/>
</schema>
mapChild= "اسم الجدول"

لا يتم استخدام السمة mapChild إلا لتعيين كائن العمل. ويتم استخدامها بطريقتين:

  • الطريقة الأولى، لإنشاء قائمة في كائن العمل تتوافق مع الجدول الفرعي لكائن الصيانة.

  • الطريقة الثانية، يمكنك استخدام mapChild لتحديد الجدول الفرعي الذي يوجد به الحقل المنفصل. لمزيد من المعلومات حول الفصل، الرجاء الرجوع إلى قسم الفصل أدناه.

مثال على قائمة في الجدول الفرعي بكائن العمل:
<persons type="list" 
   mapChild="CI_ACCT_PER"
  <personId mapField="PER_ID"/>
</persons>
mapList= "اسم القائمة"

لا يتم استخدام السمة mapList إلا لتعيين خدمة الأعمال. ويتم استخدامها بطريقتين:

  • الطريقة الأولى، لإنشاء قائمة في خدمة الأعمال تتوافق مع القائمة في الخدمة.

  • الطريقة الثانية، يمكنك استخدام mapList لتحديد القائمة التي يوجد بها الحقل المنفصل. لمزيد من المعلومات حول الفصل، الرجاء الرجوع إلى قسم الفصل أدناه.

مثال على قائمة في خدمة الأعمال:
<selectList type="list" 
  mapList="DE" 
  <value mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
      <SEQNO is="2"/> 
    </row> 
  </value>  
</selectList>
mapXML= "اسم الحقل"

يتم عادةً استخدام السمة mapXML لتعيين بُنى XML بحقل XML/حرف كبير للخدمة. لاحظ أنه عند استخدام mapXML لتعيين بنية مجموعة أو قائمة (type="list" أو type="group")، لا يتطلب تعيين كل العناصر الفرعية في البنية. ومن الممكن أيضًا تعيين عناصر القائمة بحقل الحرف الكبير المرتبط بالقائمة الفرعية.

<enrollmentRequest type="group" 
mapXML="CASE_CLOB">
  <messageID/>
  <sender/>
</enrollmentRequest>
<enrollmentKey 
mapXML="CASE_CLOB"/>
<enrollmentInfo type="list" 
mapChild="CI_CASE_CHILD">
  <sequence 
  mapField="CHILD_SEQ"/>
  <name 
  mapXML="CASE_CHILD_CLOB"/>
  <value 
  mapXML="CASE_CHILD_CLOB"/>
</enrollmentInfo>
isPrimeKey= "true"

يجب تحديد مفتاح أساسي للقائمة المحددة في عنصر XML الذي تم تعيينه (type="list" mapXML="CLOB"). يُستخدم المفتاح الأساسي بواسطة إطار العمل لتحديد ما إذا كانت إضافة عنصر القائمة أو تحديثه أو حذفه مطلوبًا أثناء تحديث كائن العمل.

ملاحظة: لا يتطلب تحديد المفتاح الأساسي لقائمة كائن العمل المرتبطة بقائمة كائن الصيانة. عندما تكون القائمة الفعلية مرتبطةً، يتم اشتقاق المفتاح الأساسي من بيانات التعريف الفعلية الموجودة.
<questionnaire 
type="list" mapXML="CASE_CLOB">
  <question 
  isPrimeKey="true"/>
  <answer/>
</questionnaire>
orderBy= "XPath asc|desc, XPath asc|desc"

وفقًا للإعدادات الافتراضية، يتم فرز القائمة المحددة في عنصر XML الذي تم تعيينه (type="list" mapXML="CLOB") حسب العنصر الأول من القائمة. يمكن تحديد ترتيب فرز آخر باستخدام السمة orderBy. قيمة السمة هي قائمة مفصولة بفواصل لمسارات X للحقل (المرتبطة بعنصر القائمة) بترتيب فرز اختياري (التصاعدي هو الافتراضي).

ملاحظة: هذا غير متاح إلا للقوائم التي تم تعيينها كقوائم XML في كائنات العمل.
<questionnaire type="list" 
  orderBy="page/section, 
page/sequence" 
mapXML="CASE_CLOB">
<question isPrimeKey="true"/>
<answer/>
<page type="group">
  <section/>
  <sequence/>
</page>
</questionnaire>

السمات الوصفية

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

رمز الاختصار القيم الصالحة الوصف الأمثلة
<!-- comment -->

استخدم هذه القيمة لإضافة تعليق إلى المخطط عن طريق استخدام حروف الفتح والإغلاق الخاصة: <!-- و -->.

<schema>
  <!-- This schema is used to 
capture business information 
only, please refer to the 
'HUMAN' BO for person 
information -->
</schema>
description= "النص"

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

<schema>
  <active type="boolean" 
description="active account" 
label="Active"/>
</schema>
label= "النص"

يجب أن تكون تسمية العنصر جزءًا صغيرًا من الاستفاضة، والذي عادةً ما يسبق العنصر في واجهة المستخدم.

<schema>
  <active type="boolean" 
description="active account" 
label="Active"/>
</schema>
required= "true"

تُستخدم هذه القيمة لطلب وجود العنصر أثناء تفاعل الكائن.

ملاحظة: بالنسبة للمخططات المضمنة، لا تتم معالجة السمة required="true" في مخططات خدمة الأعمال وكائن العمل عند تضمينها في مخطط سكريبت الخدمة. وهذا لدعم إمكانية سكريبت الخدمة لملء العناصر المطلوبة قبل استدعاء خدمة أعمال أو كائن عمل مضمن من سكريبت الخدمة.

<schema>
  <logDate mapField="LOG_DT" 
default="%CurrentDate" 
required="true" 
private="true"
</schema>
mdField= "رمز الحقل"

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

ملاحظة: بالنسبة لمخطط كائن العمل، يتم استخدام السمة mapField لاشتقاق نوع البيانات والتسمية. ويمكن إدخال السمة mdField لتجاوز هذه السمات، إذا كان هذا مطلوبًا. في حالة ربط العنصر بعمود XML، يتطلب إدخال السمة mdField لتوفير التسمية ونوع البيانات المناسب.
<schema>
  <active 
mdField="CM_ACTIVE_SW"/>
</schema>
fkRef= "رمز مرجع المفتاح الخارجي"

في حالة ما إذا كان العنصر مفتاحًا خارجيًا، سيتيح تحديد مرجع المفتاح الخارجي الخاص به إمكانية تمكين التحقق من إطار العمل للعنصر أثناء تفاعل المخطط وتوفير إمكانية التنقل والأوصاف آليًا.

<schema>
  <person fkRef="PER" 
mapField="CHAR_VAL_FK1">
   <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE_CD is="PER"/>
    </row>
  </person>
</schema>
private= "true"

سيؤدي تعليم العنصر كخاص إلى منع عرضه في تفاعل المخطط.

ملاحظة: يتطلب العنصر الخاص قيمةً افتراضيةً.
<schema>
  <type mdField="SA_TYPE_CD" 
default="E1" private="true"/>
</schema>
suppress= "true"

يمنع هذا الإعداد عرض العنصر في واجهات المستخدم المنشأة آليًا.

ملاحظة: يمكن تحديد هذه السمة في مجموعة، وفي هذه الحالة، سيتم إيقاف كل العناصر الموجودة في المجموعة.
ملاحظة: ارجع إلى الافتراض ومتغيرات النظام للحصول على إشعار مرتبط بالقيم الافتراضية للعناصر المحظورة.
<schema>
    <ls mdField="LIFE_SUPPORT_FLG" 
default="N" suppress="true"/<
</schema>
"blank"

يعني هذا الإعداد أن عرض واجهة المستخدم الآلي في وضع العرض سيقوم بإخفاء العنصر إذا كانت قيمته فارغةً. وسيظل العنصر قابلاً للتعديل في مخطط الإدخال سواء كانت قيمته فارغةً أم لا.

<schema>
  <email mdField="EMAIL" 
suppress="blank"/>
</schema>
"input"

يعني هذا الإعداد أن عرض واجهة المستخدم الآلي سيقوم بإيقاف إدخال العنصر، وبالرغم من ذلك، يمكن أن يظل معروضًا إذا لم تكن قيمته فارغةً.

ملاحظة: ستؤدي العناصر التي تم تعليمها بقيمة suppress="input" بنفس طريقة قيمة suppress="blank". وفي حالة ما إذا كانت القيمة فارغةً، لن يتم عرض أي قيمة سواء في مخطط الإدخال أو العرض. وفي حالة ما إذا كانت قيمة العنصر موجودةً، سيتم عرض العنصر في مخطط الإدخال والعرض معًا.
ملاحظة: ارجع إلى الافتراض ومتغيرات النظام للحصول على إشعار مرتبط بالقيم الافتراضية للعناصر المحظورة.
<schema>
  <email mdField="EMAIL" 
suppress="input"/>
</schema>
noAudit= "true"

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

ملاحظة: هذه السمة غير قابلة للتطبيق إلا في مخططات كائن العمل.
<schema>
  ...
  <version mapField="VERSION_NBR"
 noAudit="true"/>
  ...
  <workFields type="group"
 noAudit="true"
    <lastProcessedId/>
    <lastProcessedTime/>
  </workFields>
</schema>
storeEmptyNodes= "true"

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

يمكن أن تكون هذه السمة مفيدة في الحالات التي يتم فيها تبادل بيانات كائن العمل بنظام خارجي ويكون مطلوبًا التمييز بين قيمة فارغة لعنصر يشارك في المزامنة وعنصر لا يشارك ولذلك يتم حذفه من الرسالة بالكامل.

ملاحظة: لا يتوفر ذلك إلا لعناصر القائمة أو المجموعة.
<schema>
  <message type="group" storeEmptyNodes="true">
  ...
  </message>
</schema>
emitEmptyGroups= "true"

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

قد تكون هذه السمة مفيدة في نفس المواقف التي قد تتطلب استخدام سمة storeEmptyNodes=.

ملاحظة: يتوفر هذا الخيار فقط لمخططات خدمة الأعمال وكائن العمل.
<schema emitEmptyGroups="true">
  <message type="group">
  ...
  </message>
</schema>
emitEmptyElements= "true"

تتشابه هذه السمة مع سمة emitEmptyGroups=، ولكن يمكن تحديدها أيضًا على مستوى الحقل. وتنطبق السمة على كل أنواع المخططات.

<schema>
  <messageNumber type="field" emitEmptyElements="true">
  ...
  </message>
</schema>
adheresToDA= "قائمة مفصولة بفواصل بأسماء مناطق البيانات."

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

ملاحظة: تعتبر الطريقة الموصى بها لفرض هيكل منطقة بيانات مشتركة هي تضمين الهيكل في المخطط. ويجب أن تقتصر هذه السمة على حالات الاستخدام التي لا تتوفر فيها إمكانية تضمين منطقة البيانات.
<schema>
  <messageNumber type="group" adheresToDA="DataAreaName">
  ...
  </message>
</schema>

ثوابت المخطط

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

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

  • يتم تحديد قيمة بحث لنوع الخيار للبحث F1CN_​OPT_​TYP_​FLG. على سبيل المثال، M202 - نوع الرسالة الصادرة لإتمام النشاط باسم قيمة Java outmsgCompletion

  • المخطط الأساسي المستخدَم في إنشاء الرسالة الصادرة التي تخص "إتمام النشاط"، والتي تشير إلى ثابت المخطط باستخدام اسم قيمة Java لقيمة البحث لنوع الخيار

    ...
    <outboundMessageType mapField="OUTMSG_TYPE_CD" default="%Constant(outmsgCompletion)"/>
    ...

بوقت النسخة المعدلة، يجب أن يقوم المستخدمون الإداريون بتكوين نوع الرسالة الصادرة المناسب لأجل "إتمام النشاط". ثم التنقل إلى تكوين الميزة واختيار نوع ميزة ثوابت المخطط، ثم اختيار نوع الخيار "نوع الرسالة الصادرة لإتمام النشاط" وإدخال نوع الرسالة الصادرة المنشأ حديثًا في قيمة الخيار.

يمكن أيضًا استخدام ثوابت المخطط في صياغة الفصل لتحديد عناصر الصف المطلوبة للفصل.

الإعداد الافتراضي ومتغيرات النظام

يمكن استخدام السمة الافتراضية لتعيين القيم الافتراضية في عناصر الحقل، بالإضافة إلى عناصر الصف المطلوبة للفهرسة. يمكنك إعداد الحقل افتراضيًا لثابت أو لمتغير من متغيرات النظام المختلفة.

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

عندما يكون العنصر اختياريًا، يمكن تكوين قيمة افتراضية لتوفير قيمة مقترحة للمستخدم عند ملء السجل في واجهة المستخدم في وضع "الإضافة". يجب أن يتمكن المستخدمون من إزالة القيمة الافتراضية لهذا النوع من العناصر ولن يحاول النظام ملئها في وقت الحفظ.

ملاحظة:

المعيار الخاص بصيانة "القائمة" هو عرض صف فارغ لقائمة جديدة يمكن للمستخدم أو لا يمكنه اختيار ملئها. وبذلك، لا يتم عرض القيم الافتراضية لواجهة المستخدم لعناصر القائمة.

لا يوصى بتكوين سمة افتراضية لعنصر اختياري غير قابل للتحرير أو مرئي في واجهة المستخدم في وضع "الإضافة" (على سبيل المثال، عنصر suppress="true" أو suppress="input" أو عنصر قائمة لا تظهر قيمته الافتراضية لكل نقطة سابقة). لا يزال الإعداد الافتراضي لهذا النوع من العناصر مطبقًا ولكن ليس لدى المستخدم إمكانية إعادة تعيين القيمة. قد يؤدي ذلك إلى عدم اتساق نظرًا لعدم حدوث تعيين افتراضي للحقول الاختيارية التي تمت إضافتها بواسطة حالة استخدام بخلاف تفاعل واجهة المستخدم.

رمز الاختصار القيم الصالحة الوصف الأمثلة
default= "القيمة" يتم استخدام هذه السمة للإعداد الافتراضي لعنصر بقيمة محددة. تعتمد القيم الصالحة على إعداد dataType.
<schema>
  <perType mapField="PER_OR_BUS_FLG" 
default="P" required="true"/>
</schema>
<schema>
  <frequency dataType="number" 
default="1" required="true"/>
</schema>
"%CurrentDate" يتم استخدامها للإعداد الافتراضي لعنصر بالتاريخ الحالي. غير قابلة للتطبيق إلا على عناصر التاريخ.
<schema>
  <logDate mapField="LOG_DT" 
default="%CurrentDate" required="true"/>
</schema>
"%CurrentDateTime" يتم استخدامها للإعداد الافتراضي لعنصر بالتاريخ/الوقت الحاليين. غير قابلة للتطبيق إلا على عناصر التاريخ/الوقت.
<schema>
  <logDateTime mapField="LOG_DTTM" 
default="%CurrentDateTime" 
required="true"/>
</schema>
"%StandardDateTime" يتم استخدامها للإعداد الافتراضي للتاريخ والوقت القياسيين. التاريخ والوقت القياسيان مماثلان للتاريخ والوقت الحاليين، إلا إذا كان التوقيت الصيفي/توقيت الصيف ساريًا للمنطقة الزمنية الأساسية. ويمكن استخدامها مع السمة stdTime.
ملاحظة: لمزيد من المعلومات، الرجاء الرجوع إلى اعتبارات التوقيت القياسي.
<schema>
  <startDateTime mapField="START_DTTM" 
default="%StandardDateTime" 
required="true"/>
</schema>
"%ProcessDate" يمكنك إعداد تاريخ المعالجة افتراضيًا. يختلف تاريخ المعالجة عن التاريخ الحالي لأن تاريخ المعالجة سيظل ثابتًا خلال مدة المعالجة التي يتم تنفيذها. وسيعكس التاريخ الحالي التاريخ الفعلي للمعالجة. وهذا مماثل لتاريخ عمل مجموعة المعالجة والذي يعتبر معلمة مجموعة معالجة قياسية.
<schema>
  <billDate mapField="BILL_DT" 
default="%ProcessDate" 
required="true"/>
</schema>
"%ProcessDateTime" هذا مماثل للقيمة "%ProcessDate"، ولكن لحقول التاريخ/الوقت.
<schema>
  <calcDateTime mapField="CALC_DTTM" 
default="%ProcessDateTime" 
required="true"/>
</schema>
"%CurrentUser" يتم استخدامها للإعداد الافتراضي لعنصر بالمستخدم الحالي.
<schema>
  <logUser mapField="LOG_USER" 
default="%CurrentUser" 
required="true"/>
</schema>
"%CurrentUserTimeZone" يتم استخدامها للإعداد الافتراضي لعنصر بالمنطقة الزمنية للمستخدم الحالي. في حالة عدم وجود المنطقة الزمنية للمستخدم الحالي، يتم استخدام المنطقة الزمنية للتثبيت.
<schema>
  <timeZone 
default="%CurrentUserTimeZone" 
required="true"/>
</schema>
"%CurrentUserLanguage" يتم استخدامها للإعداد الافتراضي لعنصر بلغة المستخدم الحالي.
<schema>
  <custLanguage mapField="CUST_LANG" 
default="%CurrentUserLanguage" 
required="true"/>
</schema>
"%InstallationCurrency" يتم استخدامها للإعداد الافتراضي للعملة من سجل التثبيت.
<schema>
  <currency mapField="CURRENCY_CODE" 
default="%InstallationCurrency" 
required="true"/>
</schema>
"%InstallationCountry" يمكنك إعداد قيمة الدولة افتراضيًا من سجل التثبيت.
<schema>
  <country mapField="COUNTRY" 
default="%InstallationCountry" 
required="true"/>
</schema>
"%InstallationLanguage" يمكنك إعداد اللغة افتراضيًا من سجل التثبيت.
<schema>
  <language mapField="LANGUAGE" 
default="%InstallationLanguage" 
required="true"/>
</schema>
"%Constant( )" يمكنك إعداد قيمة العنصر افتراضيًا باستخدام ثابت المخطط. فيما يلي مثال على ثابت المخطط المستخدَم كقيمة افتراضية، حيث يكون اسم قيمة Java لقيمة البحث هو 'customerLanguage'.
<language mapField="CUSTOMER_LANG" 
default="%Constant(customerLanguage)" 
required="true"/>
"%Context( )" يمكنك إعداد قيمة مضمنة في متغير السياق افتراضيًا.
تحذير: يجب بدء متغيرات السياق في سكريبت الملقم قبل إمكانية تطبيق السياق الافتراضي للمخطط. لمزيد من المعلومات، الرجاء الرجوع إلى متغيرات السياق.
مثال على متغير سياق يتم استخدامه كقيمة افتراضية:
<source mapField="PER_ID" 
default="%Context(source)" 
required="true"/>
ملاحظة: عند تحديد متغير سياق في كتابة السكريبت، يجب أن يكون مسبوقًا بالبادئة $$. عند الإشارة إلى المتغير في صياغة %Context( )، لا يتم تضمين البادئة.
defaultRef= "المسار X"

يتم استخدام هذه السمة للإعداد الافتراضي لقيمة عنصر بقيمة عنصر آخر.

للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.

سمات وعُقد الفصل

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

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

تحديد القائمة أو الجدول الفرعي

عند فصل الجدول الفرعي، يجب إدخال عقدة الصف لتحديد القائمة/الجدول الفرعي الذي يحتوي على العنصر. في عقدة الصف، يجب تحديد عنصر واحد على الأقل بتعريف is= الذي يضمن أن العنصر صف فريد في قاعدة البيانات. يمكن لعقدة الصف أيضًا تحديد العناصر أو الحقول بالصف، التي تم إيقافها وملؤها باستخدام تكوين القيمة الافتراضية.

  • بالنسبة لكائن العمل، تحدد عقدة الصف الجدول الفرعي الذي ينتمي إليه الحقل المنفصل.

    الصياغة هي <row mapChild="table name">. هذا المثال للحصول على قائمة بالأشخاص لحساب في منتج خدمة العملاء والفوترة. يمكن تحديد أحد الأشخاص كشخص "رئيسي". ويوضح هذا كيفية تحديد عنصر واضح لمعرف الشخص الرئيسي لتبسيط المراجع إلى هذا الحقل. وهو جزء من الجدول الفرعي CI_​ACCT_​PER. وما يجعله فريدًا هو أن قيمة MAIN_​CUST_​SW هي true (ولا يمكن أن توجد هذه القيمة إلا لصف واحد)

    <custId mapField="PER_ID" mdField="CM-MainCust">
      <row mapChild="CI_ACCT_PER">
        <MAIN_CUST_SW is="true" />
        <ACCT_REL_TYPE_CD default="MAIN" />
      </row>
    </custId>
    ملاحظة: يوضح المثال أعلاه أنه يمكن لعقدة الصف أيضًا تحديد العناصر بالقائمة، التي تم إيقافها وتعيين قيمة افتراضية لها. لا تُستخدم هذه الصياغة أبدًا في تحديد صف معين. لاحظ أن القيمة الافتراضية يمكن أن تكون سلسلةً حرفيةً أو متغير النظام.
  • بالنسبة لخدمة الأعمال، تحدد عقدة الصف اسم القائمة التي ينتمي إليها الحقل المنفصل.

    الصياغة هي <row mapList="list name">. يعرض هذا المثال إدخالين من القائمة التي يتم فصلها إلى قيمة حقل ووصف.

    <selectList type="list" mapList="DE"> 
        <value mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
              <SEQNO is="2"/> 
    </row> 
        </value>  
      <description mapField="COL_VALUE"> 
    <row mapList="DE_VAL"> 
            <SEQNO is="3"/> 
    </row> 
      </description> 
    </selectList>

تحديد القائمة أو الحقل المنفصل بشكل فريد

يتم استخدام الصياغة is= في الصف أو عنصر rowFilter لتحديد الصف بشكل فريد.

رمز الاختصار القيم الصالحة الوصف الأمثلة
is= "القيمة" يتم استخدام هذه السمة للإشارة إلى القيمة مباشرةً.
<tdTypeCd 
  mapField="CHAR_VAL_FK1">
  <row 
    mapChild="F1_EXT_LOOKUP_VAL_CHAR">
    <CHAR_TYPE_CD 
   is="CM-TD-TYPE"/>
  </row>
</tdTypeCd>
"%Constant( )" يمكنك تكوين العنصر المنفصل باستخدام ثابت المخطط. أثناء تفاعل الخدمة، سيتم استخدام قيمة ثابت المخطط لتحديد العنصر المنفصل في الصف الفرعي الخاص به.

مثال على ثابت المخطط المستخدَم في صياغة الفصل، حيث يكون اسم قيمة Java لقيمة حقل البحث هو 'cmRate'.

<unitRate mapField="CHAR_VAL" 
  dataType="number">
  <row mapChild=
   "F1_EXT_LOOKUP_VAL_CHAR">
    <CHAR_TYPE is
   ="%Constant(cmRate)"/>
  </row>
</unitRate>
"%n" يتم استخدام قيمة الاستبدال %n للإشارة إلى مثيل القائمة المرتبط. وعادةً ما يتم استخدام مثيل القائمة المرتبط في تكوين العنصر المنفصل للجدول الفرعي المزود برقم التسلسل. يجب أن تكون قيمة n عددًا صحيحًا موجبًا. أثناء تفاعل قراءة كائن العمل، سيتم إظهار (موضع) مثيل القائمة المرتبط المحدد بواسطة العدد الصحيح. مثال على مثيل القائمة المرتبط، حيث يتم إظهار المثيل الأول للصف.
<schema>
  <mainPhone mapField="PHONE">
    <row mapChild="CI_PER_PHONE">
      <PHONE_TYPE_CD 
      is="%Constant(mainPhoneType)"/>
      <SEQ_NUMis="%1"/>
    </row>
  </mainPhone>
</schema>
المسار السريع: يتم استخدام القيم الإضافية التي تخص is= عند فصل قائمة بتاريخ تفعيل. لمزيد من المعلومات، الرجاء الرجوع إلى هذا القسم.

فصل نوع الخاصية المحددة مسبقًا

في حالة ما إذا كان الحقل المنفصل موجودًا في مجموعة خواص ونوع الخاصية هو "الخاصية المحددة مسبقًا"، سيقوم عرض واجهة المستخدم الآلي بإنشاء قائمة منسدلة لقائمة القيم الصالحة. على سبيل المثال، سيقوم المخطط أدناه بإنشاء قائمة منسدلة لعنصر الاستخدام، تعرض القيم الصالحة لنوع خاصية "استخدام سبب الحالة" (F1-SRUSG).

<usage mdField="STATUS_RSN_USAGE" mapField="CHAR_VAL">
  <row mapChild="F1_BUS_OBJ_STATUS_RSN_CHAR">
      <CHAR_TYPE_CD is="F1-SRUSG"/>
      <SEQ_NUM is="1"/>
  </row>
</usage>

تحديد عناصر متعددة من القائمة

عند محاولة تضمين أعمدة متعددة من نفس القائمة، يوفر النظام مجموعة رموز مختصرة لنسخ قواعد الفصل المحددة في عنصر آخر لكي لا يتطلب تكرار قواعد الفصل. وللقيام بهذا، تحتوي عقدة الصف على السمة rowRef وتشير إلى اسم العنصر الآخر الذي يحدد معلومات التعيين. يوضح المثال التالي طريقة فصل الحقلين "معرف العميل" و"استلام نسخة من الفاتورة" من نفس قائمة الأشخاص للحساب (حيث تكون قيمة MAIN_​CUST_​SW هي true).

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
      <MAIN_CUST_SW is="true" />
      <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<copyBill mapField="RECEIVE_COPY_SW" rowRef="custId"/>

لاحظ أن مجموعة الرموز أعلاه توضح أيضًا أنه يمكن تحديد rowRef مباشرةً في تعريف السمة للعنصر.

ملاحظة: للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.

الفصل على عمق طبقتين

في حالة قيام كائن الصيانة أو الخدمة الخاصة بك بتضمين قوائم في طبقتين، يدعم النظام فصل عنصر في العنصر المنفصل. تستخدم هذه التقنية أيضًا السمة rowRef. يشير الفصل بالمستوى الثاني إلى العنصر المنفصل بالمستوى الأول. يوضح المثال التالي فصل الخاصية إلى عنصر يسمى legalContact للعميل "الرئيسي" لاحظ أن العنصر legalContact له عقدتين من عُقد الصف: الأولى للإشارة إلى معلومات الفصل للسجل الرئيسي الخاص به، والثانية لتحديد الجدول الفرعي الخاص به

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
    <MAIN_CUST_SW is="true" />
    <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<legalContact mapField="CHAR_VAL_FK1">
  <row rowRef="custId">
    <row mapChild="CI_ACCT_PER_CHAR" >
       <CHAR_TYPE_CD is="LEGAL" />
    </row>
  </row>
</legalContact>

لاحظ أن مجموعة الرموز أعلاه توضح أيضًا أنه يمكن تحديد rowRef كسمة لعقدة الصف بدلاً من تحديدها مباشرةً في تعريف السمة للعنصر.

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

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

بدلاً من عقدة الصف، يتم تكوين القائمة المنفصلة بالعنصر rowFilter. يعرض المخطط التالي المثال الموضح. تحدد عقدة القائمة الجدول الفرعي. ويتضمن rowFilter المعايير التي تحدد الصفوف في الجدول، المطلوب تضمينها. ويتم تحديد عناصر القائمة في عقدة القائمة خارج العنصر rowFilter.

<custId mapField="PER_ID">
  <row mapChild="CI_ACCT_PER">
    <MAIN_CUST_SW is="true" />
    <ACCT_REL_TYPE_CD default="MAIN" />
  </row>
</custId>
<miscPersons type="list" mapChild="CI_ACCT_PER">
  <rowFilter>
    <MAIN_CUST_SW is="false" />
  </rowFilter>
  <relType mapField="ACCT_REL_TYPE_CD"/>
  <personId mapField="PER_ID"/>
</custId>

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

فصل قائمة بتاريخ تفعيل

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

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

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

  • إذا لم يكن من المهم تتبع التغييرات التي تم إجراؤها على القيمة، فتوصي بتعيين تاريخ التفعيل على قيمة ثابتة في المخطط. (الأمثلة أدناه).
  • إذا كان من المهم تتبع التغييرات التي تم إجراؤها على القيمة، فيجب مراعاة كيفية تصميم مخطط قاعدة البيانات.
    • أحد الخيارات هو تعريف قائمة منفصلة كما هو موضح أعلاه. كل من القيمة وتاريخ الفعالية عنصران في هذه القائمة. في حالة الاستخدام هذه، يمكنك إدارة القائمة تمامًا مثل أي قائمة. يمكنك إضافة قيم أو إزالتها.
    • وهناك خيار آخر وهو تحديد قيمة مفردة منفصلة في المخطط. باستخدام هذا الخيار، عند استرجاع السجل، يتم إرجاع آخر قيمة نافذة. في هذا التصميم، يكمن السؤال المهم في كيفية تحديد التاريخ المرجعي.
ملاحظة: للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.

العناصر المنفصلة حيث لا يتم تتبع التغييرات

فيما يلي مثال على فصل عنصر في مجموعة بتاريخ تفعيل حيث لا يلزم أن تكون القيمة بتاريخ تفعيل. التوصية في هذه الحالة هي كتابة تعليمات برمجية مضمنة للتاريخ في السمة is=.

<schema>
  <externalReference mapField="ADHOC_CHAR_VAL" mdField="CM_EXT_REF" dataType="string">
    <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="CM_EXT_REF"/>
      <EFFDT is="2000-01-01"/>
    </row>
  </externalReference>
</schema>

العناصر المنفصلة التي لها تواريخ فعالية للتغييرات

إذا كنت تريد أن يقوم مخطط كائن العمل بتسوية قيمة بتاريخ نفاذ يجب أن تتبع التغييرات بمرور الوقت، ستمثل القيمة المنفصلة آخر قيد نفاذ. وفي هذه الحالة، يوصى بتحديد حقل التاريخ أو التاريخ/الوقت صراحة كعنصر. ثم هناك صياغة للسمة is= للإشارة إلى أن حقل التاريخ الصريح هو التاريخ المطلوب استخدامه للقيمة.

رمز الاختصار القيم الصالحة الوصف الأمثلة
is= "%effectiveDate( )" يتم استخدام هذا التكوين لتوضيح أنه يمكن للتاريخ استخدام قيمة عنصر آخر.
ملاحظة: للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.
<schema>
  <price mapField="CHAR_VAL" 
   dataType="number" required="true">
    <row mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT 
   is="%effectiveDate(priceEdate)" />
    </row>
  </price>
<priceEdate mapField="EFFDT" 
  rowRef="price"/>
</schema>
"%effectiveDateTime( )" يتم استخدام هذا التكوين لتوضيح أنه يمكن للتاريخ/الوقت استخدام قيمة عنصر آخر.
ملاحظة: للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.
<schema>
  <price mapField="CHAR_VAL" 
  dataType="number">
    <row mapChild="RATE_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDTTM 
  is="%effectiveDateTime(priceEdatetime)"/>
    </row>
  </price>
  <priceEdatetime mapField="EFFDTTM" 
  rowRef="price"/>
</schema>

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

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

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

رمز الاختصار القيم الصالحة الوصف الأمثلة
is= "%effectiveDate"

لا يُنصح بهذا التكوين

<schema>
  <price mapField="CHAR_VAL" 
  dataType="number">
    <row 
  mapChild="CI_SA_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT
   is="%effectiveDate"/>
    </row>
  </price>
</schema>
"%effectiveDateTime"

لا يُنصح بهذا التكوين

<schema>
  <price mapField="CHAR_VAL" 
   dataType="number">
    <row mapChild="RATE_CHAR">
      <CHAR_TYPE is="PRICE"/>
      <EFFDT 
    is="%effectiveDateTime" />
    </row>
  </price>
</schema>

منطقة البحث

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

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

search="search zone"

يمكن استخدام سمة البحث في مخطط واجهة المستخدم، ويتم استخدامها لإنشاء سمة مخطط واجهة المستخدم oraSearch آليًا. وتعتبر منطقة البحث منطقة مستكشف تم تكوينها كبحث.

<person fkRef="PER" search="C1_PSRCH"/>

searchField="search field:element|'literal';"

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

حقل البحث: element|'literal'. يمثل حقل البحث مرشح منطقة البحث المطلوب ملؤه عند بدء التشغيل. ويكون العنصر هو عنصر المخطط المستخدَم لملء المرشح. ويعتبر العنصر اختياريًا، في حالة تركه فارغًا، سيتم تعيينه افتراضيًا للعنصر الذي تم تحديد هذه السمة عليه. وتصبح أيضًا قيمة searchField هي literal كقيمة إدخال.

ملاحظة: يمكن ملء مرشحات متعددة في منطقة البحث عند بدء التشغيل، ولكن يجب إنشاء أزواج حقل بحث متعددة في قيمة السمة. وسيتم استخدام القيمة المحددة هنا في إنشاء سمة oraSearchField بتنسيق HTML مباشرةً في مخطط واجهة المستخدم، حيث يتم تحديد هذا المخطط.
ملاحظة: لاحظ أن مرجع العنصر نسبي. للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.
<person fkRef="PER" search="C1_PSRCH" searchField="PERSON; PER_TYPE:personType;"/>

searchOut="search field:element;"

لا يمكن استخدام السمة searchOut إلا بالتزامن مع سمة البحث. ويتم استخدام السمة searchOut لإنشاء سمة مخطط واجهة المستخدم oraSearchOut. ويتم استخدام القيمة searchOut لتسجيل القيمة المحددة من منطقة البحث ونقلها إلى عنصر مخطط واجهة المستخدم. يجب أن تتطابق القيمة searchOut المحددة مع رمز اختصار ELEMENT_​NAME في معلمة منطقة نتائج البحث.

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

ملاحظة: يمكن ملء عناصر متعددة كنتيجة لتحديد منطقة البحث، ولكن يجب إنشاء أزواج حقل بحث متعددة في قيمة السمة. وسيتم استخدام القيمة المحددة هنا في إنشاء سمة بتنسيق HTML "oraSearchOut" مباشرةً في مخطط واجهة المستخدم، حيث يتم تحديد هذا المخطط.
ملاحظة: لاحظ أن مرجع العنصر نسبي. للحصول على الصياغة المدعومة للإشارة إلى العناصر الأخرى، الرجاء الرجوع إلى الإشارة إلى العناصر الأخرى.
<person fkRef="PER" search="C1_PSRCH" searchField="PER_ID" 
searchOut="PER_ID;PRIMARY_PHONE:personPhone;"/>

توسيع الحماية لسكريبت الخدمة

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

appSecurity="true"

السمة appSecurity غير متاحة إلا لمخططات سكريبت الخدمة. وفي حالة تحديدها، سيتم تقييم خدمة التطبيق، الخاصة بأي كائن عمل أو سكريبت خدمة تم استدعاؤه مباشرةً بواسطة سكريبت الخدمة، للوصول.

<schema appSecurity="true">
  ...
</schema>

إجراء التجاوز لخدمة الأعمال

في حالة ما إذا كنت تريد استدعاء خدمة الأعمال بإجراء آخر غير "قراءة"، يجب تحديد سمة الإجراء في العقدة الأساسية بمخطط خدمة الأعمال.

pageAction="add, change, delete"

يتم استخدام سمة الإجراء لتجاوز الإجراء الافتراضي "قراءة" في مخطط خدمة الأعمال. القيم الصالحة هي:

  • إضافة

  • تحديث (غير مسموح به إلا لخدمة كائن الصيانة)

  • تغيير (غير مسموح به لخدمة كائن الصيانة)

  • حذف

  • قراءة (وهو الإجراء الافتراضي في حالة عدم تحديد pageAction)

مثال:

<schema pageAction="change">
  <parm type="group">
    <ele1/>
    <ele2/>
  </parm>
</schema>

تحديد السمة searchBy لخدمة البحث

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

searchBy="MAIN"

يمكن العثور على قيم السمة searchBy عن طريق عرض مخطط XML المرتبط بخدمة الأعمال، استخدم "عرض عنوان URL لمخطط XML". والقيم النموذجية هي:

  • MAIN

  • ALT

  • ALT2

  • ALT3

  • إلخ
<schema searchBy="MAIN">
  <AccountID mapField="ACCT_ID"/>
  <Results type="list">
    <AccountID mapField="ACCT_ID"/>
  </Results>
</schema>

تضمين المخططات الأخرى

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

يتطلب تضمين المخطط جزأين:

  1. عقدة التضمين
  2. سمة الاسم

يوضح الجدول التالي عبارات التضمين المدعومة.

رمز الاختصار الوصف الأمثلة

<includeBO name=" "/>

مسموح بتضمين مخطط كائن العمل في مخطط آخر.

لاحظ أن قواعد التعيين لكائن العمل أو مخطط خدمة الأعمال يمكن أن تكون منطقيةً في سياق المخطط الرئيسي أو قد لا تكون منطقيةً. ويعتبر تضمين المخططات الأخرى على مسؤوليتك. ومع ذلك، يعتبر أحد الجوانب المفيدة جدًا لمعالجة XML هو أن إطار العمل يتجاهل السمات غير المرتبطة. بمعنى آخر، لن يتسبب وجود سمات التعيين المضمنة في مخطط السكريبت في أي ضرر.

<schema>
  <cust type="group">
<includeBO name="C1-Person"/>
</cust>
  <spouse type="group">
<includeBO name="C1-Person"/>
</spouse>
</schema>

<includeBS name=" "/>

يتم استخدامها لتضمين مخطط خدمة الأعمال.

<schema>
<includeBS name="F1-ReadMOLog"/>
</schema>

<includeDA name=" "/>

يتم استخدامها لتضمين مخطط منطقة البيانات.

<schema>
<includeDA 
   name="F1CommonSchemaFieldData"/>
</schema>

<includeMP name=" "/>

يتم استخدامها لتضمين مخطط واجهة المستخدم.

<schema>
<includeMP 
   name="F1-DisplayRecordActions"/>
</schema>

<includeSS name=" "/>

يتم استخدامها لتضمين مخطط سكريبت الخدمة.

<schema>
<includeSS name="F1-ActShowZn"/>
</schema>

سمات التوافق

تمت إضافة هذه السمات كجزء من الترقيات من الإصدارات السابقة لتطبيق "إطار العمل".

fwRel="2"

تمت إضافة هذه السمة إلى المخططات التي تم إنشاؤها في إطار العمل 2 كجزء من ترقية إطار العمل 4. ولن تتطلب المخططات الجديدة هذه السمة. لا يُنصح بتعديل هذه السمة بدون فهم الاختلافات التالية في طرق الأداء لأن التغييرات غير الصحيحة يمكن أن تؤدي إلى حدوث أخطاء:

ملاحظة: ستقوم المخططات التي تم إنشاؤها في إطار العمل 2 بالسمة fwRel="2" بتخزين أي حقول XML تم تعيينها ضمن المجموعات كعناصر XML بالمستوى الأعلى في حقل mapXML. وهذا يعني أنه في حالة وجود نفس اسم الحقل لحقلين أو أكثر من الحقول، في بُنى مجموعة مختلفة، سيتعارض تخزين هذين الحقلين مع حقل آخر، مما سيؤدي إلى حدوث أخطاء. وستقوم طريقة الأداء الجديدة، بدون السمة fwRel="2"، بالاحتفاظ ببنية المجموعة وتجنب التعارضات.
<schema fwRel="2"
    ...
</schema>