Hierzu mussten wir zur Laufzeit dynamisch Maps zu laden. Dies war erstmal keine große Hürde, da BizTalk Server hierfür Funktionen bereitstellt, die z.B. in Message-Assignment- Shapes aufgerufen werden können.
mapType = typeof(dynamicMapFullName);
transform(outputMsg) = mapType(inputMsg);
Dieses Vorgehen hat unter anderem den Vorteil, dass die Assemblys in denen die Maps liegen, nicht in referenziert werden müssen. Das bedeutet, dass bei einem Deployment bzw. Redeployment der Maps die anderen Prozesse unbeeinflusst bleiben.
Das Problem der dynamischen Maps war an dieser Stelle gelöst, jedoch haben BizTalk- Maps (hinter denen XSLTs stecken) die dynamisch aufgerufen werden einen großen, entscheidenden Nachteil: Man kann Ihnen keine Parameter zuweisen!
Da das aber essentiell für die Gesamtarchitektur war, mussten wir uns eine Lösung hierfür ausdenken.
Um die Maps dynamisch aufzurufen und zur Laufzeit Parameter mitzugeben, lag die Lösung in einer C#- HelperKlasse bzw. Helper-Methoden. Der Aufruf findet in einem Message-Assingment-Shape statt.