MS-HUG Day 2

Well, unlike day 1, I was unable to dedicate a whole lot of time to the convention.

The only thing that I can attest to is that my discussion with Mark Singh brought some interesting ideas for the components of SEMRHIO

I also met with Eric Battalio again where I was grilled for more about an hour and a half. “Hands around my neck squeezing hard andforcing me to tell how documentation can be better.” Or something like that 🙂

Actually it was a great discussion, we discussed things that I did not like about the documentation, above and beyond my Documentation Rant.Hopefully something will come out of that, maybe some enhancements to the core product, some changes to the coreMSDN site, and other things. I hopethat documentationwill no longer be a second rate citizen in the eyes of Microsoft. My feelings that if thereis betterdocumentation (some documentation is better than others granted), but how we, the unenlightened, actually interact with thedocumentationthatmore resources of MS could be dedicated to making better software and not so many resources dedicated to supporting it.

I once again brought up that I use Google almost exclusively compared to Live Search because of the hit ratio.

MOSS SDKs Refreshed – BDC Tool released!

What a great relase of a new WSS/MOSS SDK (couldn’t have come at a better time for me :-).

In this latest release we have some goodies packed in to the SDK – the BDC Tool
– which allows you to visually create a BDC Application Config file (.xml) that is
based on both OLEDB/ODBC and Web Service data sources.

This was one of the major complaints from business when looking into the BDC (BDCMan
did do a great job)

Sharepoint
SDK Refresh (175MB!!)

BDC
TOOL

Brief Summary of What’s included (taken from the Sharepoint page above):
-ECM Start kit also included
-updated workflow samples
-SSO provider samples (to use SSO to access your own people stores)
-BDC Tool + further BDC samples (SAP, custom etc)
-Document Inspector custom sample
-Document Converter custom sample
…and the list goes on…..

either which way – this release is BIG!

Enjoy

Pipeline component – a symbol preprocessor

http://www.codeplex.com/BizTalkSymbolReplace

This BizTalk 2004 pipeline component works as a symbol preprocessor. (It should works to 2006 with small changes.)
I use it for EDI preprocessing.
It can change the control symbols, can use the RegExes.
Look to the comments inside the Configuration file to details.

Only setup for this component is to fill in the path to the Configuration file.

As a matter of fact I have to use the symbol preprocessr each time I work with EDI.

Please, Let me know is this component is helpfull for you or not.

Applying a BAM continuation from within a pipeline

Here is a good question that I recently answered in a BizTalk Forum. I thought it would be of interest to others so I’m posting my response in this blog.

“I also have an orchestration that includes a custom .net component for writing BAM activities.  I'm utilizing serializable classes and strongly typed APIs (GenerateTypedBAMAPI tool) to write to the BAM db.  My question centers around how to access the unique Activity ID in my net code, which was initially created in the pipeline.   I presume that I have to pass this data to the orchestration.  I would really like to see an example of how this is done.”

This is a good question, not hard, just good!

You have a number of options here.  Logically, you need a way of storing the Activity ID and then passing it along to the orchestration from the time the message is processed through the pipeline to when it is processed inside the Orchestration. One way to keep track of this ActivityID is to push the id to the header section of the Message (aka… the MessageContext). To push it here you need to "Promote" the Activity ID value. However, property promotion does come at a cost because you're adding overhead to the message process for purposes of BAM Tracking.  If you are not concerned with the additional processing overhead then this option may work for you.

You can promote the value two ways, 1) you can use Property Field promotion, or 2) distinguished field promotion. Property Field promotion dictates that you need a special "property" schema deployed that contains a element and element type of the data (a string for ActivityID) that you are promoting eventually inside the pipeline.  Distinguished field promotion is just when you add a value to the MessageContext.

Code:
//For writing a distinguished field value
iinMsg.Context.Write( "/*[local-name()='MyBamInfo' and namespace-uri()='http://mycompany.com']/*[local-name()='ActivityID' and namespace-uri()='']",
http://schemas.microsoft.com/BizTalk/2003/btsDistinguishedFields", ActivityID);
 
//Create and deploy a custom property schema, and add an element and derive it from the MessageContextPropertyBase (if not in message payload, otherwise MessageDataPropertyBase if it will be in the message: this is set underneath the Propery Base Schema property)
//For writing a property field value
inMsg.Context.Promote( "propertySchem.ActivityID", "
http://schemas.microsoft.com/BizTalk/2003/system-properties", ActivityID);


In either case, you can use these promoted values inside the Orchestration instance for your BAM tracking purposes. Depending on whether you use Property Field or a Distinguished Field, the methods you use to access promoted values are going to be different. For Distinguished fields, you must use code within the orchestration to get the distinguished field values. Whereas, Property promoted values can be exposed with the Message(PropertySchema.ActivityID) syntax for the value that you promoted.
 
Another option is to add this ActivityID to your message schema and populate the ID within the message (inside the pipeline if you want) and then promote the values using either a Distinguished or Property field. Then you can access the values using the normal msg.ActivityID, or Msg(PropertySchema.ActivityID) options.

Note: if you're using continuation you don't want to call EndActivity within the pipeline component, because that will mark the activity instance record as "IsComplete" which commits the tracking record.

Here is a link for more help:
http://blogs.msdn.com/keithlim/archive/2006/02/08/527227.aspx
(It's kind of old but it's still good.)

 

Changing the Send/Receive Handler Removes Port Authentication Details

I’m undertaking performance testing with a client today and was broadsided by aninteresting quirk (bug?) when configuring both receive locations and send ports to use a different Host. It would appear that when the receive handleris changed on a location/port that uses custom authentication, the password is removed, resulting in an error similar to the […]

MS-HUG Day 1

Wanted to recap the list of things I walked away with today from the conference at MS-HUG:

Keynote address

Bill Crounse, MD, Director Worldwide Health Microsoft Corporation

Well, I got to listen to Bill (no not that Bill) and it was interesting, I learned today that CMS will significantly curtail the payments of procedures for in hospital infections. This will have rippling effects for the providers, and will spurn the pay for performance initiatives and quality of care initiatives as hospitals will now have to foot the bill for those issues.

Winning Trust, Minimizing IT Resources: Key to Forming RHIOs

Mark Singh President Clinicore Solutions

Kathleen Sullivan CEO Salient Health Solutions/SEMRHIO Consultant

Being the architect I am very much aware of what is going on (I had better!), however it was interesting because most of the questions were focused on the business model, the revenue generation process. This is the next phase in our process, but having a working process in place I feel is the key to success as we now have 3 hospitals up with minimal IT resources.

Reference Implementations for Healthcare: HCE and iHE XDS.b(sorry the link does not work as of yet)

Roberto Ruggeri Senior Technical Strategist for Microsoft Worldwide Health Microsoft Corporation

Randy Fusco Technical Strategist for Microsoft US Health Providers Microsoft Corporation

This was a great presentation where I learned about how much Microsoft is looking for us to help. For those who write blogs and to those who read blogs (you know who you are) it was a call to action! Yes you!

On http://solshare.net you can download the code and start to try it out and using their forum, you can submit bugs, ask for enhancements, etc.

I asked if there was a list of known issues, in which Roberto told me that no, this was a feature, that we get to start our own list and he will see if we really know what we are doing! (j/k) Seriously, he said that there is no existing list of issues, so I would assume that you can post those known issues/fixes directly on the solshare.net site.

Lunch

I went out to eat with Eric Battalio, Muhammad, and Liza from the documentation team, and wow, I learned a lot! The first and most important thingI learned is that those comments that you can leave on the documentation site actually go to someone. My suggestion is that if you want to start a dialog with the documentation team (which by the way, they would LOVE), it would be nice to have some type of post submission question asking if you (the feedbacker) would like to be contacted by Microsoft and what email they can contact you.

In the interim, just put your email address in the comments so they can contact you directly, Iassume that there will be something in the worksaddressing this issue.Below is an example of something I have had on the back of my mind recently.

Improving Patient Safety Using the Microsoft Common User Interface (MS-CUI)

Andrew Kirby Director of Solutions Development Center Microsoft Corporation, UK

Like the CHF, this is very much a work in progress and since it is very early on in the development, it is more of a guideline and they need as much feedback as possible. However there are no immediate plans for a reference implementation to build off of other than the first implementation in England.

What’s New in BizTalk Server 2006 R2

Stuart Landrum Program Manager, BizTalk, Microsoft Corporation

Well, it was the first time I had met Stuart face to face, had been on some conference calls with him, so it was good to meet him. He explained the new features with the HL7 accelerator (now officially branded 2.0). There was very little pictures of the product so the discussion went rather quickly and ended early with few questions, I had to ask a few questions to get people in the asking mood, but it did not go much further than that.

Closing Keynote: Using IT to affect efficiency and safety changes in the perioperative process

Paul St. Jacques, MD Associate professor and Director of Perioperative informatics Vanderbilt University

This doctor was actually kind of funny. I am not sure if he meant to be, but if it was not for his phones (yes plural) that added a little static to his voice, or his low ranking on the pay for performance ratings that he refuse to show on the list of many doctors ranked (it was too small to see), it was a good presentation that ended on a high note, even though he essentially had to ask us to laugh, even though there wasn’t really anything funny about his presentation. He did use one of my all time favorite phrases, while describing the hospital system that he works in, he described it as a level 1 trauma facility that is “soup-to-nuts” – where did that come from and should we be saying that phrase as professionals?

The interesting thing that I thought that he was going to joke about was his workflow from a patient pre-registration process through surgery completion. look closely for anything wrong with this picture

nope, not the fact that they are using SQL Server 2003 (must be a special version of SQL Serverthat I am notaware of)

The real problem with this picture is that there is a little girl that starts the surgery process, and when the workflow is complete, thegirlis actuallyHenry Kissinger! Either that process took a really long time (and something major wrong happened), or this is a plastic surgeon’s billing dream come true!

Talk to you all tomorrow!

Where’s my functoids?

QuickLearn is in the process of updating our now famous BizTalk Deep Dive course (NEW and IMPROVED!). As I have been collecting and reviewing content for the advanced mapping module, I am reminded of one of the most common "Eureka" moments for many students is the realization of just how easy it is to create custom maps without using functoids. Many people come to BizTalk after having developed a custom integration project that required them to create their own XSLT. Often I am asked, "Can’t I leverage the work that I've already done and use the XSLT I’ve created? Do I have to use all those functoids?” The answer: Of course you can use your own XSLT, and some of the best maps do! You really have three options here: The first two involve the use of Scripting functoids; the third relies strictly on the XSL that you provide.

Inline XSLT

Many times, the result of chaining several functoids together can be more concisely defined in a little custom XSL. When using the inline XSLT option, the Scripting functoid cannot have any input links; rather, it should contain references to the source schema nodes through XPath expressions. The functoid must link directly to a record or field in the destination schema (it cannot be input for other functoids).

Inline XSLT Call Templates

Like an inline XSLT script, the inline XSLT call template must connect directly to a destination node; however, it may receive input through links coming from other functoids, or from the source schema. On the map grid, setting the Custom Extension XML property enables Scripting functoids, configured as either Inline XSLT or Inline XSLT Call Templates, to make calls to external assemblies.

Custom XSLT Code (Look ma, no functoids!)

If you have XSLT code you have written to convert instance messages, you can use that code directly, instead of creating a map.

  1. Create an empty map and set the source and destination schemas as you normally would.
  2. With the map grid selected, configure the Custom XSLT Path property to use the file containing your custom XSL.

 

NOTE – Using custom XSL overrides all links and/or functoids in the map.

Remember that you can always validate your map to access the generated XSL, which will be executed for the map. Also remember that maps do not validate the messages generated, except while testing in Visual Studio. The warnings you receive in Visual Studio provide design-time assistance to identify possible problems. BizTalk is totally content with generating exactly the message that you tell it to, valid or not!

Until next time, have a great day.