Monday, September 21, 2009

Implementing Asynchronous AgilePart

Here is an example:- an asynchronous AgilePart calls an external web service (or any external service) for some data processing. The action for the data processing might take a few weeks. In this case, the resource for the process instance shall be swapped out from the memory of AgilePoint server for better performance.

i. In AgilePart code, set the Synchronous property to false (This is set to true by defalt).
public class MyAgilePartDescriptor : WFAgilePartDescriptor
{
public MyAgilePartDescriptor()
{
base.Synchronous = false;
}
}
ii. Pass the automatic work item ID when calling external service.
public void Method1(
WFProcessInstance pi,
WFAutomaticWorkItem w,
IWFAPI api,
NameValue[] parameters)
{
try
{
CallExternalService(w.WorkItemID);

if (w.Synchronous) MarkSuccess(api, pi, w, parameters);
}
catch (Exception ex)
{
HandleException(api, pi, w, parameters, ex);
}
}

iii. Once the AgilePart activity is exited, the status of the Automatic work item is set to “Waiting”. The process does not promote to the next activity.
iv. The external service that works with the asynchronous AgilePart shall call the CompleteProcedure function passing in the automatic work item ID (see example below) to notify AgilePoint server that the processing is completed, and AgilePoint Server set the status of this Automatic Work Item to “Completed” and promote the process instance to the next activity.

public void CallExternalService(string autoWorkItemID)
{
//....some processing codes here


IWFWorkflowService api = GetWorkflowService(); // refer to http://kb.ascentn.com/KB/KnowledgebaseArticle10020.aspx for details on getting workflow service object
api.CompleteProcedure(autoWorkItemID);

return;
}

Tuesday, July 7, 2009

Synchronous and Asynchronous AgilePart

In the constructor of AgilePart descriptor, the Synchronous property is set to true by default. This makes the AgilePart operates in synchronous basis, i.e. the process waits until the execution of the AgilePart finished before it promotes to the next activity. Also because of the AgilePart is running under a synchronous mode, the process is considered ‘active’ and the object remains in the memory, not being swap out for better server performance.

public class MyAgilePartDescriptor : WFAgilePartDescriptor
{
public MyAgilePartDescriptor()
{
base.Synchronous = true;
}
}


If your server always have high load, you may utilize the asynchronous capability of AgilePart. To implement this, just set the Synchronous property to false. The process still waits for the AgilePart to complete before promoting to the next activity, but the memory of the process instance object is swapped out from the memory, and hence releasing the resource for other server processing needs. Besides the asynchronous behavior, any other thing of an asynchronous AgilePart is the same as synchronous AgilePart, i.e. the way to debug an AgilePart, the logging behavior, credential used to run the AgilePart, deployment of the AgilePart, etc.

Tuesday, June 16, 2009

Product Overview

Although we would be putting up more “informal” kind of blogs here, which are focused more on individual topics and shorter in length, one can always find more detailed information on the official site at Ascentn.com.

So here is a more concise introductions of the product line in the AgilePoint suite…let’s start from a business user’s perspective.

Typically he would “Envision” and built a process model, deploy it to the “Server” and that’s it, it is up and running can be used in production. The IT admin may have already configure the user base or can do it very easily using “Enterprise Manager”; IT developers can also built and add more AgileShapes using the “Developer”.

See, how easy it’s to create a process and deploy it, just a couple of sentences :-) well, believe me it’s as easy as this when it comes to actual use of the product and even easier to implement and absorb the changes in production.

Let’s run through with an introduction to each of them below…

AgilePoint Envision

It is a Visio based modeling tool, which allows the business user to create process flows using AgilePoint shapes; the process can be executed as is once it is deployed on the AgilePoint Server.

Following are some of the highlights about Envision

  • AgilePoint shapes are similar to Visio shapes and can be very easily dragged from the stencils that are provided out of the box with Envision. They can be categorized into AgileParts & AgileWorks. Around 100+ are provided out of the box and more can be built using AgilePoint Developer.
  • It provides support for simulation of the processes.
  • The created processes can be very well integrated and used in the SharePoint deployment as well.
  • It can deploy the process to various environments like development, testing & production making the manageability easier for the user.
  • It uses integrated security and provides versioning which comes very handy in larger deployments when the number and versions of process start increasing.
  • The processes that are created are highly flexible when it comes to providing or consuming data to or from other components in the enterprise play, for e.g. web services, SharePoint deployments, FTP\file servers, BizTalk, Databases etc.
  • Like the individual AgileShapes, the processes can also be reused and can consume or in turn be consumed by other processes thus allowing process composition to be very easy. The information can be shared between the parent process and sub-process.

Envision

AgilePoint Server

Like any other system, the Server is the heart of AgilePoint and controls the whole system, it is an ASP.Net application. following are some of the highlights of the server

  • The process model deployed from Envision are published to the server and made available for consumption.
  • All the information flows in form of XML which makes it very easy to change a process model definition on the fly without effecting the running instances. 
  • The server can be integrated with Active Directory and can reuse the existing user base. The users can be further categorized into Groups\Roles and be given the appropriate access rights.
  • The server is highly scalable and can be easily installed over a Network Load Balancing environment.
  • The server provides the web services APIs for handling the Admin and the Workflow tasks which makes it very easy for virtually any client to interact with the server. In other words both the .Net as well as J2EE clients or any other framework understanding web services can communicate and interact with the server flawlessly.
  • This also makes it very easy to use any forms technology with the process.
  • The server uses caching at the various layers and has process hydration\dehydration up to an activity level which helps is using the memory and other resources very efficiently.

AgilePoint Enterprise Manager

Enterprise Manager forms the central dashboard to control and manage or monitor the various processes running in the system or for a particular implementation.

Following are some of the highlights of this wonderful tool

  • It’s a web based tool.
  • Helps in managing the operational activities like versioning, backups\restores, import\export etc for the various process models.
  • Allows monitoring the running instances, migrating them to the newer versions if required, dynamic rollbacks, partial rerun, workload balancing on the fly etc. Important point is all this happens without restarting the server.
  • Allows user management, synchronization with the Active Directory\SharePoint,  delegation of tasks etc.
  • Performance monitoring and error reporting so that proper action can be taken on issues demanding immediate attention.
  • Easy deployment across various environments.
  • One can try a particular task on a single instance of a process model for e.g. say while migrating from one version to another. Once the user is satisfied, scripts can be generated so that they can be applied to all the running instances.

Enterprise Manager

AgilePoint Developer

Although after installing Envision there are 100 AgileShapes that are installed along with it but still there might be a need for developing or extending the AgileShapes either to create a customized component or to enhance an existing functionality.

Like Envision Developer it is based on another Microsoft Product, Visual Studio so that the existing expertise can be leveraged here as well. Following are some of the highlights

  • AgileShapes can be divided into two types, AgileWork and AgilePart.
  • AgileWork is focused towards human interaction and comes into play wherever a human participation is possible.
  • AgilePart on the other hand is more focused on integration kind of scenarios, situation where the process needs some information from other system.
  • A third type of component called AgileConnector can also be built using the developer. It is used in a more generic sense and can be said of being implemented at the server level. This makes it reusable across more than one process models.

To summarize, we looked into how the various components of the suite help build the solution from different aspects keeping in mind the expertise of the various users involved. The result is that each user does what he is an expertise in and in the process the ROI is improved to a great extend.

The bullet points mentioned for each component is in no way a complete feature list and may be compared to the tip of an iceberg. More detailed information can be found at Ascentn.com. Also later in this blog itself we’ll put up detailed examples and articles addressing each of them explicitly.

Technorati Tags:

Saturday, June 13, 2009

How fast & agile are we?

Return on Investment – everybody wants it to be as high and as fast as possible. This is not something new; has been there since day one. What is new and is ever changing though, may be more demanding is a better term, is the rise in level of expectation of the users, be it business users or end users. Most of the time it’s a necessity rather than a luxury and is driven in turn by the very competitive nature of today’s world.

If one were to follow the evolution of the various software products\tools and the methodologies, it is clearly visible how those that were able to give rapid results or give ROI sooner survived and got more attention than those that were more time taking and kind of rigid. Oh no, I wouldn’t dare to start a religious discussion about which of them were better and which were not. Guess a better way to put this would be that each of them has their pros and cons and those that were able to adapt and more important “accommodate” the changing needs of business requirements gracefully, got an upper hand. The software development approach has moved from the traditional waterfall method to the more recent ones like Agile. The software being developed are more SOA based, component based rather than programs running in silo. The term Business Intelligence is a very common now and companies are pumping billions of dollars in it to get a better and wider offering around it. Business Process Management Systems are very much required today.

So why am I talking about all this here?

I just want to reiterate the well established fact that the business in today’s world is ever changing and in a very fast way and it expects the IT to give it a helping hand so that it run faster and always stay ahead of the competition. It wants the IT to embrace methodologies that help it blend in with the changes more sooner than ever. Gone are the days when the business would sit back and review as to what “went” wrong and how it “can” be fixed in the future. They want to fix it “right here” - “right now” and act in a more proactive rather than a reactive way. They also want to participate more in the overall play, even on the technical front and again not only in the form of “static” Visio process diagrams but in more direct and immediately productive ways.

Well, sounds interesting and good to hear, but the billion dollar question…HOW?

The answer doesn’t lie in this single blog post though…:-) well to be more precise, just wanted to set a background or platform for the coming posts… what the content would be focused on and what one could expect here.

The following blogs would be from a team of highly motivated and experienced architects who would be sharing their live experience and advice around the BPMS suite, AgilePoint from Ascentn (http://www.ascentn.com/). The discussion would also include the role of other important and related technologies like BI and how it can help find that combination to hit it right on the head.

To sum it, the highlights would be around

  • How to get the maximum ROI with existing investments
  • Topics of interest for both, the business and the IT users
  • How the Business and IT can work shoulder to shoulder and complement each other
  • How the business process can adapt to the every changing needs in an Agile and Fast way
  • How the business can be more proactive rather reactive while addressing issues

stay tuned for more…