Amfani da Tsarin SysExtension don Gano Wane Subclass zuwa Instantiate a Dynamics AX 2012
Buga: 16 Faburairu, 2025 da 00:26:20 UTC
An sabunta ta ƙarshe: 12 Janairu, 2026 da 08:43:34 UTC
Wannan labarin ya bayyana yadda ake amfani da tsarin SysExtension da ba a san shi ba a cikin Dynamics AX 2012 da Dynamics 365 don Ayyuka don haɓaka ƙananan azuzuwan bisa ga kayan ado na siffa, wanda ke ba da damar ƙira mai sauƙi ta tsarin aji na sarrafawa.
Using the SysExtension Framework to Find Out Which Subclass to Instantiate in Dynamics AX 2012
Bayanin da ke cikin wannan rubutun ya dogara ne akan Dynamics AX 2012 R3. Yana iya zama ko ba zai yi aiki ba ga wasu sigar. (Sabuntawa: Zan iya tabbatar da cewa bayanin da ke cikin wannan labarin shi ma yana da inganci ga Dynamics 365 don Ayyuka)
Lokacin aiwatar da azuzuwan sarrafawa a cikin Dynamics AX, sau da yawa kuna fuskantar ƙirƙirar tsarin aji wanda kowane ƙaramin aji ya dace da ƙimar enum ko kuma yana da wasu haɗin bayanai. Tsarin gargajiya shine a sami hanyar gini a cikin babban aji, wanda ke da maɓalli wanda ke ƙayyade wane aji za a shigar bisa ga shigarwar.
Wannan yana aiki da kyau a ƙa'ida, amma idan kuna da shigarwar da yawa daban-daban (abubuwa da yawa a cikin enum ko wataƙila shigarwar haɗuwa ce ta ƙima daban-daban), zai iya zama mai wahala da sauƙin kiyayewa kuma ƙirar koyaushe tana da rashin amfani wanda za ku buƙaci gyara hanyar ginin idan kun taɓa ƙara sabon ƙaramin aji ko yin canje-canje ga wane ƙaramin aji ya kamata a yi amfani da shi bisa ga wane shigarwar.
Abin farin ciki, akwai wata hanya mafi kyau, amma abin takaici kuma ba a san ta sosai ba, ta hanyar amfani da tsarin SysExtension.
Wannan tsarin yana amfani da fasaloli da za ku iya amfani da su don ƙawata ƙananan azuzuwan ku don sa tsarin ya sami damar gano wane ƙaramin azuzuwan ya kamata a yi amfani da shi don sarrafa abin da. Har yanzu kuna buƙatar hanyar gini, amma idan an yi shi daidai, ba za ku taɓa yin gyara ba lokacin ƙara sabbin ƙananan azuzuwan.
Bari mu dubi wani misali na tunani mu ce za ku aiwatar da tsarin da zai yi wani irin aiki bisa ga teburin InventTrans. Wanne aiki za a yi ya dogara ne da StatusReceipt da StatusIssue na bayanan, da kuma ko bayanan suna da alaƙa da SalesLine, PurchLine ko babu ɗayansu. Yanzu, kuna duba haɗuwa daban-daban da yawa.
Bari mu ce kun san cewa a yanzu kuna buƙatar sarrafa kaɗan daga cikin haɗin gwiwar, amma kuma kun san cewa za a nemi ku iya sarrafa haɗuwa da yawa akan lokaci.
Bari mu sauƙaƙa shi mu ce a yanzu kawai kuna buƙatar kula da bayanan da suka shafi SalesLine tare da fitowar StatusIssue na ReservPhysical ko ReservOrdered, duk sauran haɗuwa za a iya watsi da su a yanzu, amma tunda kun san za ku kula da su daga baya, kuna son tsara lambar ku ta hanyar da za ta sa ta zama mai sauƙin faɗaɗawa.
Matsayin matsayinka na iya yin kama da haka a yanzu:
- MyProcessorMyProcessor_SalesMyProcessor_Sales_ReservedOrderedMyProcessor_Sales_ReservedPhysical
Yanzu, za ku iya aiwatar da wata hanya cikin sauƙi a cikin babban aji wanda ke ƙirƙirar ƙaramin aji bisa ga ModuleInventPurchSales da kuma StatusIssue enum. Amma za ku buƙaci gyara babban aji duk lokacin da kuka ƙara ƙaramin aji, kuma wannan ba ainihin ra'ayin gado bane a cikin shirye-shiryen da suka mayar da hankali kan abu. Bayan haka, ba kwa buƙatar gyara RunBaseBatch ko SysOperationServiceBase duk lokacin da kuka ƙara sabon aiki na rukuni.
Madadin haka, za ku iya amfani da tsarin SysExtension. Wannan zai buƙaci ku ƙara wani aji, wanda ke buƙatar faɗaɗa SysAttribute. Za a yi amfani da wannan aji a matsayin siffa da za ku iya ƙawata azuzuwan sarrafawa da ita.
Wannan aji yana kama da yadda za ku yi ajin kwangilar bayanai don aiwatar da SysOperation, domin zai sami wasu membobin bayanai da hanyoyin parm don samun da saita waɗannan dabi'u.
A yanayinmu, ClassDeclaration na iya kama da haka:
{
ModuleInventPurchSales module;
StatusIssue statusIssue;
StatusReceipt statusReceipt
}
Kana buƙatar yin sabuwar hanyar () don shigar da duk membobin bayanai. Idan kana so za ka iya ba da wasu ko dukkansu ƙimar tsoho, amma ban yi hakan ba.
StatusIssue _statusIssue,
StatusReceipt _statusReceipt)
{
;
super();
module = _module;
statusIssue = _statusIssue;
statusReceipt = _statusReceipt;
}
Kuma ya kamata ku aiwatar da hanyar parm ga kowane memba na bayanai, amma na cire waɗannan a nan domin na tabbata kun san yadda ake yin hakan - in ba haka ba, bari mu ɗauke shi a matsayin darasi ;-)
Yanzu za ku iya amfani da ajin siffantawar ku don ƙawata kowanne daga cikin azuzuwan sarrafa ku. Misali, sanarwar aji na iya kama da haka:
StatusIssue::None,
StatusReceipt::None)]
class MyProcessor_Sales extends MyProcessor
{
}
[MyProcessorSystemAttribute(ModuleInventPurchSales::Sales,
StatusIssue::ReservOrdered,
StatusReceipt::None)]
class MyProcessor_Sales_ReservOrdered extends MyProcessor_Sales
{
}
[MyProcessorSystemAttribute(ModuleInventPurchSales::Sales,
StatusIssue::ReservPhysical,
StatusReceipt::None)]
class MyProcessor_Sales_ReservPhysical extends MyProcessor_Sales
{
}
Hakika za ka iya sanya wa azuzuwanka suna ta kowace hanya da kake so, muhimmin sashi a nan shi ne ka ƙawata azuzuwanka da halaye waɗanda suka dace da irin aikin da suke yi. (Amma ka tuna cewa akwai ƙa'idodin suna don tsarin aji a cikin Dynamics AX kuma koyaushe kyakkyawan ra'ayi ne a bi waɗannan, idan zai yiwu).
Yanzu da kun yi wa azuzuwanku ado don gano irin aikin da kowannensu ke yi, za ku iya amfani da tsarin SysExtension don ƙirƙirar abubuwa na ƙananan azuzuwan kamar yadda ake buƙata.
A cikin babban ajinku (MyProcessor), zaku iya ƙara hanyar gini kamar haka:
StatusIssue _statusIssue,
StatusReceipt _statusReceipt)
{
MyProcessor ret;
MyProcessorSystemAttribute attribute;
;
attribute = new MyProcessorSystemAttribute( _module,
_statusIssue,
_statusReceipt);
ret = SysExtensionAppClassFactory::getClassFromSysAttribute(classStr(MyProcessor), attribute);
if (!ret)
{
// no class found
// here you could throw an error, instantiate a default
// processor instead, or just do nothing, up to you
}
return ret;
}
Babban abin sha'awa - kuma ainihin abin da aka yi amfani da shi (a yi afuwa ga kalmomin) na wannan rubutun - shine hanyar getClassFromSysAttribute() a cikin ajin SysExtensionAppClassFactory. Abin da wannan hanyar ke yi shi ne cewa tana karɓar sunan babban ajin wani tsari (kuma wannan babban ajin ba lallai ne ya kasance a saman tsarin ba; kawai yana nufin cewa azuzuwan da suka faɗaɗa wannan aji ne kawai za su cancanta) da kuma abu mai siffa.
Sannan ya dawo da wani abu na aji wanda ya faɗaɗa takamaiman ajin super kuma an yi masa ado da siffa mai dacewa.
Babu shakka za ka iya ƙara ƙarin tabbaci ko dabaru ga hanyar ginawa kamar yadda kake so, amma muhimmin abin da za a yi la'akari da shi a nan shi ne cewa da zarar an aiwatar da shi, bai kamata ka sake gyara wannan hanyar ba. Za ka iya ƙara ƙananan azuzuwan zuwa tsarin aiki kuma matuƙar ka tabbatar ka yi musu ado yadda ya kamata, hanyar ginawa za ta same su ko da ba su wanzu ba lokacin da aka rubuta ta.
Yaya batun aiki? Gaskiya ban yi ƙoƙarin tantance shi ba, amma ina jin cewa wannan wataƙila yana aiki mafi muni fiye da ƙirar bayanin sauya bayanai na gargajiya. Duk da haka, idan aka yi la'akari da cewa mafi yawan matsalolin aiki a cikin Dynamics AX suna faruwa ne ta hanyar samun damar bayanai, ba zan damu da shi sosai ba.
Hakika, idan kuna aiwatar da wani abu da zai buƙaci a ƙirƙiri dubban abubuwa cikin sauri, kuna iya son ƙarin bincike, amma a cikin al'amuran gargajiya inda kawai kuke ƙirƙirar abu ɗaya don yin dogon aiki, ina shakkar zai yi mahimmanci. Hakanan, idan aka yi la'akari da shawarar gyara matsalata (sakin layi na gaba), da alama tsarin SysExtension ya dogara ne akan caching, don haka a cikin tsarin aiki ina shakkar yana da babban tasiri a aiki.
Shirya matsala: Idan hanyar ginawa ba ta sami ƙananan azuzuwan ku ba duk da cewa kun tabbata an yi musu ado daidai, yana iya zama matsalar cache. Gwada share cache akan abokin ciniki da sabar. Bai kamata a sake kunna AOS ba, amma yana iya zama mafita ta ƙarshe.
Karin Karatu
Idan kuna jin daɗin wannan sakon, kuna iya kuma son waɗannan shawarwari:
- Mayar da Gaskiya zuwa Kifi tare da Duk Decimals a cikin Dynamics AX 2012
- Bambancin Tsakanin bayanai () da buf2Buf() a cikin Dynamics AX 2012
- Dynamics AX 2012 SysOperation Tsarin Gaggawa
