ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ X++ ನಿಂದ ನೇರವಾಗಿ AIF ದಾಖಲೆ ಸೇವೆಗಳಿಗೆ ಕರೆ ಮಾಡುವುದು
ಪ್ರಕಟಣೆ: ಫೆಬ್ರವರಿ 16, 2025 ರಂದು 11:23:45 ಪೂರ್ವಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಕೊನೆಯದಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ: ಜನವರಿ 12, 2026 ರಂದು 08:55:35 ಪೂರ್ವಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಈ ಲೇಖನದಲ್ಲಿ, ಡೈನಾಮಿಕ್ಸ್ AX 2012 ರಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಇಂಟಿಗ್ರೇಷನ್ ಫ್ರೇಮ್ವರ್ಕ್ ಡಾಕ್ಯುಮೆಂಟ್ ಸೇವೆಗಳನ್ನು ನೇರವಾಗಿ X++ ಕೋಡ್ನಿಂದ ಹೇಗೆ ಕರೆಯುವುದು, ಒಳಬರುವ ಮತ್ತು ಹೊರಹೋಗುವ ಕರೆಗಳನ್ನು ಅನುಕರಿಸುವುದು ಹೇಗೆ ಎಂದು ನಾನು ವಿವರಿಸುತ್ತೇನೆ, ಇದು AIF ಕೋಡ್ನಲ್ಲಿ ದೋಷಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಮತ್ತು ಡೀಬಗ್ ಮಾಡುವುದು ಗಮನಾರ್ಹವಾಗಿ ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
Calling AIF Document Services Directly from X++ in Dynamics AX 2012
ಈ ಪೋಸ್ಟ್ನಲ್ಲಿರುವ ಮಾಹಿತಿಯು ಡೈನಾಮಿಕ್ಸ್ AX 2012 R3 ಅನ್ನು ಆಧರಿಸಿದೆ. ಇದು ಇತರ ಆವೃತ್ತಿಗಳಿಗೆ ಮಾನ್ಯವಾಗಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು.
ಇತ್ತೀಚೆಗೆ ನಾನು ಒಬ್ಬ ಗ್ರಾಹಕನಿಗೆ ಮತ್ತೊಂದು ವ್ಯವಸ್ಥೆಯಿಂದ ಸ್ವೀಕರಿಸುತ್ತಿರುವ ಡೇಟಾದ ಆಧಾರದ ಮೇಲೆ ಗ್ರಾಹಕರನ್ನು ರಚಿಸಲು ಅಪ್ಲಿಕೇಶನ್ ಇಂಟಿಗ್ರೇಷನ್ ಫ್ರೇಮ್ವರ್ಕ್ (AIF) ಇನ್ಬೌಂಡ್ ಪೋರ್ಟ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತಿದ್ದೆ. ಡೈನಾಮಿಕ್ಸ್ AX ಈಗಾಗಲೇ ಕಸ್ಟಕಸ್ಟಮರ್ ಡಾಕ್ಯುಮೆಂಟ್ ಸೇವೆಯನ್ನು ಒದಗಿಸುತ್ತಿದೆ, ಇದು ಇದಕ್ಕಾಗಿ ತರ್ಕವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ನಾವು ಅದನ್ನು ಸರಳವಾಗಿಡಲು ಮತ್ತು ಪ್ರಮಾಣಿತ ಪರಿಹಾರವನ್ನು ಬಳಸಲು ನಿರ್ಧರಿಸಿದ್ದೇವೆ.
ಆದಾಗ್ಯೂ, ಡೈನಾಮಿಕ್ಸ್ AX ಸ್ವೀಕರಿಸುವ XML ಅನ್ನು ಉತ್ಪಾದಿಸಲು ಬಾಹ್ಯ ವ್ಯವಸ್ಥೆಯನ್ನು ಪಡೆಯುವಲ್ಲಿ ಬಹಳಷ್ಟು ಸಮಸ್ಯೆಗಳಿವೆ ಎಂದು ಶೀಘ್ರದಲ್ಲೇ ತಿಳಿದುಬಂದಿದೆ. ಡೈನಾಮಿಕ್ಸ್ AX ನಿಂದ ರಚಿಸಲಾದ XML ಸ್ಕೀಮಾವು ಸಾಕಷ್ಟು ಸಂಕೀರ್ಣವಾದದ್ದು ಮತ್ತು ಡೈನಾಮಿಕ್ಸ್ AX ನಲ್ಲಿ ಕೆಲವು ದೋಷಗಳಿವೆ ಎಂದು ತೋರುತ್ತದೆ, ಅದು ಕೆಲವೊಮ್ಮೆ ಇತರ ಪರಿಕರಗಳ ಪ್ರಕಾರ ಸ್ಕೀಮಾ-ಮಾನ್ಯವಾಗಿರುವ XML ಅನ್ನು ತಿರಸ್ಕರಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಒಟ್ಟಾರೆಯಾಗಿ, ಇದು ನಾನು ಭಾವಿಸಿದ್ದಕ್ಕಿಂತ ಕಡಿಮೆ ಸರಳವೆಂದು ಸಾಬೀತಾಯಿತು.
ಈ ಪ್ರಯತ್ನದ ಸಮಯದಲ್ಲಿ, ಕೆಲವು XML ಫೈಲ್ಗಳಲ್ಲಿ ನಿಖರವಾಗಿ ಏನು ಸಮಸ್ಯೆ ಇದೆ ಎಂದು ಕಂಡುಹಿಡಿಯಲು ನಾನು ಆಗಾಗ್ಗೆ ಹೆಣಗಾಡುತ್ತಿದ್ದೆ ಏಕೆಂದರೆ AIF ನಿಂದ ಒದಗಿಸಲಾದ ದೋಷ ಸಂದೇಶಗಳು ಮಾಹಿತಿಯುಕ್ತವಾಗಿರುವುದಿಲ್ಲ. ಇದು ಬೇಸರದ ಸಂಗತಿಯೂ ಆಗಿತ್ತು, ಏಕೆಂದರೆ ಬಾಹ್ಯ ವ್ಯವಸ್ಥೆಯು MSMQ ಮೂಲಕ ಹೊಸ ಸಂದೇಶವನ್ನು ಕಳುಹಿಸುವವರೆಗೆ ಮತ್ತು ನಂತರ AIF ಸಂದೇಶವನ್ನು ಎತ್ತಿಕೊಂಡು ಅದನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವ ಮೊದಲು ದೋಷವನ್ನು ನೋಡುವವರೆಗೆ ನಾನು ಕಾಯಬೇಕಾಗಿತ್ತು.
ಆದ್ದರಿಂದ ಸ್ವಲ್ಪ ವೇಗದ ಪರೀಕ್ಷೆಗಾಗಿ ಸ್ಥಳೀಯ XML ಫೈಲ್ನೊಂದಿಗೆ ಸೇವಾ ಕೋಡ್ ಅನ್ನು ನೇರವಾಗಿ ಕರೆಯಲು ಸಾಧ್ಯವೇ ಎಂದು ನಾನು ತನಿಖೆ ಮಾಡಿದೆ ಮತ್ತು ಅದು ಹಾಗೆ ಎಂದು ತಿಳಿದುಬಂದಿದೆ - ಮತ್ತು ಅಷ್ಟೇ ಅಲ್ಲ, ಇದು ಮಾಡಲು ನಿಜವಾಗಿಯೂ ಸರಳವಾಗಿದೆ ಮತ್ತು ವಾಸ್ತವವಾಗಿ ಹೆಚ್ಚು ಅರ್ಥಪೂರ್ಣ ದೋಷ ಸಂದೇಶಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಕೆಳಗಿನ ಉದಾಹರಣೆ ಕೆಲಸವು ಸ್ಥಳೀಯ XML ಫೈಲ್ ಅನ್ನು ಓದುತ್ತದೆ ಮತ್ತು ಗ್ರಾಹಕರನ್ನು ರಚಿಸಲು AxdCustomer ವರ್ಗದೊಂದಿಗೆ (ಇದು CustCustomer ಸೇವೆಯಿಂದ ಬಳಸಲಾಗುವ ಡಾಕ್ಯುಮೆಂಟ್ ವರ್ಗವಾಗಿದೆ) ಬಳಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ನಿಮಗೆ ಅಗತ್ಯವಿದ್ದರೆ, ನೀವು ಎಲ್ಲಾ ಇತರ ಡಾಕ್ಯುಮೆಂಟ್ ವರ್ಗಗಳಿಗೆ ಇದೇ ರೀತಿಯ ಕೆಲಸಗಳನ್ನು ಮಾಡಬಹುದು, ಉದಾಹರಣೆಗೆ AxdSalesOrder.
{
FileNameOpen fileName = @'C:\\TestCustomerCreate.xml';
AxdCustomer customer;
AifEntityKey key;
#File
;
new FileIoPermission(fileName, #IO_Read).assert();
customer = new AxdCustomer();
key = customer.create( XmlDocument::newFile(fileName).xml(),
new AifEndpointActionPolicyInfo(),
new AifConstraintList());
CodeAccessPermission::revertAssert();
info('Done');
}
customer.create() ವಿಧಾನದಿಂದ ಹಿಂತಿರುಗಿಸಲಾದ AifEntityKey ವಸ್ತುವು (ಇದು AIF ನಲ್ಲಿ "ರಚಿಸಿ" ಸೇವಾ ಕಾರ್ಯಾಚರಣೆಗೆ ಅನುಗುಣವಾಗಿರುತ್ತದೆ) ಯಾವ ಗ್ರಾಹಕರನ್ನು ರಚಿಸಲಾಗಿದೆ ಎಂಬುದರ ಕುರಿತು ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿದೆ, ಇತರ ವಿಷಯಗಳ ಜೊತೆಗೆ ರಚಿಸಲಾದ CustTable ದಾಖಲೆಯ RecId ಅನ್ನು ಒಳಗೊಂಡಿದೆ.
ನೀವು ಪರೀಕ್ಷಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವುದು ಔಟ್ಬೌಂಡ್ ಪೋರ್ಟ್ ಆಗಿದ್ದರೆ ಅಥವಾ ಇನ್ಬೌಂಡ್ ಪೋರ್ಟ್ನಲ್ಲಿ XML ಹೇಗೆ ಕಾಣಬೇಕು ಎಂಬುದರ ಉದಾಹರಣೆ ನಿಮಗೆ ಬೇಕಾದರೆ, ನೀವು ಡಾಕ್ಯುಮೆಂಟ್ ವರ್ಗವನ್ನು ಬಳಸಿಕೊಂಡು ಗ್ರಾಹಕರನ್ನು ಫೈಲ್ಗೆ ರಫ್ತು ಮಾಡಬಹುದು, ಬದಲಿಗೆ read() ವಿಧಾನವನ್ನು ("read" ಸೇವಾ ಕಾರ್ಯಾಚರಣೆಗೆ ಅನುಗುಣವಾಗಿ) ಕರೆಯುವ ಮೂಲಕ, ಉದಾಹರಣೆಗೆ:
{
FileNameSave fileName = @'C:\\TestCustomerRead.xml';
Map map = new Map( Types::Integer,
Types::Container);
AxdCustomer customer;
AifEntityKey key;
XMLDocument xmlDoc;
XML xml;
AifPropertyBag bag;
#File
;
map.insert(fieldNum(CustTable, AccountNum), ['123456']);
key = new AifEntityKey();
key.parmTableId(tableNum(CustTable));
key.parmKeyDataMap(map);
customer = new AxdCustomer();
xml = customer.read(key,
null,
new AifEndpointActionPolicyInfo(),
new AifConstraintList(),
bag);
new FileIoPermission(fileName, #IO_Write).assert();
xmlDoc = XmlDocument::newXml(xml);
xmlDoc.save(fileName);
CodeAccessPermission::revertAssert();
info('Done');
}
ನೀವು '123456' ಅನ್ನು ನೀವು ಓದಲು ಬಯಸುವ ಗ್ರಾಹಕರ ಖಾತೆ ಸಂಖ್ಯೆಯೊಂದಿಗೆ ಬದಲಾಯಿಸಬೇಕು.
ಹೆಚ್ಚಿನ ಓದಿಗೆ
ನೀವು ಈ ಪೋಸ್ಟ್ ಅನ್ನು ಆನಂದಿಸಿದ್ದರೆ, ನೀವು ಈ ಸಲಹೆಗಳನ್ನು ಸಹ ಇಷ್ಟಪಡಬಹುದು:
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ರಲ್ಲಿ ಕಾನೂನು ಘಟಕವನ್ನು (ಕಂಪನಿ ಖಾತೆಗಳು) ಅಳಿಸಿ
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಯಾವ ಉಪವರ್ಗವನ್ನು ತ್ವರಿತವಾಗಿ ಮಾಡಬೇಕು ಎಂಬುದನ್ನು ಕಂಡುಹಿಡಿಯಲು SysExtension ಫ್ರೇಮ್ವರ್ಕ್ ಅನ್ನು ಬಳಸುವುದು
- ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಮ್ಯಾಕ್ರೊ ಮತ್ತು strFmt ನೊಂದಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್
