Tim on ROA vs GET and POST
My friend Tim Ewald wrote an interesting reflection about when to use Resource Oriented Architecture (ROA) vs. GET and POST to model RESTful services ….(read more)
My friend Tim Ewald wrote an interesting reflection about when to use Resource Oriented Architecture (ROA) vs. GET and POST to model RESTful services ….(read more)
Well I recently went down the task of upgrading my notebook to x64 – Win2008 RC0.
So far so good – a little hunting for the vital drivers (bluetooth) and it’s rocking.
I then went to continue on with some BizTalk RFID work and boom!!! I forgot that I
needed to update these drivers also
.
Fortunately after some researching (knew I’d put that Computer Engineering degree
to good use) – I found the drivers I needed, although they don’t say “DLP RFID Drivers….”
Essentially they are some sort of USB port converter – works fine with the DLP_RFID
demo program…..cool…….
When you install the Drivers – from Device Manager, select ‘Update Driver….’ and
explicitly point to the root of the DLP x64 driver’s folder. From here you will be
presented with 4 driver options.
Select ‘USB Serial Converter’ …..you’re away!
I’ve done all the hard work for you – grab them here
DLP_RFID
x64 drivers
>
This last Wednesday I presented a session at the Microsoft Architect Forum 2007, held at the Lisbon Casino (a great venue), with ~100 architects attending. The overall topic of the event was S+S, with a general introduction about the topic being done by Beat Schwegler. My session, following Beat, was about the %u00abS for Services%u00bb, the S after the plus (S+S), and Jos%u00e9 Ant%u00f3nio Silva wrapped up with a talk about the %u00abS for Software%u00bb.
My presentation was divided in two parts. The first was a general introduction to the topic of Services, SOA, SaaS and S+S. The second, and most provocative part, aimed at introducing a different paradigm of looking at the way software is developed, the notion of having it completely hosted in %u00abThe Cloud%u00bb. Very specifically, I talked about the concept of the Internet Service Bus, materialized (I wonder if this is the best word, since there’s no box to buy) in BizTalk Services, under development by Microsoft, and based on WCF technology.
I described its three main current components: Identity&Access Control, Connectivity, and Workflow (still to be made available). The first two are the essential parts of the platform, allowing for universal secure connectivity. It is perhaps not obvious that Ms should start with these two, but if you want to put up software in the cloud, you do have to make sure that people can both reach it, and reach it in a secure way, so it makes sense.
I had to ask people for their “suspension of disbelief”, however, to make a parallel between Facebook and BizTalk Services. Facebook is a social community site, and what I find most amazing in it is that there are over 6500 apps in its directory. Six thousand! This is an amazing figure.
Now imagine you had the same, in terms of services and enterprise services. Imagine you wanted an portfolio of services to handle HR, clicked “Add” in some kind of marketplace site (will there be one?), and BAM!, here you have it. You want an accounting app? just pick one and click “Add”. Not working as you want? click “Remove”, etc. This would be S+S-nirvana, and maybe we’ll have it one day.
I hope it is now clear why I asked people to suspend the disbelief 🙂
At the end of the session I did a small demo. This was the scenario: a global company has a set of distributed warehouses, and wants its business users to be able to monitor remotely what merchandise goes out. The tracking of the merchandise was done using Rfid tags and BizTalk Rfid, which sent events to BizTalk Services, and these were consumed by a client app developed in WPF/.Net 3.0.
Here’s how we did it: in BizTalk RFID, I created an app with two event handlers: the first removes duplicated tag reads; the second connects up to the ISB using usn/pass authentication, and sends a notification with the tag id read. I used the Phidgets RFID device. On the other end, the client app(s) just connects to the ISB and subscribes to that notification. Every time a tag is read, its photo is displayed in the Rfid Dashboard.
I developed the BizTalk RFID part, Ra%u00fal did the BizTalk Services bit based on the Multicast sample in the SDK, and Andr%u00e9 did the WPF app (great work, guys!). The scenario supports several publishers and several consumers.
I did a recording of the demo, so if you want to check it out you can download it from here (2 minutes, 5 mb):
BizTalk RFID + BizTalk Services + WPF demo
I’m just putting my final touches on my demos and power point slides for my session at the 2007 SOA and BPM Conference.
My session will be on Friday, November 2nd at 10 AM in the Cascade room.
Session details:
Track: Solution Architecture Track
Session Title: BizTalk Advanced Orchestration Concepts and Best Practices
Session Level: 300
Session Abstract:
Business processes are a required component in most Enterprise Integration solutions today. Business processes are modeled, designed, and built inside BizTalk Server using Orchestrations. Orchestration can range from a few simple shapes to a complex multi Orchestration, Transactional process. This session focuses on highlighting Advanced Orchestration features and best practices that can be used to shorten development time and increase overall Business Process reusability. Topics covers are: Untyped Messages, Dynamic Transforms, Starting Orchestration, Passing Port Parameters, and Convoys.
Objective 1: Review industry best practices as it relates to building Orchestration inside BizTalk Server.
Objective 2: Learn Orchestration advanced concepts and benefits from using them.
Objective 3: Understand how to apply best practices and advanced concepts to build better Business Processes.
Hope to see you there!
I’m just putting the final touches on my demos for my session at the 2007 SOA and BPM Conference in Seattle.
My session is on Friday, November 2nd at 10 AM in the Cascade room. Session details are below.
Hope to see you there!
Track: Solution Architecture Track
Session Title: BizTalk Advanced Orchestration Concepts and Best Practices
Session Level: 300
Session Abstract:
Business processes are a required component in most Enterprise Integration solutions today. Business processes are modeled, designed, and built inside BizTalk Server using Orchestrations. Orchestration can range from a few simple shapes to a complex multi Orchestration, Transactional process. This session focuses on highlighting Advanced Orchestration features and best practices that can be used to shorten development time and increase overall Business Process reusability. Topics covers are: Untyped Messages, Dynamic Transforms, Starting Orchestration, Passing Port Parameters, and Convoys.
Recently I tried to install BizTalk Server 2006 Orchestration Designer for Business Analysts (ODBA), but the installation failed with this error message.
I had Visio 2007 on my system and it looked like ODBA installer was hard coded to look for Visio 2003. To confirm that, I used Registry Monitor utility from Windows Sysinternals web site […]
Those, who work with BizTalk 2006 Flat File Schema Wizard, probably noticed that record tag identifiers are handled differently for delimited and positional records. Let’s use a simple text file Person.txt for this example.
After opening Flat File Schema Wizard, skipping the Welcome Screen and entering required information on Flat File Schema Information screen we are […]
I was working with some InfoPath 2007 + MOSS 2007 + BizTalk Server 2006 R2 scenarios, and accidentally came across a possible problem with how InfoPath is managing namespaces for promoted columns.
Now I suspect the problem is actually “me”, since the scenario I’m outlining below seems to be too big of a problem otherwise. […]
When creating maps in BizTalk server, or generally creating XSLT transforms, you might run into a situation, as I did, that calls for you to generate a sequence number in your destination document. If the source document and destination have a similar repeating structure, you can always use the Iteration Functoid or the position() function to create a sequence based on the source tree. I recently ran into a situation where I needed to create a sequence number for the output records, but I was conditionally mapping the input records. For example, I had a structure like the following for my source:
<Invoices>
<Invoice>
<InvoiceDetail>
<SomeFlag>true</SomeFlag>
</InvoiceDetail>
<InvoiceDetail>
<SomeFlag>false</SomeFlag>
</InvoiceDetail>
</Invoice>
<Invoice>
<InvoiceDetail>
<SomeFlag>false</SomeFlag>
</InvoiceDetail>
<InvoiceDetail>
<SomeFlag>true</SomeFlag>
</InvoiceDetail>
</Invoice>
</Invoices>
In my output, I actually had a similar structure, but I was only creating output records for the items where the “someFlag” element was true. So in each case in the example, I’d only have one detail record for each invoice rather than two. In the first case, creating a sequence number based on the position() function or Iteration functoid would work just fine. However, in the second Invoice, my sequence would start with 2 since that is what the position() function would return. This really gets fun when you have multiple details and your sequence starts skipping positions. I was getting sequences like 1,4,10,13.
What I needed was a way to generate the number based on the destination tree, not the source; enter xsl:number. Using xsl:number you can provide a value and do some formatting, etc., but I was more interested in using it without submitting a value which causes a new number to be generated. If you look at the MSDN documentation for xsl:number you’ll see that you can specify more attributes to control how the number gets generated. Specifically the “count” and “from” attributes allow you to scope the generation of the numbers and where to start, respectively. These attributes allow you to generate the numbers as you want them in the output. A lot of the examples I found on the web were for formatting numbering in lists or table of contents formats to number things like 1.1 or 1.A. The “format” attribute really helps here, but I just wanted a raw number.
I added a scripting functoid to my map and set the type to inline XSLT. I then used the xsl:number like so (based on the sample document above).
<xsl:number count=”*[./s0:SomeFlag=’true’]” />
That got me all I needed. My sequence numbers in my output were only generated when an output detail was created and the sequences were unique to each invoice (i.e. they restarted for each invoice which is what I wanted). In my case I didn’t need to use any other controls on xsl:number but you might find that you need to further restrict it using the “from” attribute. I’d start simple and then work from there.
A couple of things to note. First, the XSLT expression that I have in the “count” attribute points to all elements where the SomeFlag is true. You may need to play around with this to get the right expression, just make sure you are referencing the right context (based on your XSLT) and filter the records appropriately. Also notice that I used a namespace prefix on the SomeFlag element. In the BizTalk mapper I needed to add this since BizTalk uses this prefix for the primary/first namespace of my source document. Without this prefix, I always got empty output, so watch for this in your own code and use the validation map functionality in BizTalk to view the XSLT and see what prefixes you might need. If you want to make sure things are working at a base level, then just use * for the “count” attribute and you should get a similar output as if you used the position() function. Then apply filters from there to get the results you want.
I couldn’t find anything to really help me figure this out without some work, so hopefully this will save someone some time (or maybe you are just better at searching the web than I am).
My development environment has become sluggish and error prone, so in an attempt to regain some productivity, I set about cleaning the various Hosts and Host Instances from the installation. Unfortunately, while attempting to delete a BizTalk Host through the Admin Console, I received the following error:
Cannot insert duplicate key row in object ‘dbo.InstancesSuspended’ with […]