Monday, June 25, 2012

Visio Services 2010: How to create relative links

Unfortunately relative links in Visio Services 2010 don't work. You press on the shape, but nothing happens. For most projects using absolute links is no alternative.
So what we do instead is to subscribe an event with the Visio api, read the (relative) URL and do a javascript redirect. Don't be afraid if you are not an experienced developer, with this code snippets it should be just copy and pasting.

Sunday, June 24, 2012

.NET Framework options in K2 for Visual Studio 2010

K2 for Visual Studio 2010 is able to build Workflow processes utilizing the .NET Framework 3.5 as well as 4.0. There are a few considerations which are important of how K2 integrates with the .NET Frameworks 3.5 and 4.0

Depending on the toolset that you use to create your workflows the following rules will apply. Keep that in mind before you start building your worklfows

.NET 3.5 Framework
.NET 4.0 Framework
Visual Studio 2010
Visual Studio 2010
K2 Studio

K2 Designer for SharePoint

  • Existing and new projects in K2 for Visual Studio 2010 will be able to use .NET 4.0
  • To make use of the .NET 4.0 Framework the K2 Server will have to be updated by adding the following key to the appSettings node of the K2HostServer.config
    <add key="netfxversion" value="v4.0.30319" />
  • Wizards using Workflow (WF) currently only supports .NET Framework 3 or 3.5

K2 4.6.1 is now available

K2 released version 4.6.1 for K2 Blackpearl and K2 Blackpoint.

This  release is the first update for K2 4.6, which brought a single database for new installations and changes to the documentation.

Included in the 4.6.1 update is support for SQL 2012 Reporting Services, and, for K2 blackpearl, support for Oracle database integration via SmartObjects.

Also included in the update are a number of performance and stability enhancements. For further information please refer to the K2 website.

Thursday, June 21, 2012

Nintex Workflows: Good To Know(3) – Workflow Complexity

In a recent project I was confronted with an issue when I tried to publish a workflow with lots of UDAs in it. It was driving me crazy and at first I couldn't figure out what the issue really was.
After a few conversations with the Nintex Support Team (thank god, they are just downstairs ;) ) and looking into the SharePoint log files we found the error. A search in Google quickly revealed what the problem and the potential solutions are.
I blogged about this on my other blog, ProjectPoint, so please refer to the post "Nintex Workflow 2010 – Workflow not Publishing" for a description of the problem, the cause and potential solutions.

Friday, June 8, 2012

Nintex Workflows: Good to know(2) - User Context

If you want to get your permissions right, you have to know under which user context a workflow runs.
Basically that user is always the one who started the workflow. Not the one who designed the workflow or who last interacted with the workflow (e.g. the approver)!
As you may have noticed, this post is longer than 3 lines, so there are exceptions to this rule.

Exception 1 - The designer selects custom credentials for an activity
While designing your workflow you have to select custom credentials for some activities to use. For example a web service call.
Of course we don't want to allow every user who starts the workflow to have access to every LOB system.

Other actions e.g. "Create List" run in the workflow initiators context by default, but you can optionally choose different credentials. This is a great feature and helps a lot to limit your users permissions.

Exception 2 - Some activities run with higher privileges by default
What?!? Please, explain:
One of SharePoints default group is the member group, which allows users to start workflows and to edit items. But they are not allowed to manage permissions - we don't want every editor to mess up our security concept.
Unfortunately that is often a requirement.
Think of a workflow that starts with a form to be filled out by any user and is submitted for approval. (Could be any form in your company). After the manager approval we don't want the document to be modified anymore.
So we build this workflow, initiate it as a normal user and it works! No access denied happened!
Manage Permissions is a Nintex activity (in Nintex there are SharePoint Designer and Nintex activities) and it is designed to run with elevated privileges by default.
Unfortunately I don't have a complete list of all those activities. If anybody got a list of those activities please mail them!

Exception 3 - Run with designer credentials.
Some activities allow you to select the workflow designer as the executing user. This is also a SharePoint Designer feature. I have to say, that I am not a big fan of this, because it might easily get you in trouble.
It is exposed to the UI through a checkbox, which can be found in many actions. It might be of special interest in the "Action set" activity.

What about scheduled workflows?
They run as the user who last created/modified the schedule.

Attention: Please note that we are talking about Nintex Workflows 2010. Please refer to this document for differences between NW2007 and NW2010.

Monday, June 4, 2012

Nintex Workflows: Good to know(1) - Dehydrating

After years of working with and teaching Nintex Workflows I made a list of important things that are not obvious, but serious Nintex designers should know. So here it is: A series of "Good to know" things about Nintex.

To start with I would like to write about Dehydrating!
Have you ever experienced the following:
You want to pause your workflow for 5 minutes, but instead it pauses longer than expected, maybe 7 or 10 minutes!
The workflow doesn't continue after a pause for action!

I made a simple workflow:
So it is not doing anything, but waiting for 5 minutes and writing a history entry.
More than 5 minutes later we look at the history:
Where is the custom log entry?

10 minutes later, but nothing happened!
When we use a activity like "Pause for" the workflow is dehydrating. Which means that it is going to sleep. It is no more stored in process memory, but in the database.
So how do we get it back running?

We go to Central Administration - Monitoring - Review job definitions and we search for the timer job called "Workflow". For this demo I disabled it. So now I am going to run it.
It will search for dehydrated workflows and. if required, start them.

Here we go!
The default value for the timer job is to start every 5 minutes. So that would mean, if we pause our workflow for 5 minutes that could be 10 minutes in the worst case.

That's it!

Please leave a comment if you have further questions.