Jesus Rodriguez's WebLog

Microsoft MVP BizTalk Server Oracle ACE

  • RDB2RDF Incubator Group

    I am super excited to see W3C taking this initiative. There are lots of data exchange scenarios that are can be benefited from the use of RDF and undoubtedly designing the mechanisms for representing relational data as RDF graphs is a big step forward. ADO.NET Data Services (Astoria) already did some prototyping of a similar idea.

  • WCF stress testing using BizTalk Server LoadGen

    Stress testing is one of key aspects that developers should take into consideration in order to maximize the performance of Web Service deployments. Windows Communication Foundation (WCF) provides a very extensible framework for monitoring and configuring WCF Services performance profiles. However one key pieces of successful load testing is precisely to execute the correct tests and for that using the correct tools is fundamental. Load tests are typically based on relatively complex algorithms that encompass aspects such as thread management, memory, message throughput, etc. For instance, a typical Web Service test might include sending a thousand messages per second to a Web Service using five threads until the consumed memory hits 1GB. Such algorithms require a detailed knowledge of the Web Service technology as well as the operating system being used.

  • Oracle SOA Suite 11g

    I've playing around with the new preview of Oracle SOA Suite. Among the new features, Business Events is the most attractive to me and it can be considered Oracle's first iteration towards a complete Complex Event Processing platform based on different technologies of the SOA Suite. Additionally, the implementation of Service Component Architecture (SCA) as part of the SOA Composite Editor is definitely interesting although I am still not convinced of its applicability on Enterprise scenarios.

  • RESTful services description languages

    Steve Vinoski posted an interesting reflection about the use of description languages on RESTful services. I have to agree 200% with Steve, WSDL and 1.1 and simply horrendous. Although WSDL 2.0 drastically improves in the modeling aspects of the services it does not solve one of the fundamental problems of its predecessors which tightly couple web Services with RPC and object oriented models. This gets even worse when you are working with ESBs or Integration Servers that are highly dependent on WSDL, sometimes you get the impression you are writing a big object oriented programL.  However, I still think that some sort of description language is really beneficial in a lot of scenarios such as service-endpoint discovery, policy description, service management and versioning. On those scenarios, the use of languages such as RDF, WADL, Atom or even tools such as Power Point or Excel can provide a better and more flexible solution than WSDL.

  • Cleaning up BAM Activity Instances

    One of the main challenges of Business Activity Monitoring(BAM) solutions is the control the lifecycle of the activities. This is especially critical in scenarios that involve activity continuations between different applications. Far too many times activities don't get completed affecting important BAM components such as aggregations, KPIs, etc. More importantly, keeping incomplete activities stored in the "ActivityName"_Active tables in the BAMPrimaryImport database can tremendously affect the performance of BizTalk BAM solutions. As part of the BizTalk server SDK we can find a SQL Server stored procedure that moves the incomplete activities from the Active tables to a new set of tables, the essence of this stored procedure is to add the incomplete state to the BAM Activity lifecycle creating a new table per BAM activity as well as its continuations and relationships. This stored procedure recycles individual activities and keeps the incomplete tables in the BAMPrimaryImport database. Although this approach works great, for a lot of scenarios makes sense to move the incomplete activities directly to the BAMArchive database keeping the BAMPrimaryImport database for storing live data. We can accomplish that with a few slight modifications to the same stored procedure highlighted in the following code. This stored procedure is intended to run in the BAMArchive database but it will poll the data from the BAMPrimaryImport database (notice the database prefix in some of the queries)