xsd बिज़्टेक 2010: एक्सएसडी को एक ही नाम के बहुत सारे तत्वों के साथ मानचित्रण करना




mapping biztalk (2)

उत्पन्न एक्सएलस्ट प्राप्त करने का एक आसान तरीका (और आम तौर पर कम से कम बीटीएस 2006 के बाद से काम किया जाने वाला अनुशंसित तरीका) अपने समाधान एक्सप्लोरर में बीटीएम फ़ाइल को राइट-क्लिक करना है और "मान्य नक्शा" चुनें। इस का उत्पादन आपको एक्सएसएलटी और एक्सटेंशन ऑब्जेक्ट्स को स्वसंपूर्ण फाइलों में देता है (कुछ फंकटॉइड और बाहरी क्लास रेफरेन्स एक्सटेन्श ऑब्जेक्ट फाइल का उपयोग करते हैं)

यहां से आप बचा सकते हैं और एक्सएसएलटी आउटपुट को संशोधित कर सकते हैं - .btm.cs फ़ाइल को पार्स करने की ज़रूरत नहीं है या स्ट्रिंग एन्कोडिंग मुद्दों के बारे में चिंतित नहीं है जैसे कि एक एट्रिब्यूट या एक नेमस्पेस के आसपास बच गए डबल कोट की कमी ...

बिट्जॉक 2010 में मुझे निम्नलिखित संरचना के साथ एक इनपुट से एक्सएमएल में मैप करना चाहिए:

<REQUEST>
  <PROGRAM name="PROGRAM123">
    <INPUT>
      <INSTRUCT name="INSTR1">
         <FIELD name="FIELD11">VALUE1</FIELD>
         <FIELD name="FIELD12">VALUE2</FIELD>
         <FIELD name="FIELD13">VALUE3</FIELD>
       </INSTRUCT>
       <INSTRUCT name="INSTR2">
         <FIELD name="FIELD21">VALUE4</FIELD>
         <FIELD name="FIELD22">VALUE5</FIELD>
         <FIELD name="FIELD23">VALUE6</FIELD>
         <FIELD name="FIELD24">VALUE7</FIELD>
       </INSTRUCT>
       <INSTRUCT name="INSTR2">
         <FIELD name="FIELD21">VALUE8</FIELD>
         <FIELD name="FIELD22">VALUE9</FIELD>
         <FIELD name="FIELD23">VALUE10</FIELD>
         <FIELD name="FIELD24">VALUE11</FIELD>
       </INSTRUCT>
     </INPUT>
   </PROGRAM>
</REQUEST>

उत्पन्न XSD इस तरह से था:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="REQUEST" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="REQUEST" msdata:IsDataSet="true" msdata:Locale="en-US">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="PROGRAM">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="INPUT" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="INSTRUCT" minOccurs="0" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="FIELD" nillable="true" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:simpleContent msdata:ColumnName="FIELD_Text" msdata:Ordinal="1">
                                <xs:extension base="xs:string">
                                  <xs:attribute name="name" type="xs:string" />
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="name" type="xs:string" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>    
            </xs:sequence>
            <xs:attribute name="name" type="xs:string" />
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

उत्पन्न संरचना सिर्फ "सामान्य" थी और मुझे बिज़्टाक में इसे नक्शा बनाने के लिए टेबल लूपिंग फ़ंक्टाइड का उपयोग करना होगा। मुझे इस समाधान से जानकारी मिली है: http://hestia.typepad.com/flatlander/2007/01/mapping_fixed_e.html लेकिन यह मेरे लिए बहुत बोझिल लगता है (मेरे पास कुछ स्थिर मूल्यों के साथ 40 फ़ील्ड्स हैं)

एक अन्य संभावना XSLT का उपयोग करना होगा लेकिन मेरे पास इसके साथ कोई अनुभव नहीं है और मैं इसे सीधे बिज्तक में (एक्सएसएलटी के बिना) नक्शा करना चाहता हूं

क्या एक XSD स्कीम बनाने की संभावना है, इसलिए मेरे पास मैप एडिटर में सभी फ़ील्ड होंगे और इसमें मैपिंग बनायेंगे (टेबल लूपिंग फ़ंक्शन) के बिना।

किसी भी विचार / टिप्पणियों की सराहना की जाएगी (भले ही उत्तर है: "XSLT का उपयोग करें")


एफडब्ल्यूआईडब्ल्यू हम आम तौर पर किसी भी गैर-तुच्छ मानचित्रों के लिए XSLT का उपयोग करते हुए हवा में उड़ते हैं।

और बिज़टॉक आपके लिए वैसे भी XSLT बनाता है :)

तो यह सुझाएगा:

  • जैसा कि आप BizTalk मैपर के साथ कर सकते हैं उतना अच्छा करो (ऐसा लगता है कि, प्रोग्राम, इनपुट और इंस्ट्रक्टर मैप करने योग्य हैं)
  • अपनी परियोजना को संकलित करें
  • विज़ुअल स्टूडियो में समाधान एक्सप्लोरर में अपनी .btm फ़ाइल पर क्लिक करें, और उसके बाद शीर्ष पर "सभी फ़ाइलें दिखाएं" चुनें। अब आपको एक छिपी हुई फ़ाइल SameFileName.btm.cs । इस फाइल में एक्सएसएलटी है जो बिज़टॉक उत्पन्न करता है। इस XSLT की प्रतिलिपि बनाएँ, और इसे एक नई फ़ाइल में पेस्ट करें - इसे .xslt के रूप में सहेजें। आपको एकल उद्धरण चिह्नों के साथ दोहरे उद्धरणों को बदलने की ज़रूरत होगी।
  • मूल बीटीएम (मानचित्र) को फिर से खोलें। स्कीमा (ग्रिड गुण) के बीच ग्रे क्षेत्र के मानचित्र पर क्लिक करें। 'कस्टम XSLT पथ' प्रॉपर्टी में, अपने नव निर्मित .XSLT फ़ाइल का चयन करें।

बिज़टॉक के मैपर ने आपको अपने एक्सएसएलटी पर एक हेडस्टार्ट दिया है, और आप मूल एक्सएसएलटी को आसानी से उठा सकेंगे। एक मिला - सुनिश्चित करें कि आपको नाम स्थान उपनाम उपसर्ग (आमतौर पर एस 1) याद है

संपादित करें: ध्यान दें कि उपर्युक्त BizTalk 2009 के लिए है

संपादित करें

बीटीएम के विज़ुअल मैप में, मैं सुझाव देता हूं कि आप ग्रे मैपिंग क्षेत्र से मैन्युअल रूप से सभी मैपिंग लाइनों और फ़ंक्शन को हटा दें, अगर आप भूल जाते हैं कि आप कस्टम एक्सएसएलटी का उपयोग कर रहे हैं। अगर आप कस्टम एक्सएसएलटी के साथ एक मानचित्र का परीक्षण करते हैं, तो मैपर एक अनुस्मारक जारी करता है कि एक्सएसएलटी फ़ाइल का उपयोग किया जाता है और विज़ुअल मानचित्र को नजरअंदाज किया जाता है।