Пример #1
0
        public void UpdateProcessPermissions(string userName)
        {
            // Create instance of the Permissions and ProcSetPermissions class
            Permissions        permissions     = new Permissions();
            ProcSetPermissions procPermissions = new ProcSetPermissions();

            // Set the required permission properties
            procPermissions.ProcSetID   = 1;
            procPermissions.UserName    = userName;
            procPermissions.Admin       = true;
            procPermissions.Start       = true;
            procPermissions.View        = false;
            procPermissions.ViewPart    = false;
            procPermissions.ServerEvent = false;

            // Add the ProcSetPermissions object to the Permissions object
            permissions.Add(procPermissions);

            // Multiple permissions can also be added
            // for other process sets
            ProcSetPermissions procPerms2 = new ProcSetPermissions();

            procPerms2.ProcSetID   = 2;
            procPerms2.UserName    = userName;
            procPerms2.Admin       = true;
            procPerms2.Start       = true;
            procPerms2.View        = false;
            procPerms2.ViewPart    = false;
            procPerms2.ServerEvent = false;

            permissions.Add(procPerms2);

            // Update the permissions
            bool updated = ManagementServer.UpdateUserPermissions(userName, permissions);
        }
        //sample that shows how to set workflow permissions
        //in this sample, we are giving a dummy user account rights to a dummy process
        public void SetWorkflowPermissions()
        {
            //establish the connection
            WorkflowManagementServer K2Mgmt = new WorkflowManagementServer();

            K2Mgmt.CreateConnection();
            K2Mgmt.Connection.Open("connectionstring");

            //get the proc set ID of the workflow whose permissions we need to set
            SourceCode.Workflow.Management.Criteria.ProcessCriteriaFilter filter = new SourceCode.Workflow.Management.Criteria.ProcessCriteriaFilter();
            Processes procs = null;

            filter.AddRegularFilter(ProcessFields.ProcessFullName, Comparison.Equals, "processFullName");
            procs = K2Mgmt.GetProcesses(filter);
            int procSetId = procs[0].ProcSetID;

            //now that we have the proc set ID, we can apply permissions
            //build up a collection of permissions to apply to the workflow
            Permissions permissions = new Permissions();
            //create a ProcSetPermission object - this object will be added to the Permissions collection
            ProcSetPermissions procPermissions = new ProcSetPermissions();

            procPermissions.ProcSetID   = procSetId;
            procPermissions.UserName    = @"domain\username"; //could also be ProcPermissions.GroupName for a group
            procPermissions.Admin       = true;
            procPermissions.Start       = true;
            procPermissions.View        = true;
            procPermissions.ViewPart    = false;
            procPermissions.ServerEvent = false;
            //add the permission to the permissions collection
            permissions.Add(procPermissions);
            procPermissions = null;

            //now we can apply the updated set of permissions to the process
            K2Mgmt.UpdateProcPermissions(procSetId, permissions);

            //several other methods are also available, listed below. Check product documentation for more information
            //K2Mgmt.UpdateGroupPermissions();
            //K2Mgmt.UpdateOrAddProcUserPermissions();
            //K2Mgmt.UpdateProcGroupPermissions();
            //K2Mgmt.UpdateProcUserPermissions();

            //close the connection
            K2Mgmt.Connection.Close();
        }
 protected override void ProcessRecord()
 {
     try
     {
         var procSetPermissions = new ProcSetPermissions()
         {
             Admin       = Admin,
             Start       = Start,
             View        = View,
             ViewPart    = ViewParticipate,
             ServerEvent = ServerEvent
         };
         var permissions = new Permissions();
         if (IdentityType.ToLower() == "user")
         {
             procSetPermissions.UserName = FQN;
             permissions.Add(procSetPermissions);
             if (!procSetPermissions.Admin && !procSetPermissions.Start && (!procSetPermissions.View && !procSetPermissions.ViewPart) && !procSetPermissions.ServerEvent)
             {
                 this.wfMan.UpdateProcPermissions(this.ProcSetId, permissions, true);
             }
             else
             {
                 this.wfMan.UpdateOrAddProcUserPermissions(this.ProcSetId, permissions);
             }
         }
         else
         {
             procSetPermissions.GroupName = FQN;
             permissions.Add(procSetPermissions);
             if (!procSetPermissions.Admin && !procSetPermissions.Start && (!procSetPermissions.View && !procSetPermissions.ViewPart) && !procSetPermissions.ServerEvent)
             {
                 this.wfMan.UpdateProcPermissions(this.ProcSetId, permissions, true);
             }
             else
             {
                 this.wfMan.UpdateProcGroupPermissions(this.ProcSetId, permissions);
             }
         }
     }
     catch (Exception ex)
     {
         ErrorHelper.Write(ex);
     }
 }