This post was originally published here

In the last period I worked in some new GrabCaster features like the encoding and extensibilities and about the extensibilities I implemented the possibilities to use a chain of components inside the engine.
Some people confuse the meaning of chain with the concept of pipeline but they are very different, a pipeline, as the name quote, is a pipe + line, a number of blocks executed in a sequence and a pipeline has a starting and an ending.
I like to compare the meaning using the real objects, a pipe cannot be closed otherwise the liquid stop flowing, the liquid enters in to the pipe end it come out from the end.

Interesting the idea to connect different pipelines in sequence but I see a lot more potential in the chain pattern.

A chain does not contain a real concept of starting and ending and can be closed and also executed in cycle.

Different chains can be opened and hooked together to create a longer chain and so on, I really love this concept because it gives me the opportunity to extend the capabilities in many ways and combinations.

A GrabCaster chain is composed by components and triggers and events can execute chains.
A chain component is a generic Interface able to ingest data, manage it and share the result with the other components in the chain.

I’m very interesting to provide more powerful options in BizTalk Server, BizTalk is a great framework and I like the idea to provide to it more interesting options and extensibility.

For that reason the first chain components I have implemented are the BizTalk pipeline component and the BizTalk transform component.
The BizTalk pipeline component executes a BizTalk pipeline DLL component and the BizTalk transform component is able to execute a BizTalk map and using a DLL like a Map storage provider, this is very powerful because it gives me the opportunity to use the BizTalk Server artefacts inside GrabCaster and use the same BizTalk features in real time performances, thousands messages a second using BizTalk Pipelines and BizTalk Transformations, I will write another post very soon about that.
The other interesting thing is the opportunity to execute GrabCaster inside BizTalk using the GrabCaster BizTalk Adapter which uses the chains as well.

To configure a chain, I use a json configuration file as below

In this pipeline I execute two chain components, the BizTalk pipeline and the BizTalk Transform.

I use a json file to configure the BizTalk pipeline component as below


AssemblyFile is the Dll component containing the BizTalk pipeline
PipelineTypeName is the pipeline type name to use
PipelinePathFile is the BizTalk pipeline file

I use a json file to configure the BizTalk transform component as below


AssemblyFile is the Dll component containing the BizTalk pipeline
TransformTypeName is the transform type name to use

To assign a chain to a Trigger or event I add the chain specification to the Trigger json configuration file as below

I can use the chains in Triggers and Events and I can connect chains to other chains together.

In this test I imported the flat file as below

serialized as xml using the BizTalk pipeline and transform it as below

I will write a lot more about that in the next posts, for more information about GrabCaster you can refer here

Please contact me for any more information or if you want to collaborate inside the project.