C# Workflow Engine - For the end user - c#

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.

Related

Connect Multiple Microsoft Visual Studio to same projects

Me and my couple of friends will start working on a C# database project. We will use Microsoft VS 2015 and SQL Server 2014. Is there any way that our Visual Studio (installed on separate laptop) can connect to the same project?
For example, if one of my friends removes a class from the project, that class should also be removed from our project. Also, if he adds something, that change should also be shown on our VS solution.
If you have db project in Visual studio you should connect it to some version control. After that every change done by your friends will be fetch/pull on your local machine and you will execute the db project. Same is for code changes in your main project. Read about svn and git and choose what is better for you.
Git is a free and open source distributed version control system
designed to handle everything from small to very large projects with
speed and efficiency.
Getting your project on GitHub
Subversion is a free/open source version control system (VCS). That
is, Subversion manages files and directories, and the changes made to
them, over time. This allows you to recover older versions of your
data or examine the history of how your data changed. In this regard,
many people think of a version control system as a sort of “time
machine.”
Subversion can operate across networks, which allows it to be used by
people on different computers. At some level, the ability for various
people to modify and manage the same set of data from their respective
locations fosters collaboration. Progress can occur more quickly
without a single conduit through which all modifications must occur.
And because the work is versioned, you need not fear that quality is
the trade-off for losing that conduit—if some incorrect change is made
to the data, just undo that change.
Some version control systems are also software configuration
management (SCM) systems. These systems are specifically tailored to
manage trees of source code and have many features that are specific
to software development—such as natively understanding programming
languages, or supplying tools for building software. Subversion,
however, is not one of these systems. It is a general system that can
be used to manage any collection of files. For you, those files might
be source code—for others, anything from grocery shopping lists to
digital video mixdowns and beyond.
Importing Data Into A Repository SVN
If you are not aware with git/svn I advise you to use SVN it is easy to understand. Git has his advantages when your team is really big and for open source. Currently on this moment git is the "future" in version controls.
Team Foundation
You can use Team Foundation Version Control (TFVC) to scale from small
to large projects, and by using server workspaces, you can scale up to
very large codebases with millions of files per branch and large
binary files. TFVC is a centralized version control system that lets
you apply granular permissions and restrict access down to a file
level. Because your team checks in all their work into your Team
Foundation server, you can easily audit changes and identify which
user checked in a changeset. By using compare and annotate you can
identify the exact changes that they made.
https://www.visualstudio.com/tfs/
GitLab
GitLab Inc. is a company based on the GitLab open-source project.
GitLab is an application to code, test, and deploy code together. It
provides Git repository management with fine grained access controls,
code reviews, issue tracking, activity feeds, wikis, and continuous
integration.
https://about.gitlab.com/
Bitbucket
Bitbucket is a web-based hosting service for projects that use either
the Mercurial (since launch) or Git (since October 2011) revision
control systems. Bitbucket offers both commercial plans and free
accounts. It offers free accounts with an unlimited number of private
repositories (which can have up to five users in the case of free
accounts) as of September 2010, but by inviting three users to join
Bitbucket, three more users can be added, for eight users in total.
Bitbucket is written in Python using the Django web framework.
https://www.atlassian.com/software/bitbucket

Is Workflow Manager 1.0 Viable?

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.

Is it Possible to use Visual Studio/C# to develop for SharePoint 2007 without Deploying DLL to Hive

If a customer does not allow installation of a .dll into their SharePoint 2007 hive (or the GAC), is there any way to create webparts, etc. with Visual Studio that will not require deployment of the .dll(s) into the hive (or the GAC)? If not, is there another way to use Visual Studio and/or C# with the SharePoint namespace functionality in a similar fashion even if not quite in the standard way? This customer isn't going to allow us to install anything on the box beyond the pages and, if not into the GAC or hive, SharePoint-related .dlls developed by us.
Note: there are some specific project details at the end of the post.
Final Summary of Accepted Answer:
No answer was forthcoming with an alternative method of deploying custom SharePoint assemblies (e.g. not GAC and not hive).
It is possible, however, to use C# embedded in a page, and you may reference the SharePoint assembly and use it in the code. (see accepted answer for details)
Many of the things that I had expected would need custom code do not seem to, nor does it seem that in many cases it would even be possible/beneficial to do so.
I have a few basic ideas on how it might work ("magic happens"), but, being firmly in the "don't know what I don't know" quadrant right now, I don't know if it can be done, and I don't know whether any possible alternative route would even gain anything beyond just developing directly in SharePoint Designer sans C#/Visual Studio altogether.
ideas:
Develop with Visual Studio as normal, using WSPBuilder or a stock SharePoint project, but instead of normal deployment, installing the .dll(s) in a non-hive location on the machine, and then somehow including the items as an external resource.
Create a self-hosting web service that somehow can be called serve up components that can be incorporated into the SharePoint site.
Develop separate web pages/web controls in a non-SharePoint web project, then including them somehow into the SharePoint site; or, somehow creating a reference to them in the IIS directories
Develop seperate web pages/web controls in a WebApplication and using the Hostable WebCore to deliver what is needed, and, of course, somehow including the served up pages into SharePoint.
And, my final concern is that even should I figure out the details on the "magic happens" steps, I still would really not have gotten what I want, which is to be able to use the functionality of the SharePoint namespace in a useful way, e.g. connected to the site we are developing, and with sufficient access to do what we need without jumping through too many hoops, either from a developer perspective (e.g. code that's hard to use or maintain), or a bad user experience (e.g. user repeatedly getting login prompts).
(My apologies if the answer is obvious; I'm brand new to SharePoint development, and I'm only experienced with high-level Web development (e.g. fairly simple .ascx/.aspx, and mostly using the designer for pages), so I'm having to get my bearings quickly. When I search for help with the 'obvious' search terms, I get an overwhelming amount of information for normal scenarios, but have not found an answer for this.)
Upon request, here are the details that I can give about the particular project. I currently have information on only a piece of it, and it's a long-term project with a lot of pieces that will build on one another. So, unfortunately, if the solution isn't fairly generic, I will probably have to go the SharePoint Designer route to avoid the risk associated with relying on a method which may not be compatible with pieces that come down the road. Also, I apologize for how generic these are; I am trying to provide a list of capabilities needed as opposed to detailing the actual project.
ability to have individual user site home-pages that allow them to view various bits of information about projects they own and projects they are involved in
ability to have site templates that store wizard-type steps to be followed by users
ability to link the wizard templates to various documents and possibly other things associated with the various steps
ability to store various associated roles and attributes (such as how much time is allowed for a task to be completed) with the items in the templates
ability for a user to use the wizard to create instances of the site items and allow or enforce the assignment of other users based on the template attributes
ability for some roles associated with an item to edit the document and save it back, and to restrict others from editing them
ability for users other than the creator of the project (probably based on a project role assigned by the user) to view all info (timelines, etc.) and edit all documents in the project
ability for the associated users that have roles assigned to mark off when they are complete with their portion of the task
ability to calculate timelines based on info from the attributes for the different items in the project
ability to notify users (via email and site homepage notifications) in roles that have to take action or are marked as needing to received updates on one or more project items
ability to lock down project items from modification once a step has been completed; and possibly to unlock and/or retract steps
ability to automatically create reports and send them to appropriate locations (probably e-mail, but also possibly an administration page on the site, or to another site entirely.)
ability to mark completed projects and archive them in a separate section only viewable by certain windows groups or groups defined on-site
I also know that there is an intent to greatly increase the scope of this project once we complete the first part to the customer's customer's satisfaction. I am trying to find out more information and will post here if/when that is available.
I realize that some of what's there might really have nothing to do with SharePoint in particular, and some of it may not really give enough information to tell you which feature or other it will need. I am happy to clarify anything that doesn't make sense, but I wanted to try to give a little detail as someone else may have a lot better idea of what SharePoint pieces would be necessary or possible to use than I.
If you can at all wing it, you should see if it would be possible for an upgrade from sharepoint 2007 to 2010 to be made, because many of the problems you are describing are made a whole lot easier to solve in 2010.
Something that would really help me develop a more thorough answer is a very brief description of what functionality you are attempting to achieve.
OK, Thanks for the update.
I will try my best to address all the points of the project.
Your first point is easily available using something called a Mysite.
For all the points where you are discussing wizard templates that can store documents and associated data, you might want to look into Microsoft Infopath, no guarantee that it'll be a perfect match, but take a look and decide.
The great part about infopath is that when you combine it with Sharepoint Workflows, you can set rules for doing things, and different views, this will allow you to assign roles associated with editing privileges and such on documents.
Again, since infopath has the ability to easily submit to a sharepoint list or document library, any data based calculations are as easy as selecting which data you want, and what you want to do with it.
For the notifications, sharepoint workflows in microsoft sharepoint designer allow easy email creation.
As far as your last bullet point goes, this is another workflow, and the ability to make sites viewable to only certain groups is a basic functionality of sharepoint.
These are all available in SP 2007, but honestly, it would be financially more responsible as far as the difficulty and length of the project to use SP 2010. Also, the transition process is smooth and you don't really lose anything, just gain. From what you've said though, this might not be possible, which is a shame, but good luck either way!
This part should help you out with the C# pages, here is a basic hello world page.
<%# Page Language="C#" %>
<script runat="server">
public void Page_Load(object sender, EventArgs e){
Response.Write("<h1>Hello World!</h1>");
}
</script>
I normally code this in sharepoint designer. Also, say if you need to work with Microsoft.SharePoint.dll, provided on the server, you could add this line: <%# Import Namespace="Microsoft.Sharepoint" %>, since it is a page on the server, you don't need to specifically link it in any way, just that one little line after the page language declaration. Hope this clears everything up!
An option would be to deploy code to the BIN directory instead of the GAC.
The BIN directory runs with minimal trust. However, some things can't be deployed here (like event receivers).
See also, How to deploy a SharePoint web part to bin.
We have a solution which employs IronPython scripts. There's a IronPython web console, generic IronPython event receiver, page, workflow, timerjob, library of scripts which can also be edited through web interface, and a list with necessary configurations. I'm hoping to opensource the core of it at some point, but the full version can do a lot more.
The point is we don't need to do redeploys for every single little thing that needs to be added or changed for each particular customer. Particularly with workflows - we can do small changes without breaking everything that's currently running.

ASP.NET Completely modular design - how?

Technology: ASP.NET 4.0, C#, forms/mvc
I am a .NET web designer and I wish to create a modular based website for people, similar to what DNN does (but I want to create my own cut down version).
The idea is that I create a base website that can 'activate' features which the client needs (and has paid for). These features may be used by many clients which require frequent future updates for all clients (so I wish to keep upgrade time down to a minimum).
For example, I upload the base web application using web deploy and it sets up the core database tables/views/SPs in the process.
Then I login into the website as developer and activate the out of the box features that I wish to permit the user to take advantage of.
The only way I can think of currently is via user control, resources etc..
But I need a little of your experience and advice over what the possibilities / dangers are....
e.g. images for an application e.g. blog, that I have activated for a client - how do I reference those images
e.g. Can user controls be dynamically added to a web application (which is pre-compiled unlike a website - it must be a web application since I am using web deploy).
e.g. Modification of web.config to add additional routing (doesn't matter if app has to go down to do this).
The idea is that I can upgrade websites features en-mass, rather than manually enhancing each individual website which given a certain amount of clients would result in an awful amount of time lost.
I do not have access to sharepoint (nor do I intend to).
Any advice on how to automate modularity completely via a front end in asp.net would be superb!
My main problem is how to reference files and resources outside of the websites directory and without using virtual directories (ideally - but open to suggestions).
Thanks,
Dan.
I would suggest that your idea sounds like an ideal scenario for WebParts. There are lots of resources on how to go about building a WebPart management structure from scratch. Then, in terms of your 'bulk update' facility, it would simply be a case of tweaking database entries that are used to configure which web parts a user sees.
I'd be interested to know what you decide to do.
Best
Ian
Try a Multi-Tenancy Architecture as you can find some good info here :
http://codeofrob.com/category/10.aspx
http://weblogs.asp.net/zowens/search.aspx?q=Multi-tenant+ASP.NET+MVC+%E2%80%93&o=Relevance

Can we buy Collaboration functionality for ASP.NET?

We are working on a unique eCommerce site. This site is distinctive because when a purchase is made its not made by one person, but a group or "Collaborative" decisions. Individuals can add items to the shopping cart, but in the end the purchase is decided by the group in a “Collaborative” effort or Team Effort. So each team member is given tasks, inter-team messaging, can rate functionality with surveys, set milestones, rank specific features that are important to them. Another big part is that many aspects of the site allow for comments from members of the group. So many of the items in the application are “comment able” by the team. Is there anything we can buy (C#/ASP.NET/MVC) that gives us this functionality. Comment, Task, Survey, Rating, Messaging, Ranking Collaboration engine?
A lot of the features you mention are available in Microsoft's SharePoint 2010 platform - this software is intended exactly for the type of collaborative scenarios you describe including surveys, tagging, workflow, alerts, etc.
There are two versions of the product: SharePoint Foundation and SharePoint Server. The Foundation product is free and contains many of the basic collaboration and workflow features. The Server product contains much more - too much to list here - but is not free.
The 2010 product is built on ASP.Net 3.5. You can build both public-facing and intranet sites using SharePoint as the underlying platform. Also, SharePoint has many extensibility options, so if the off-the-shelf product does not contain a feature that maps to your particular requirements, you may be able to write custom code to extend it.
As a starting point, I would suggest you check out the features on the Microsoft SharePoint product page.

Categories

Resources