Miklix

ڈائنامکس اے ایکس 2012 میں ایکس ++ سے براہ راست اے آئی ایف دستاویز خدمات کو کال کرنا

شائع شدہ: 16 فروری، 2025 کو 11:23:28 AM UTC

اس مضمون میں ، میں وضاحت کرتا ہوں کہ ایکس ++ کوڈ سے براہ راست ڈائنامکس اے ایکس 2012 میں ایپلی کیشن انٹیگریشن فریم ورک دستاویز کی خدمات کو کس طرح کال کیا جائے ، جس سے ان باؤنڈ اور آؤٹ باؤنڈ دونوں کالز کی نقل کی جاسکتی ہے ، جس سے اے آئی ایف کوڈ میں غلطیوں کو تلاش کرنا اور ڈی بگ کرنا نمایاں طور پر آسان ہوسکتا ہے۔


یہ صفحہ انگریزی سے مشینی ترجمہ کیا گیا تھا تاکہ زیادہ سے زیادہ لوگوں تک اس تک رسائی ممکن بنائی جا سکے۔ بدقسمتی سے، مشینی ترجمہ ابھی تک ایک مکمل ٹیکنالوجی نہیں ہے، اس لیے غلطیاں ہو سکتی ہیں۔ اگر آپ چاہیں تو اصل انگریزی ورژن یہاں دیکھ سکتے ہیں:

Calling AIF Document Services Directly from X++ in Dynamics AX 2012

اس پوسٹ میں موجود معلومات ڈائنامکس اے ایکس 2012 آر 3 پر مبنی ہیں۔ یہ دوسرے ورژن کے لئے درست ہوسکتا ہے یا نہیں۔

میں حال ہی میں ایک کسٹمر کو ایپلی کیشن انٹیگریشن فریم ورک (اے آئی ایف) ان باؤنڈ پورٹ کو نافذ کرنے میں مدد کر رہا تھا تاکہ وہ دوسرے سسٹم سے موصول ہونے والے ڈیٹا کی بنیاد پر گاہکوں کو تخلیق کرسکیں۔ چونکہ ڈائنامکس اے ایکس پہلے ہی کسٹ کسٹومر دستاویز سروس فراہم کرتا ہے ، جو اس کے لئے منطق کو نافذ کرتا ہے ، لہذا ہم نے اسے آسان رکھنے اور معیاری حل استعمال کرنے کا فیصلہ کیا۔

تاہم ، جلد ہی یہ پتہ چلا کہ ایکس ایم ایل پیدا کرنے کے لئے بیرونی نظام کو حاصل کرنے میں بہت سارے مسائل تھے جسے ڈائنامکس اے ایکس قبول کرے گا۔ ڈائنامکس اے ایکس کے ذریعہ تیار کردہ ایکس ایم ایل اسکیما کافی پیچیدہ ہے اور یہ بھی ظاہر ہوتا ہے کہ ڈائنامکس اے ایکس میں کچھ کیڑے ہیں جو کبھی کبھی اسے ایکس ایم ایل کو مسترد کرنے کا سبب بنتے ہیں جو دوسرے ٹولز کے مطابق اسکیما-درست ہے ، لہذا مجموعی طور پر ، یہ میرے خیال سے کم آسان ثابت ہوا۔

کوشش کے دوران ، مجھے اکثر یہ معلوم کرنے کے لئے جدوجہد کرنا پڑی کہ کچھ ایکس ایم ایل فائلوں کے ساتھ اصل مسئلہ کیا تھا کیونکہ اے آئی ایف کے ذریعہ فراہم کردہ غلطی کے پیغامات معلوماتی سے کم ہیں۔ یہ بھی تھکا دینے والا تھا، کیونکہ مجھے ایم ایس ایم کیو پر ایک نیا پیغام بھیجنے کے لئے بیرونی نظام کا انتظار کرنا پڑا اور پھر اے آئی ایف کے لئے پیغام اٹھانے اور غلطی دیکھنے سے پہلے اس پر عمل کرنا پڑا۔

لہذا میں نے تحقیقات کی کہ کیا کسی حد تک تیز رفتار جانچ کے لئے مقامی ایکس ایم ایل فائل کے ساتھ براہ راست سروس کوڈ کال کرنا ممکن ہے اور یہ پتہ چلتا ہے کہ یہ ہے - اور صرف یہی نہیں ، یہ کرنا واقعی آسان ہے اور حقیقت میں بہت زیادہ معنی خیز غلطی کے پیغامات فراہم کرتا ہے۔

ذیل میں دی گئی مثالکا کام ایک مقامی ایکس ایم ایل فائل پڑھتا ہے اور کسٹمر بنانے کے لئے اسے ایکس ڈی کسٹومر کلاس (جو کسٹ کسٹومر سروس کے ذریعہ استعمال ہونے والی دستاویز کلاس ہے) کے ساتھ استعمال کرنے کی کوشش کرتا ہے۔ اگر آپ کو ضرورت ہو تو آپ دیگر تمام دستاویز کلاسوں ، مثال کے طور پر ایکس ڈی سیلز آرڈر کے لئے اسی طرح کی نوکریاں بنا سکتے ہیں۔

static void CustomerCreate(Args _args)
{
    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');
}

کسٹمر.create() طریقہ کار (جو اے آئی ایف میں "تخلیق" سروس آپریشن سے مطابقت رکھتا ہے) کے ذریعہ واپس کی جانے والی اے ایف اینٹیٹی کی آبجیکٹ میں یہ معلومات شامل ہیں کہ کس گاہک کو تخلیق کیا گیا تھا ، دیگر چیزوں کے علاوہ تخلیق کردہ کسٹ ٹیبل ریکارڈ کا ریکیڈ۔

اگر آپ جس چیز کی جانچ کرنے کی کوشش کر رہے ہیں وہ اس کے بجائے آؤٹ باؤنڈ پورٹ ہے یا اگر آپ کو صرف ایک مثال کی ضرورت ہے کہ ایکس ایم ایل کو ان باؤنڈ پورٹ پر کیسا نظر آنا چاہئے تو ، آپ اس کے بجائے پڑھنے () طریقہ کار ("پڑھنے" سروس آپریشن کے مطابق) پر کال کرکے کسٹمر کو فائل میں برآمد کرنے کے لئے دستاویز کلاس کا استعمال بھی کرسکتے ہیں۔ اس طرح:

static void CustomerRead(Args _args)
{
    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' کو اس گاہک کے اکاؤنٹ نمبر سے تبدیل کرنا چاہئے جسے آپ پڑھنا چاہتے ہیں۔

بلوسکی پر شیئر کریں۔فیس بک پر شیئر کریں۔لنکڈ ان پر شیئر کریں۔ٹمبلر پر شیئر کریں۔ایکس پر شیئر کریں۔لنکڈ ان پر شیئر کریں۔پنٹرسٹ پر پن کریں

میکل بینگ کرسٹینسن

مصنف کے بارے میں

میکل بینگ کرسٹینسن
مائیکل miklix.com کا خالق اور مالک ہے۔ اس کے پاس ایک پیشہ ور کمپیوٹر پروگرامر/سافٹ ویئر ڈویلپر کے طور پر 20 سال سے زیادہ کا تجربہ ہے اور وہ اس وقت ایک بڑی یورپی آئی ٹی کارپوریشن میں کل وقتی ملازمت کر رہے ہیں۔ جب وہ بلاگنگ نہیں کرتے ہیں، تو وہ اپنا فارغ وقت دلچسپیوں، مشاغل اور سرگرمیوں کی ایک وسیع صف پر صرف کرتا ہے، جو کسی حد تک اس ویب سائٹ پر موجود مختلف موضوعات سے ظاہر ہو سکتا ہے۔