سؤال

لست متأكدا مما إذا سألت السؤال المناسب، ولكن هذا هو السيناريو الذي أحاول تشغيله:

يجب أن يتعين على ملفات متعددة (XML وبعض الملفات ذات الصلة، "المرفقات") الدخول في BizTalk كرسالة واحدة. لقد نظرت إلى المحولات الموجودة، ولا ترى أن القيام به مع القائمة مرة واحدة. أن تكون أكثر دقة، يتم أخذ الملفات من نظام الملفات. لم يتم العثور على الملفات في نفس الوقت، ولكن الوصول إلى واحد في وقت واحد، عندما لا يتم ضمان النظام. ملف XML (محتوى) هو الشخص الذي يعرف المرفقات التي يجب أن يكون لديك (ما هي الملفات الأخرى).

نحن نبحث في BizTalk 2009 وكانت أتساءل ستكون مسؤولية محول مخصص، أو أي شيء آخر. وكانت أبحث عن عينات.

شكرا.

هل كانت مفيدة؟

المحلول

من المحتمل أن تفعل ما تريد استخدام محول مخصص، على الرغم من أنني أوصي به. يمكنك تحقيق ما تحتاجه باستخدام التمرير.

ما الذي تبحث عنه هو مثل قافلة، أو على الأقل بعض استخدام الارتباط.

في BizTalk A Convoy هو نمط المراسلة (على عكس ميزة BizTalk) التي تسمح بمعالجة مجموعات من الرسائل بواسطة تزامن واحد.

يمكنك استخدام الارتباط بشكل أساسي على منفذ الاستلام لمجموعة الرسائل معا في أي مواز (ما تريد ربما) أو الأزياء المتسلسلة.

هناك مقال [هنا] (http://msdn.microsoft.com/en-us/library/ms942189(bts.10 ).aspx) بواسطة Stephen W. Thomas حول القوافل (إنه ل BT 2004 ولكن المفاهيم لا تزال تعقد) وهناك الكثير من المعلومات الإضافية على الويب والكتب (يحتوي BizTalk Server 2006 على إعاقة فرعية عليهم)

دون مزيد من التفاصيل حول السيناريو الخاص بك، من الصعب أن نعرف بالضبط كيف سيتم بناء القافلة ولكن أدناه مناهضين للنظر في (أيضا، لم أجد فرصة لاستخدام BT2009 بشكل صحيح، لذلك قد يكون هناك دعم ممتد لسيناريوهات الارتباط مساعدتك في الخروج).

الارتباط المرن

إذا كنت لا تعرف أي شيء عن الملفات المدرجة في السياق XML، فمن المحتمل أن تحتاج إلى نمط مثل المرء الذي وصفه تشارلز يونغ هذه بريد.

قافلة متسلسلة غير موحدة

إذا كان لديك القليل من المعلومات قبل بيد طريقة واحدة قد تكون على النحو التالي (أساسا قافلة متتالية غير موحدة):

هذا يجعل الافتراض أن هناك طريقة لربط جميع الملفات معا حتى تتمكن من ربطها.

قم بإنشاء تزامن واحد يشترك في منفذ الاستلام الوارد (الذي يحتوي على موقع تلقي الموقع).

سيكون لهذا التزامن الحصول على تنشيط واحد تلقي الشكل الذي تم إعداده لملف المحتوى الخاص بك.

بمجرد بدء تشغيل Orchestration بواسطة ملف محتوى، يبدأ شكل تلقي مرتبط ثاني في التقاط الرسائل التي تطابق ملف المحتوى هذا. (هذا التلقي الثاني يمكن أن يكون في حلقة للسماح بأرقام متغيرة من الملفات)

يمكنك بعد ذلك حزمهم جميعا في ملف خارجي واحد من تصميمك وإرسالها بمجرد استلام العدد الكامل من الملفات.

نصائح أخرى

يبدو لي أن نهج أفضل سيكون تنفيذ المتطلبات المذكورة أعلاه مع مجموعة من مكون خط أنابيب مخصص و / أو محول مخصص. أفترض أنك لا تحتاج حقا إلى التعامل مع الملفات الواردة - باستثناء ملف XML للمحتوى - أو أنه لا يمكنك ذلك لأنها بتنسيق ثنائي. هذا يدعو إلى مكون خط أنابيب مخصص.

ما يمكنك القيام به هو تطوير محول BizTalk مخصص للتفاعل مع نظام الملفات ولتنفيذ منطق الاستماع والاحتياجات. بعد ذلك، يمكنك تطوير مكون خط أنابيب مخصص لإنشاء رسالة BizTalk واحدة ربما مع نوع بيانات Base64 في ذلك للبيانات الثنائية. بالإضافة إلى ذلك، يمكنك أيضا الترويج للرسائل الصحيحة في هذا المكون لتمكين اشتراكات تزامن.

الأوركسترا أكثر ملاءمة لتنفيذ سيناريوهات تدفق العمل التجارية حيث تكون الرسائل موجودة بالفعل بتنسيق XML. هذا لا يبدو أن هذا هو الحال. في أي حال، أعتقد أنه سيتم حاجة مكون خط أنابيب مخصص إلى الأقل.

إجابة ديفيد هي الإجابة الصحيحة.

حتى في الحالات التي لا تعرف فيها أي شيء على الإطلاق حول محتويات المرفقات المتوقعة، من المؤكد أنك تعرف أسمائها ومواقعهم. لذلك يمكنك استخدام الارتباط المرن مرتبط في إجابة ديفيد مثل هذا:

يجب أن يرتبط مفتاح الحل على خاصية BTS.ReceivedFilename.

أولا، قم بإنشاء خط أنابيب تتلقى مخصص، مع مكون خط أنابيب مخصص يعزز خاصية سياق BTS.ReceiveDFilename للرسائل المستلمة. هذا المكون المخصص البسيط من السهل إلى حد ما أن يكتب إلى حد ما ولكن يمكنك جعله مباشرا باستخدام أطر الطرف الثالث مثل، (وقح المكونات، هنا) لي pipelinecomponentbase. الطبقة أو ممتازة BizTalk Server خط أنابيب معالج مكون.

الآن من أجل الجزء السهل:

  • يتم استلام المرفقات في موقع معين، مع تحديدها بواسطة مسارها على نظام الملفات.
  • إنشاء موقع تلقي يستمع إلى موقع بديل, ، تستخدم فقط للتحكم في عندما يتم ابتلاع الملفات بالفعل BizTalk.
  • في تزامنك، قم بإنشاء نوع ارتباط مع خاصية BTS.ReceivedFilename وقاعدة مجموعة العلاقة على نوع الارتباط هذا.
  • عندما تريد تلقي المرفقات الثنائية، أرسل رسالة وهمية مع خاصية سياق BTS.ReceiveDFilename المعينة إلى اسم ملف المرفق الثنائي ولكن مع المسار مطابق الموقع البديل ؛ واحد المستخدم من قبل موقع الاستلام. تهيئة الارتباط على شكل الإرسال.
  • استخدم شكل تعبير لنسخ الملف الثنائي من موقعه الأصلي إلى واحد المستخدم من قبل موقع التلقي.
  • أخيرا، استخدم شكل تلقي مرتبط بمنفذ الاستلام الذي يحتوي على موقع التلقي الذي سيعزز خط أنابيب تلقي مخصص في خاصية BTS.ReceivedFilename.

لاحظ أنك تحتاج فعلا إلى إرسال رسالة من أجل تهيئة الارتباط. لا يهم الرسالة التي ترسلها بالفعل. ما أقوم به هو إرسال الرسالة من خلال خط أنابيب إرسال يحتوي على فارغة مكون خط الأنابيب. هذا مكون خط أنابيب يقرأ الرسالة ولكن إرجاع NULL (بحيث تختفي الرسالة في الهواء الرقيق قبل أن تصل إلى المحول). الحل الأكثر تفصيلا سيكون استخدام باطل مشترك كهربائي. هذا محول يقرأ الرسالة ولكنه لا يفعل أي شيء حيال ذلك.

تتجنب هذان الحلولان وجود العديد من الملفات في مكان مؤقت في مكان ما، فقط من أجل تهيئة الارتباط!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top