Setting permissions on a workflow
The following example shows how to assign Administer and Start permissions on a specific workflow for a particular user.
This sample code requires references to the assemblies:
- SourceCode.HostClientAPI
- SourceCode.Workflow.Management
Assign Administer and Start permissions
//TODO: build a connection string with the SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder
SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder connectionString = new SCConnectionStringBuilder();
connectionString.Host = "[k2servername]";
WorkflowManagementServer workflowServer = new WorkflowManagementServer();
try {
workflowServer.CreateConnection();
workflowServer.Connection.Open(connectionString.ToString());
// Create instances of the Permissions and ProcSetPermissions class
SourceCode.Workflow.Management.Permissions permissions = new Permissions();
SourceCode.Workflow.Management.ProcSetPermissions procPermissions = new ProcSetPermissions();
//the user we want to assign permissions for
string userName = @"[label}:[domain]\[username]";
//Set up the process permissions for a specific process definition (ProcSetId)
procPermissions.ProcSetID = 1;
procPermissions.UserName = userName;
//set permissions
procPermissions.Admin = true;
procPermissions.Start = true;
procPermissions.View = false;
procPermissions.ViewPart = false;
procPermissions.ServerEvent = false;
// Add the ProcSetPermissions object to the Permissions object
// you can add multiple ProcSetPermissions to the same Permissions object, if needed
permissions.Add(procPermissions);
// Update the permissions for a user
bool updated = workflowServer.UpdateUserPermissions(userName, permissions);
// or, update the permissions for a process definition
bool updated1 = workflowServer.UpdateProcPermissions(1, permissions);
// or, update or add permissions
bool updated2 = workflowServer.UpdateOrAddProcUserPermissions(1, permissions);
} catch(Exception ex) {
//do something with the error
} finally {
//always close the connection
workflowServer.Connection.Close();
}