R – Workflow – choosing the appropriate host environment

wcfworkflowworkflow-foundation

The application that I'm designing will retrieve and store content from a variety of disparate sources on a schedule. In some cases, the content will be retrieved based on a time interval (think stock quotes), and in other cases the content will be retrieved based on a custom schedule (MWF @ 2pm). Many of the processes lend themselves to MS Workflow. The built-in SQL tracking service will provide a lot of value. The content sources are sufficiently different that each different type of content retrieval will be a custom workflow.

My question is, how should I host, monitor,schedule, and expose the Workflows?

Requirements:

  • Must be able to monitor the health of each content "agent" via admin UI
  • Must be able to start and stop individual workflows via admin UI
  • Workflows are recurring based on a schedule, but not necessarily "long-running"
  • "Service" must have high availability

Windows service, Workflow Service, ASP.Net, WCF are all available to me, and I'm open to other suggestions as well.

Best Answer

WF and WCF can be hosted as one WindowsService,

You can create a set of services to expose the state/information from the Workflow in WindowsService via WCF web service. Therefore the WCF service should have a reference to your workflow exchange contract ( somehow can reference to workflow engine to deliver the request info from client UI).

  • Must be able to monitor the health of each content "agent" via admin UI

The Admin UI can retrieve the data from the webservice which

  • Must be able to start and stop individual workflows via admin UI

Let the workflow instance to handle a specific event to start or stop

  • Workflows are recurring based on a schedule, but not necessarily "long-running"

Let the workflow instance to handle a specific event to do so

  • "Service" must have high availability

WindowsService is daemon alike application, it runs forever if it doesn't crash