How to Debug Workflow With Workflow Manager 1.0 and Visual Studio 2012

Developing workflows are more interesting with Visual Studio 2012, WF 4.5 and Workflow Manger 1.0 .The method of debugging the workflow with the Workflow Manager is different from using other workflow hosting approaches. As a first step you need to install the Workflow Manager tool for Visual Studio, you could read more about the installation from this blog http://www.c-sharpcorner.com/Blogs/11432/workflow-manager-tools-1-0-for-visual-studio-2012.aspx.

To debug a workflow you need to first create a workflow using Visual Studio.  For example I have created a workflow as in the following in Visual Studio. This is a sequential workflow with two custom activities.

Workflow1.jpg
 

For example a Visual Studio project structure looks as in the following with a console application, class library and activity library.

Workflow2.jpg

My next step is to build my project and copy the Activity Library DLL to the folder "C:\Program Files (x86)\Workflow Manager Tools\1.0" where the Microsoft.Workflow.TestServiceHost exe resides.

This step is required only if you are debugging, otherwise copy to the following locations: "C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin", "C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts".

Create a XML file call "AllowedTypes.xml" and specify the type as trusted type (You can learn more in Workflow Manager Trusted Surface).

<AllowedTypes>
  <
Assembly Name="SampleActivityLibrary">
    <
Namespace Name="SampleActivityLibrary">
      <
Type>EventLogActivity</Type>
    </
Namespace>
  </
Assembly>
</
AllowedTypes>

Copy the file to the folder "C:\Program Files (x86)\Workflow Manager Tools\1.0".

Open up a command prompt and go to the folder "C:\Program Files (x86)\Workflow Manager Tools\1.0" and run the Microsoft.Workflow.TestServiceHost exe.

Workflow3.jpg

Note the port it is listening to in "Listening at http://Myserver:12292".

Go to Visual Studio and place a breakpoint in the workflow designer using the
following:

  1. Open the workflow XAML in designer
  2. Click on the activity you want to debug

    Workflow4.jpg
     
  3. Click on the right button in the mouse to open the context menu

    Workflow5.jpg
     
  4. If you want insert a code breakpoint then insert it

    Workflow6.jpg
     
  5. Set the scope URI in the code to the URL in which Microsoft.Workflow.TestServiceHost exe is listening

    var rootClient = new WorkflowManagementClient(new Uri("http://Myserver:12292"));
     
  6. Go to the debug menu and attach the process

    Workflow7.jpg
     
  7. Select Microsoft.Workflow.TestServiceHost exe from the process list.

    Workflow8.jpg
     
  8. Run the Console Program in debug mode

    Workflow9.jpg
     
  9. You will see the designer breakpoint is hit

    Workflow10.jpg
     
  10. You can also step into code the breakpoint

    Workflow11.jpg
     

You can also look at the database table in the WFInstanceManagementDB

Workflow12.jpg

In case of failure in the startup of an instance due to an exception you can check the preceding highlighted tables.

SELECT TOP 1000 [InstanceCounter]

      ,[InstanceId]

      ,[SessionId]

      ,[ScopeId]

      ,[WorkflowName]

      ,[WorkflowId]

      ,[MonitoringParameter]

      ,[ActivationInfo]

      ,[WorkflowStatus]

      ,[WorkflowStatusDetails]

      ,[InstanceCreated]

      ,[LastModified]

      ,[SequenceNumber]

      ,[Expiration]

      ,[ExecutionTime]

      ,[DatabaseWriteTime]

  FROM [WFInstanceManagementDB].[dbo].[Instances]

Workflow13.jpg

Example

InstanceCounter               InstanceId           SessionId             ScopeId WorkflowName WorkflowId               MonitoringParameter     ActivationInfo    WorkflowStatus WorkflowStatusDetails               InstanceCreated               LastModified      SequenceNumber             Expiration               ExecutionTime   DatabaseWriteTime

32           820EF89C-4EA4-433A-98D6-A2ABBC8BED02         149e84ef-1fb8-5b56-a85c-ad951c2f8c40_570bc95a-843d-4665-bed1-6eca3837c6d3               434A6F9A-8D93-41A5-C29D-ED69F3A9439C  DebugSample     62E4B6D5-149E-4D91-94BC-0D38CDAC47AF         NULL     NULL               SystemSuspended             An unhandled exception occurred during the execution of the workflow instance. Exception details: System.ArgumentNullException: Value cannot be null.  Parameter name: bookmark     at System.Activities.NativeActivityContext.ResumeBookmark(Bookmark bookmark, Object value)     at CustomActivitiesSample.BookmarkActivity.Execute(NativeActivityContext context)     at System.Activities.NativeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)     at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)              2013-04-17 20:53:46.650      2013-04-17 20:53:46.650              1             NULL     2013-04-17 20:53:46.980               2013-04-17 20:53:47.060

X

Build smarter apps with Machine Learning, Bots, Cognitive Services - Start free.

Start Learning Now