Is Workflow Manager 1.0 Viable? - c#

The company I've been working on will develop a new project and in this project, Windows Workflow Foundation 4.5(we can't change it) will be used for process flow system which will be consumed by a web UI.
Our main use case is order payment which has multiple steps in UI and in every state transition, UI will notify workflow instance that if provided values are valid. If it is, it will persisted and so on. (like http://examples.donnywals.com/angular-splitform/)
It is designed as workflows will be hosted on IIS and every operation can be done about workflow(upload, delete, managing instances) should be accesible by a REST API. Also, workflow xaml files should be stored in database. Versioning, tracking and tracing and this kind of base operations should be supported too.
While searching about how to achieve this goals easily, I encountered Workflow Manager 1.0. I would like to use WF 1.0 but;
It lacks of documentation. For example, I don't know how to consume it's pre build REST API without WorkflowManagerClient and no documentation has provided. Where can I find good documentation about it?
Last update in WM 1.0 was provided in 2014 and it looks like no one is paying attention about it. Where can I find a roadmap?
It seems like no one is using Workflow Manager 1.0 without Sharepoint 2013. Has anyone been using it without SP 2013 and did you satisfied with the result?
I need to update previous versions of workflows instances to the latest if possible but I couldn't find a solution about this in WM 1.0. Only possible choise is terminating previous version's instances or previous version's instances is allowed to work in previous version of that workflow, not the latest. Hasn't it provided or only it's not documented?
Activities for WM 1.0(such as HttpSend, GetConfigurationValue etc.) which was accessible from Workflow Designer in Visual Studio 2012 is not supported in VS 2013 and VS 2015. We use VS 2015 and I don't think that we could use VS 2012, isn't there a way to use that WM 1.0 specific activities?
If I shouldn't be using WM 1.0, it seems like I can't use WorkflowServiceHost either because of AppFabric servers will not be supported after 2016. Is my only option is WorkflowApplication?
Every piece of information is welcomed, thank you.

we are using WFM without SP for a product the we are developing and deploying within Azure. What I can say is that you have to work a lot to target your needs with WFM, we are working on it from more than 2 years and still today we are facing problems to get results out from a wf! by the way I try to answer to your questions:
There is no documentation about consuming Rest Api without WFM Client; times ago I directly asked to WFM team without an answer...so we use the client...
There was an update this year ;) Cumulative Update 3
Yes, me!
It is possible to let previous version to run till their end. Next "start" request (both whit .Start or .PublishNotification methods) will start the new version
No way to use with version higher of VS2012...you need (like us) to build your own editor. There are a lot of examples like this
The reason why I choose WFM is that I didn't want to use WorkflowApplication and do everything by myself...that is (I think) the only option you have (of course WFM has also a lot of advantage other than "simple" persistence)
Hope to be helpful.

Related

Windows Workflow 4 Versioning

I've developed a framework for our organisation centered around the use of Windows Workflow 4 and have found issues when it comes to deploying patches to workflows in that any existing persisted workflows can't be correlated again if we deploy an updated version of the workflow used. Even if we just tweak internals between a ReceiveAndReply message without adjusting the contract it still orphans the persisted WF. There will be times where we want to have multiple versions of a single workflow in the event that a policy changes for all new cases, but existing ones follow the previous version.
So from what I've read Workflow 4.5 does exactly this stuff straight out of the box, but I'm this system runs on an accredited network and .NET 4.5 is currently not certified for use and therefore not an option in my case. I know that K2 Blackpearl has it's own versioning support for WF, although K2 isn't something we can introduce, so does anyone know of any other options to achieve quasi side by side versioning of workflows?
Using as close to out of the box .NET 4 components is preferable due to licencing and minimizing the need for further certification.
Thanks,
Steve

Make changes to c# program without loosing older code

I'm a hobbyist programmer and I've created an application for my office. Every so often I need to improve the code, add features or fix issues that come up under certain circumstances - I've found bugs or ineffective coding even after 3-4 months of heavy usage of the application. The thing is that whenever I modify the code, visual studio saves the changes. This means that if I want to use the program I'll have to be really fast in coding and debugging or it won't build - and I won't be able to use it...
Is there any way to keep the old version of the program without having to save the complete project folder elsewhere? Like creating a new version but keeping the option to go back to the old - working - one...
What you are looking for is called source control.
There are many systems out there, two popular ones are subversion and Git.
Used properly, you will have a full history of each file you have in your project.
There are two other answers here regarding source control at the time I write this, but there is another angle on this as well.
You're executing your production copy from the development directory. Don't do this.
When you have developed the program to a stable version, make a copy of it somewhere else and use that copy. In this way you're free to keep developing on the software without destroying your ability to keep using the existing stable version.
As for source control, you should definitely use that as well if you're not already doing it. It would, among other things, allow you to go back and hotfix the stable version with minor bugfixes while still doing major rewrites of the software, as well as the features others here have mentioned, full history of your project, "unlimited" undo, etc.
I'm not sure what you mean that Visual Studio saves the code when you modify it. It does by default save when you build, but I don't think it saves while you're typing.
Anyway, what you're looking for is called a source control system.
You can try Team Foundation Service from Microsoft.
It works fine and you can share youre project whit colleagues.
http://tfs.visualstudio.com/
EDIT:
This is a free of charge option you can use, until you want to share youre project with more than 4 persons!! than you have to pay for TFS
You need source control.
If your project is open source you can use codeplex, it's an open-source Website where engineers and computer scientists share projects and ideas. Its features include wiki pages, source control based on Mercurial, Team Foundation Server or Subversion (also powered by TFS), Git,discussion forums, issue tracking, project tagging, RSS support, statistics, and releases
If you don't want to share your code you can use Team Foundation Server

C# Workflow Engine - For the end user

All,
I am building a typical database driven helpdesk application.
I would like to enable the users to create workflows that will do the following types of tasks:
Add a new ticket (a set of records in the database) at a given time
of day, or date of the year, or a future date of some kind.
If the ticket has a specific type of metadata such as a category and priority combination, it should set up an office outlook task and email it to someone.
When the task gets updated, the task will update the next step in
this workflow based on the response of the task.
Etc…
I would use WFF, however in my case, I need to build the application that the end users will build the rules/workflows for, and the end users are average computer users.
Please give me some pointers, and some direction.
Bill
I think Nintex are trying to hit your problem on the head with thier Workflow2010 product.
You're able to host the Windows Workflow Foundation Designer within your application and give your users a custom set of activities.
By providing a custom set of activities you could ensure that users are able to use the designer with only a few workflow knowledge.
Another solution may be SharePoint. Microsoft SharePoint Foundation is shipped with every Windows Server 2008 R2. Older versions of Windows Server are shipping Windows SharePoint Services (Which is the free version of SharePoint 2007).
SharePoint is great in managing lists and listitems. SharePoint is built to make collaboration easier by using a great platform. The SharePoint platform itself allows you to run custom workflows based on items within lists.
So I think you should review your technical decision. And investigate a little more time in reviewing existing solutions that are achieving your requirements.
Thorsten
Consider having a look at Workflow Engine. It's a .NET component that enables you to update workflow steps with external commands/events, has timers, and, more importantly for you, a visual designer.

Creating a web service for a system built on nHibernate & stored procedures

I have been asked to build a rather simple form processor application that interacts with an already-existing system that is built on nhibernate & uses stored procedures to manage all the business logic in the system.
My goal is to build a (hopefully) simple web service (json if possible) that I will be able to access from both a web site, and ultimately an iphone & android app down the road.
I've built a couple fairly substantial RESTful api's using other technology (PHP, python, Redis, Mysql, etc) however aside from my basic understand of the overall syntax of C#, i'm pretty green to the whole ASP world. And frankly, the thought of doing anything drag and drop makes me want to stab rusty forks into my eyes ;)
My questions to those with C#/ASP/nHibernate experience:
I have visual C# express 2010 - do I need to purchase visual
studio to build this app?
Is it even possible to build a simple
JSON api/web service that can handle simple transactions (ie: return
a list of dates, and insert a single new entry) with C#? What tools do I need to get started down that path?
Does anyone have
any resources or recommendations for a crash course or high level
tutorial in C# web service construction?
I've done a fair bit of reading on nHibernate now, and feel i have a loose understanding of how the thing works, i'm just foggy on how to link a few simple classes/stored procedures with the actual web service.
My goal is to completely avoid re-inventing any wheels, and keep this thing as lean as possible... essentially, the web service is only there to pass data back and forth to the database.
Any help would be GREATLY appreciated - I know I can build this thing, I just can't seem to figure out where to start - if I could just sit down and code the thing, I would be fine... but it seems that with microsoft, you can't just sit down and code anything :S
EDIT: I'm working on Windows 7 Professional, I have downloaded nhibernate 3.2.0 and installed visual C# express 2010, I also have a windows 2008 server box with ASP.net 3.0 at my disposal for testing purposes.
EDIT 2: Which express package should I be downloading here? I have C# express, which seems to be the wrong one to start with - http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
EDIT 3: Thanks for the answers so far... currently downloading visual web developer and will dig into WCF and MVC a bit further.
No need to purchase VS. The license for VS Express allows for commercial applications to be built with it.
Yes, you can build a simple JSON api/web service - use ASP.NET-MVC, not webforms. I have done this a few times.
http://asp.net/mvc and for a working example of an MVC web site http://nerddinner.com
For web work, VS Web Developer Express is what you should be using.

How to properly update an existing application?

The application I'm working on is almost finished but we've come to a crossroads. At multiple times in the future, we'll have to update the application. We could easily just replace the application with the new version as well as the SQLite database, but at the same time we don't want to do that. Essentially, our application has three parts:
1. Application
2. Reports DLL (used by the Application)
3. SQLite database.
Our updates to the application are going to be less frequent than that of the Reports DLL and SQLite database. We may need to add a report, meaning we need to add records to the database and replace the DLL. However, I'm not finding an install package in Visual Studio 2008 that allows you to add logic to it (not sure one even exists). I could probably create my own but if there's something 90% built by Microsoft, I'd rather use that. So my simple questions are:
Can you add screens/logic to setup projects in Visual Studio 2008?
1a. If you can, does anyone have a good tutorial or link that I may be able to use? Thanks.
The reason we don't want to replace the DB is because there may be information in there that they are working on.
Yes you can normally add new dialogs to visual studio setups projects. Here's a tutorial from codeproject on how to do this.
As an advice you can migrate your setup packages to WIX, it's free, open source and a lot more flexible.
You can also handle the updates to the reports and database when the application starts.
So after an upgrade via the installer, the first time the application is run, it will update the database, add any new records etc.
Its often easier to add upgrade logic in the application rather than in the installer, and as it only needs to perform the upgrade once, it will not have a negative effect on your applications general startup time.

Categories

Resources