Dynamics AX 2012 SysOperation Framework-ийн хурдан тойм
Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:29:36 (UTC)
Энэ нийтлэлд Dynamics AX 2012 болон Dynamics 365 for Operations дээрх SysOperation хүрээн дэх боловсруулалтын анги, багц ажлуудыг хэрхэн хэрэгжүүлэх талаар товч тойм (эсвэл хууран мэхлэх хуудас) өгдөг.
Dynamics AX 2012 SysOperation Framework Quick Overview
Энэхүү постын мэдээлэл нь Dynamics AX 2012 R3 дээр суурилсан байна. Энэ нь бусад хувилбаруудад хүчинтэй эсвэл хүчинтэй биш байж болох юм. (Шинэчилсэн: Би энэ нийтлэл дэх мэдээлэл нь Dynamics 365 for Operations-д мөн хүчинтэй гэдгийг баталж чадна.)
Энэхүү пост нь зөвхөн хурдан тойм болон хурдан хураангуй гарын авлага болгон зориулагдсан. Хэрэв та SysOperation хүрээтэй шинээр танилцаж байгаа бол би Microsoft-ийн энэ сэдвээр бичсэн цагаан цаасыг уншихыг хүчтэй зөвлөж байна. Энд буй мэдээлэл нь энэ хүрээг ашиглан үйл ажиллагаа хөгжүүлэхэд оролцож буй янз бүрийн ангийн талаар хурдан санаа өгөх шаардлагатай бол хэрэгтэй байж магадгүй.
Төрлүүд байдаг ч, би энэ хүрээг ашиглахдаа ерөнхийдөө гурван анги хэрэгжүүлдэг:
- Өгөгдлийн гэрээ (SysOperationDataContractBase-г өргөжүүлэх ёстой)
- Үйлчилгээ (SysOperationServiceBase-г өргөжүүлэх ёстой)
- Хяналт ( заавал SysOperationServiceController-г өргөжүүлэх ёстой)
Мөн, би UIBuilder анги (заавал SysOperationUIBuilder-г өргөжүүлэх ёстой) хэрэгжүүлж магадгүй, гэхдээ энэ нь зөвхөн яагаад нэгэн диалогийн хүрээ нь автоматжуулсан үүсгэлээс илүү хөгжүүлэлт шаарддаг бол хэрэгтэй.
Өгөгдлийн гэрээ
Өгөгдлийн гэрээ нь таны үйл ажиллагаанд шаардлагатай өгөгдлийн гишүүдийг хадгалдаг. Үүнийг RunBase хүрээнд тодорхойлсон уламжлалт CurrentList макротой харьцуулж болох ч, энэ нь ангиар хэрэгжүүлэгдсэн байна. Өгөгдлийн гэрээ нь SysOperationDataContractBase-г өргөжүүлэх ёстой, гэхдээ энэ нь өргөжүүлээгүй ч гэсэн ажиллах болно. Өргөжүүлсэн суперклассын давуу тал нь энэ нь зарим сессийн мэдээллийг агуулж, тусгай хэрэгтэй байж болох юм.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Энэхүү жишээнд itemId нь өгөгдлийн гишүүн юм. Таны өгөгдлийн гишүүн бүрийн хувьд parm арга хэрэгжүүлэх хэрэгтэй бөгөөд үүнийг DataMemberAttribute-ээр тэмдэглэж, хүрээ үүнийг юуг болохыг мэдэх боломжтой болгоно. Энэ нь хүрээнд өөрөө таны хувийн диалогийг автоматаар бүтээх боломжийг олгоно.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Үйлчилгээ
Үйлчилгээний анги нь бодит бизнесийн логик агуулдаг анги юм. Энэ нь диалогуудыг харуулах, багц боловсруулалт эсвэл ижил зүйлүүдийг анхаардаггүй – эдгээр нь хяналтын ангийн хариуцлага юм. Энэ ялгааг салгаж өгснөөр та кодоо зөв зохион байгуулах бөгөөд илүү дахин ашиглагдах боломжтой кодыг үүсгэх магадлалтай.
Өгөгдлийн гэрээний ангитай адил, үйлчилгээний анги ямар ч тодорхой ангийг өвлөж авах шаардлаггүй, гэхдээ энэ нь SysOperationServiceBase ангийг өвлөх ёстой, ялангуяа хэрэв та үйлчилгээг багц ажил гэж гүйцэтгэх гэж байгаа бол, учир нь суперкласс нь багцын орчны талаар мэдээлэл өгдөг. Үйл ажиллагааг эхлүүлэх арга (өөрөөр хэлбэл бизнесийн логикийг гүйцэтгэх) таны өгөгдлийн гэрээний ангийн объектыг хүлээн авах ёстой бөгөөд үүнийг [SysEntryPointAttribute] болон чимэглэх ёстой. Жишээ нь:
{
}
run гэж нэрлэгдсэн арга:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Хяналт
Хяналтын анги нь таны үйл ажиллагааг гүйцэтгэх болон багц боловсруулалтыг зохион байгуулдаг. Мөн энэ нь хамгийн их гүйцэтгэлд зориулан CIL дээр кодыг гүйцэтгэхийг баталгаажуулдаг. Хяналтын анги нь ерөнхийдөө SysOperationServiceController ангийг өвлөдөг, гэхдээ өөр олон сонголтууд байдаг.
{
}
Суперклассын конструктор нь ангийн нэр, арга нэр, мөн (сонголтоор) гүйцэтгэлийн горимыг параметр болгон авдаг. Ангийн нэр болон арга нэр нь таны үйлчилгээний ангийн нэр болон үүний дээр гүйцэтгэх ёстой арга байх ёстой. Тиймээс та хяналтын ангийнхаа construct аргыг дараах байдлаар хэрэгжүүлж болно:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Дараа нь MyController ангийн үндсэн арга дараах байдлаар энгийн байж болно
{
;
MyController::construct().startOperation();
}
Та бараг л дууссан байна. Дээрх нь я obviously с энгийн жишээ бөгөөд хүрээ нь бусад олон сонголт ба боломжуудыг агуулдаг, гэхдээ энэ нь хэрэв та энэ хүрээг удаан хугацаанд ашиглаагүй бол хурдан эргэн санахад тохиромжтой тойм болж байна.