الحفاظ على إدارة دورة حياة تطبيق سليمة لنموذج تطبيق مستند إلى النموذج
توفر لك هذه المقالة معلومات حول السيناريوهات المختلفة حول كيفية تنفيذ وممارسة إدارة دورة حياة التطبيقات السليمة (ALM) لتخصيص النماذج في حلول التطبيقات المستندة إلى النموذج.
تصف الأقسام التالية كيفية عمل دمج النماذج وكيفية الحفاظ على التخصيصات. تتم تغطية سيناريوهات التطوير الأساسية مع توصيات للحفاظ على نجاح ALM لنموذج تطبيق يستند إلى نموذج بالتفصيل في كل قسم يليه. يتضمن كل سيناريو خطوات يجب اتباعها والتي يمكن أن تساعدك في تنفيذ عملية ALM مناسبة عند تحديث الحل أو التطبيق المستند إلى نموذج.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
- قم بإنشاء نموذج جديد باسم FormA في بيئة التطوير الخاصة بك وقم بإجراء التخصيصات على النموذج.
- قم بإنشاء حل جديد (يسمى الحل A في الرسم البياني أدناه) في بيئة التطوير، والذي سيكون حلاً غير مُدار وإضافة شكلك الجديد. تصدير الحل كمدار. تقوم هذه الخطوة بتصدير FormXml كامل للنموذج.
- في بيئة الاختبار الخاصة بك، قم باستيراد الحل المُدار من الخطوة 2، والتي تُنشئ FormA في بيئة الاختبار. في الرسم التخطيطي أدناه، يتم إنشاء FormA في بيئة الاختبار وتظهر واجهة المستخدم الخاصة بالنموذج Field1 وField2 اللذين أضافهما الحل A إلى النموذج.
- عندما تقوم بتخصيص النموذج الذي قمت بإنشائه في الخطوة 1 باستخدام بيئة تطوير (مصدر) جديدة، قم باستيراد الحل A الذي تم إنشاؤه في الخطوة 2، تأكد من أن مثيل التطوير الذي تستخدمه يحتوي على FormA في حالة مدارة. كما هو موضح في الرسم التخطيطي أدناه، يتم استيراد الحل A المُدار في بيئة التطوير ويتم تخصيص النموذج لإنشاء تخصيصات نشطة. بعد ذلك، يمكن إضافة FormA إلى حل جديد غير مُدار (الحل B في الرسم التخطيطي) وتصديرها كحل مُدار من بيئة التطوير. تقوم هذه الخطوة بتصدير FormXml للفوارق للنموذج.
- في بيئة الاختبار، قم باستيراد الحل المُدار (الحل B) من الخطوة 4. كما هو موضح في الرسم البياني أدناه، يقوم الحل B بإضافة Field3 جديد إلى FormA ويقوم بإزالة Field2، الذي تمت إضافته بواسطة الحل A. تُظهر واجهة مستخدم النموذج في بيئة الاختبار الآن Field3 وField1 على النموذج وليس Field2 بعد الدمج.
كما هو موضح في الرسم التخطيطي أدناه، ليس من ممارسات ALM الصحية إنشاء حلول مُدارة متعددة من بيئة التطوير حيث الحل الأساسي (الحل A) بحالة غير مُدارة. وهذا لأنه، عند إنشاء حل آخر غير مُدار (الحل B) للنموذج غير المُدار، يتم تصدير FormXml كملف FormXml كامل، بدلاً من اختلاف FormXml كما هو موضح في السيناريو الصالح أعلاه. بعد ذلك، لن يتم تفعيل التغييرات مثل إزالة عمود.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
قم بإنشاء نموذج جديد باسم FormA في بيئة التطوير الخاصة بك وقم بإجراء التخصيصات على النموذج.
قم بإنشاء حل (الحل A في الرسم البياني أدناه)، والذي سيكون حلاً غير مُدار وإضافة شكلك الجديد. تصدير الحل كمدار. تقوم هذه الخطوة بتصدير FormXml كامل للنموذج.
في بيئة الاختبار الخاصة بك، قم باستيراد الحل المدار من الخطوة 2، وبالتالي إنشاء النموذج في بيئة الاختبار. في الرسم التخطيطي أدناه، يتم إنشاء FormA في بيئة الاختبار وتظهر واجهة المستخدم الخاصة بالنموذج Field1 وField2 اللذين أضافهما الحل A إلى النموذج.
عند إجراء مزيد من التخصيص للنموذج الذي أنشأته في الخطوة 1 باستخدام التصحيحات، استخدم نفس البيئة حيث يكون الحل A في حالة غير مُدارة وإنشاء تصحيح للحل وتخصيص النموذج. بعد ذلك، قم بتصدير التصحيح كحل مُدار. تقوم هذه الخطوة بتصدير formXml كامل للنموذج.
في بيئة الاختبار الخاصة بك، قم باستيراد حل التصحيح المُدار من الخطوة 4. كما هو موضح في الرسم البياني أدناه، يقوم تصحيح الحل A بإضافة Field3 جديد إلى FormA ويقوم بإزالة Field2، الذي تمت إضافته بواسطة الحل A.
ملاحظة
يتم دائمًا مقارنة التصحيحات التي تحتوي على formXml كامل بالطبقة الأساسية التي تم إنشاء التصحيح منها وتجاهل أي منها بقع وسيطة بين القاعدة والتصحيح الحالي. كنتيجة لذلك، تمت إزالة Field2 نظرًا لأنه موجود في الطبقة الأساسية الحل A وتم الكشف عن الإزالة. من ناحية أخرى، تمت إضافة Field3 بواسطة حل التصحيح هذا ولا يمكن إزالته بواسطة تصحيحات لاحقة. وبالتالي، فإن الحقول المضافة من خلال حلول التصحيح تكون مضافة بطبيعتها.
عندما تقوم بتخصيص النموذج الذي قمت بإنشائه في الخطوة 1 باستخدام الترقيات، استخدم نفس البيئة حيث يكون الحل A في حالة غير مُدارة واستنسخ الحل A لإنشاء حل الترقية وتخصيص النموذج. بعد ذلك، قم بتصدير ترقية الحل A كحل مُدار. تقوم هذه الخطوة بتصدير FormXml كامل للنموذج.
في بيئة الاختبار، قم باستيراد ترقية الحل A من الخطوة 6. كما هو موضح في الرسم البياني أدناه، تقوم ترقية الحل A بإضافة Field4 جديد إلى FormA وتقوم بإزالة Field2، الذي تمت إضافته بواسطة الحل A. وتعرض واجهة المستخدم الخاصة بالنموذج في بيئة الاختبار الآن Field1، وField3، وField4 على النموذج، ولن ستتم إزالة Field2 بعد دمج النموذج من الاستيراد.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
- قم بتحرير نموذج مُدار موجود، يسمى FormB في هذا المثال، في بيئة التطوير الخاصة بك وقم بإجراء التخصيصات على النموذج. لاحظ أن الحل أ هو الحل المدار المثبت بالفعل للنموذج في بيئة التطوير.
- قم بإنشاء حل جديد (الحل B في الرسم البياني أدناه)، والذي هو حل غير مُدار، وأضف FormB. تصدير الحل كمدار. تقوم هذه الخطوة بتصدير FormXml للفوارق للنموذج.
- في بيئة الاختبار الخاصة بك، قم باستيراد الحل المُدار من الخطوة 2، وبالتالي إنشاء طبقة حل ثانية للنموذج. في الرسم البياني أدناه، يقوم FormB بدمج التغييرات من الحل A والحل B في بيئة الاختبار وتعرض واجهة مستخدم النموذج Field1 وField3 على النموذج ولكن ليس على Field2، الذي تمت إزالته بواسطة الحل B.
- عند تخصيص النموذج الذي قمت بتخصيصه في الخطوة 1 باستخدام حلول مدارة جديدة، تأكد من استخدام بيئة تطوير جديدة بها FormB في حالة مُدارة. كما هو موضح في الرسم البياني أدناه، يتم استيراد الحلول المدارة لـ الحل A والحل B في بيئة التطوير الجديدة. يتم تخصيص FormB لإنشاء تخصيصات نشطة ، والتي يمكن إضافتها بعد ذلك إلى حل جديد (الحل C في الرسم التخطيطي) وتصديرها ك حل مُدار.
- في بيئة الاختبار الخاصة بك، قم باستيراد الحل C من الخطوة 4. كما هو موضح في الرسم البياني أدناه، يقوم الحل C بإضافة Field4 جديد إلى FormB ويقوم بإزالة Field3، الذي تمت إضافته بواسطة الحل B. وتعرض واجهة المستخدم الخاصة بالنموذج في بيئة الاختبار الآن Field1 وField4 على النموذج، وليس Field2 وField3.
كما هو موضح في الرسم التخطيطي أدناه، ليس من ممارسات ALM السليمة إنشاء حلول مُدارة متعددة من بيئة التطوير التي تحتوي على حل آخر غير مُدار قمت بإنشائه لنفس النموذج. لاحظ أن الحل B في حالة غير مُدارة. عندما تقوم بإنشاء حل آخر غير مُدار (الحل C) لنموذج FormB، يتم تصدير FormXml كـ فرق FormXml كما هو موضح في الخطوة 4 في السيناريو أعلاه. ولكن يحتوي نموذج FormBأيضًا على التغييرات من حل B، التي سيتم استبدالها من خلال التغييرات الجديدة.
على سبيل المثال، كما هو موضح في الرسم البياني أدناه، تتم إضافة حقل Field3 إلى نموذج FormB في حل B. ولكن الآن عندما تقوم بإنشاء حل C جديد في هذه البيئة، مع وجود حل B في حالة غير مُدارة، وتقوم بغزالة Field3، فستتم أيضًا إزالة Field3 في بيئة التطوير. لن يتم تعقب Field3 في الفرق FormXml عند تصدير الحل ، حيث تم إجراء تغيير إضافة وإزالة هذا العمود في نفس طبقة النشطة. يعني ذلك أنه عند استيراد حل C المُدار في بيئة الاختبار، سيبقى النموذج يعرض Field3 نظرا لأن diff FormXml لا يسجله أبدا كإزالة (كما تمت إزالته في الخطوة 5 في النموذج السليم سيناريو ALM أعلاه). سيؤدي إجراء تخصيصات النموذج بهذه الطريقة إلى عدم اتساق بيئة التطوير مع بيئة الاختبار.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
قم بتخصيص نموذج مُدار موجود، يسمى FormB في هذا المثال، في بيئة التطوير الخاصة بك وقم بإجراء التخصيصات على النموذج. لاحظ أن الحل A هو الحل المدار المثبت بالفعل للنموذج في بيئة التطوير.
قم بإنشاء حل (الحل B)، الذي سيكون حلاً غير مُدار، وأضف FormB. تصدير الحل كمدار. تقوم هذه الخطوة بتصدير FormXml مختلف للنموذج.
في بيئة الاختبار الخاصة بك، قم باستيراد الحل B المُدار من الخطوة 2، وبالتالي إنشاء طبقة حل ثانية للنموذج. في المخطط أدناه، يحصل FormB على التغييرات المدمجة من الحل A والحل B في بيئة الاختبار. بالإضافة إلى ذلك، تقوم واجهة المستخدم لـ FormB بعرض Field1 وField3 في النموذج ولكن ليس Field2، الذي تمت إزالته بواسطة الحل B.
عندما تقوم بتخصيص النموذج الذي قمت بتخصيصه في الخطوة 1 باستخدام حل التصحيح، يمكنك استخدام نفس بيئة التطوير كما في الخطوة 1 حيث يوجد حل B في حالة غير مُدارة. كما هو موضح في المخطط أدناه، يكون حل A في حالة مُدارة ويكون حل B في حالة غير مُدارة. يتم تخصيص النموذج بشكل أكبر حيث تقوم بإنشاء تصحيح للحل B حيث تقوم بإضافة النموذج الخاص بك إلى هذا الحل وتصديره. تقوم هذه الخطوة بتصدير FormXml مختلف.
في بيئة الاختبار الخاصة بك، قم باستيراد حل التصحيح المُدار B من الخطوة 4. كما هو موضح في المخطط أدناه، يقوم تصحيح الحل B بإضافة Field4 جديد إلى FormB ويقوم بإزالة Field3، الذي تمت إضافته بواسطة حل B.
ملاحظة
تعتبر التصحيحات مضافة بطبيعتها ولا يمكنها إزالة المكونات، مثل الأعمدة، من النموذج. لذلك، لن تتم إزالة Field3 من النموذج. تعرض واجهة المستخدم الخاصة بالنموذج في بيئة الاختبار الآن Field1، وField3، وField4 على النموذج، وليس على Field2.
عندما تقوم بتخصيص النموذج الذي قمت بإنشائه في الخطوة 1 باستخدام الترقيات، استخدم نفس البيئة حيث يكون الحل B في حالة غير مدارة واستنسخ الحل B لإنشاء حل الترقية وقم بتخصيص FormB. قم بتصدير الترقية كحل مُدار. تقوم هذه الخطوة بتصدير FormXml مختلف للنموذج.
في بيئة الاختبار، قم باستيراد حل ترقية الحل B المُدار من الخطوة 6. كما هو موضح في المخطط أدناه، تقوم ترقية حل B بإضافة Field5 جديد إلى FormB وتقوم بإزالة Field3، الذي تمت إضافته بواسطة الحل B. وتعرض واجهة المستخدم الخاصة بالنموذج في بيئة الاختبار الآن Field1، وField4، وField5 في النموذج، ولكن تتم إزالة Field2 وField3.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
- في بيئة التطوير 1، أنشئ FormA جديدًا ونفذ التخصيصات في النموذج.
- قم بإنشاء حل (الحل A في الرسم البياني أدناه)، والذي سيكون حلاً غير مُدار وإضافة شكلك الجديد. قم بتصدير الحل كغير مدار. تقوم هذه الخطوة بتصدير FormXml كامل للنموذج.
- في بيئة التطوير 2، قم باستيراد الحل غير المدار من الخطوة 2، التي تقوم بإنشاء بيئة التطوير 2. في الرسم التخطيطي أدناه، يتم إنشاء FormA وتظهر واجهة المستخدم الخاصة بالنموذج Field1 وField2 اللذين أضافهما الحل A إلى النموذج.
- يمكنك أيضا تخصيص النموذج في بيئة التطوير 2 التي تجري تخصيصات نشطة في البيئة، مثل إضافة عمود يسمى Field3. يعرض النموذج A الآن الحقل 1 والحقل 2 والحقل 3.
- في بيئة التطوير 1، يمكنك أيضا تخصيص النموذج عن طريق إضافة Field4. تقوم واجهة المستخدم الخاصة بالنموذج في بيئة التطوير 1 الآن بعرض Field1، وField2، وField4.
- قم بتصدير الحل A غير المدار مع التغييرات التي تم إجراؤها في الخطوة 5. تقوم هذه الخطوة بتصدير FormXml كامل للنموذج.
- في بيئة التطوير 2، قم باستيراد ترقية الحل A من الخطوة 6. بما أن الحل الذي تقوم باستيراده يحتوي على FormXml الكامل لـ FormA، فإنه يحل مكان التخصيص النشط الذي تم في بيئة التطوير 1. ولذلك، يعرض النموذج الآن Field1، وField2، وField4، ولكن ليسField3، الذي كان التخصيص النشط الإضافي الذي تم إجراؤه في بيئة التطوير 1. يحدث هذا السلوك مع أي استيراد حل غير مُدار يحتوي على FormXml الكامل للنموذج.
اتبع هذه الخطوات لتنفيذ نموذج ALM السليم لهذا السيناريو.
- في بيئة التطوير 1، قم بتخصيص نموذج موجود، باسم FormB في هذا المثال. ثم قم بإجراء تخصيصات في النموذج.
- قم بإنشاء حل (الحل B في الرسم البياني أدناه)، والذي سيكون حلاً غير مُدار، وأضف FormB. قم بتصدير الحل كغير مدار. تقوم هذه الخطوة بتصدير FormXml مختلف للنموذج.
- في بيئة التطوير 2، قم باستيراد الحل المُدار من الخطوة 2، وبالتالي إنشاء طبقة حل ثانية للنموذج. تقوم واجهة مستخدم FormB بعرض Field1، وField2، وField3 بعد دمج النماذج.
- يمكنك أيضا تخصيص النموذج في بيئة التطوير 2 التي تجري تخصيصات نشطة في البيئة، مثل إضافة عمود يسمى Field4. يعرض FormB الآن الحقل 1 والحقل 2 والحقل 3 والحقل4 .
- في بيئة التطوير 1، يمكنك أيضًا تخصيص النموذج عن طريق إضافة عمود جديد يسمى Field5. تقوم واجهة المستخدم الخاصة بالنموذج في بيئة التطوير 1 بعرض Field3 وField5.
- قم بتصدير الحل B غير المدار مع التغييرات التي تم إجراؤها في الخطوة 5. تقوم هذه الخطوة بتصدير FormXml مختلف للنموذج.
- في بيئة التطوير 2، قم باستيراد ترقية الحل B من الخطوة 6. بما أن الحل الذي تقوم باستيراده يحتوي على FormXml المختلف لـ FormA، فسيندمج مع التخصيص النشط الذي تم في بيئة التطوير 1. لذلك، يعرض النموذج الآن Field1، وField2، وField3، وField4، وField5. يحدث هذا السلوك مع أي استيراد حل غير مُدار يحتوي على FormXml المختلف للنموذج.
- إذا لم تكن عملية دمج النموذج في الخطوة 7 هي الخطوة التي تريدها حتى وإن كنت تقوم باستيراد نموذج diffXml بالحل غير مدار وتريد أن تكون قادرا على الكتابة فوق التخصيصات النشطة التي تم القيام بها في بيئة التطوير 2، ثم تقوم بغزالة الطبقة النشطة لـ FormB. مزيد من المعلومات: إزالة طبقة غير مُدارة.
- قم بتصدير الحل B غير المدار مع التغييرات التي تم إجراؤها في الخطوة 5. تقوم هذه الخطوة بتصدير FormXml مختلف للنموذج.
- في بيئة التطوير 2، قم باستيراد ترقية الحل B من الخطوة 9. نظرا لأنه لا توجد طبقة نشطة للنموذج في بيئة التطوير 2، (راجع الخطوة 8)، يتم استيراد جميع التغييرات من الحل B غير المُدار حتى إذا كنت تقوم باستيراد FormXml المختلف لـ FormB. لذلك، يعرض النموذج الآن Field1، وField2، وField3، وField5 فقط. يحدث هذا السلوك مع أي استيراد حل غير مُدار يحتوي على FormXml المختلف للنموذج. هذه هي نفس النتيجة التي نتجت عن الخطوة 7 في سيناريو الحفاظ على الحلول والتخصيصات غير المُدارة لنموذج موجود عبر بيئات تطوير متعددة.
تتضمن كل حزمة حل تم تصديرها ملف customizations.xml. وعند تضمين نموذج في أحد الحلول، يوجد تعريف النموذج المرتبط في مقاطع FormXml الخاصة بملف customizations.xml. يمكن أن يكون FormXml إما كاملاً أو مختلفًا (diff).
يطلق على FormXml الذي تحصل عليه عند تصدير حل ل نموذج في حالة غير مدارة اسم FormXml الكامل. وسائل كاملة تحتوي على تعريف النموذج بالكامل. عند إنشاء نموذج جديد وتصديره، سيكون النموذج دائمًا FormXml كاملًا لأن النموذج الموجود في البيئة التي تقوم بالتصدير منها في حالة غير مُدارة وأيضًا في حالة إنشاء. إذا قمت بتصدير أي حلول أخرى من نفس البيئة، فستتضمن هذه الحلول FormXml كاملًا أيضًا. نظرا لأن السمة solutionaction
تشير إلى diff FormXml، لن يحتوي ملف FormXml الكامل في ملف customization.xml في الحل الذي تقوم بتصديره على اي سمات solutionaction
.
يطلق على FormXml الذي تحصل عليه عند تصدير حل لنموذج في حالة مدارة اسم FormXml مختلف أو diff. ويعني Diff أن FormXml يحتوي على التغييرات التي تتم في التخصيصات النشطة فقط في تلك البيئة وليس تعريف النموذج بالكامل. عند تخصيص نموذج مدار موجود وتصديره، سيكون النموذج دائما نموذج diffXml نظرا لأنه سيحتوي فقط على التغييرات النشطة التي تم القيام بها له. سيحتوي diff FormXml في ملف customization.xml في الحل الذي تقوم بتصديره على سمات solutionaction
التي تحدد ماهية التغييرات، مثل تمت الإضافة، وتمت الإزالة، وتم التعديل.
يضمن Diff FormXml أن الحل الخاص بك لن يعبر إلا عن التغييرات التي يحتاجها التطبيق الخاص بك وسوف يؤثر ذلك بشكل أقل على التغييرات التي تحدث من طبقات أخرى. كما يجعل Diff FormXml الحل أقل مجمعا ويساعده على الاستيراد بشكل أسرع.