Setting a user's Out of Office Status
Setting a user's Out of Office status via the API may be required in custom automation code or in other custom code based solutions that interact with user worklists.
These code snippets require references to the assemblies:
- SourceCode.HostClientAPI
- SourceCode.Workflow.Client
The following code sample demonstrates how to set a users Out of Office status:
Set a users Out of Office status
using (SourceCode.Workflow.Client.Connection K2Conn = new Connection()) {
//open a simple connection for simplicity
K2Conn.Open("localhost");
//set Out of Office ON for the current user
K2Conn.SetUserStatus(UserStatuses.OOF);
//set Out of Office OFF for the current user
K2Conn.SetUserStatus(UserStatuses.Available);
//set Out of Office ON for a managed user
K2Conn.SetUserStatus(@"[Label]:[Domain\Username]", UserStatuses.OOF); //e.g. K2:DOMAIN\Username
//set Out of Office OFF for a managed user
K2Conn.SetUserStatus(@"[Label]:[Domain\Username]", UserStatuses.Available); //e.g. K2:DOMAIN\Username
}
The following code sample demonstrates how to define Out of Office worklist settings to specify how Worklist items should be delegated when the user is Out Of Office. When defining the worklist criteria to redirect a worklist item, you can only filter on Activity Name and Folio.
Delegating worklist items when the user is OOO
using(SourceCode.Workflow.Client.Connection K2Conn = new Connection()) {
//open a simple connection for simplicity
K2Conn.Open("localhost");
//Define Worklist criteria to retrieve worklistitems to be delegated to the other user
WorklistCriteria worklistcriteria = new WorklistCriteria();
worklistcriteria.Platform = "ASP";
//Define the user that the work must be delegated to as a Destination
Destinations worktypedestinations = new Destinations();
worktypedestinations.Add(new Destination(@"[Label]:[Domain\Username]", DestinationType.User)); //e.g. K2:DOMAIN\Username
//Link the filters and destinations to the Work
WorkType worktype = new WorkType("MyWork", worklistcriteria, worktypedestinations);
//optional: define a separate set of criteria for any "Exception" tasks that
//must be delegated to a different user, in this sample, tasks for a specific workflow
WorklistCriteria worklistexceptioncriteria = new WorklistCriteria();
worklistexceptioncriteria.Platform = "ASP";
worklistexceptioncriteria.AddFilterField(WCField.ProcessName, WCCompare.Equal, "[ExceptionProcessName]");
//Define the user that the exception work must be delegated to as a Destination
Destinations worktypeexceptiondestinations = new Destinations();
worktypedestinations.Add(new Destination(@"[Label]:[DOMAIN\ExceptionUserName]", DestinationType.User));
// Link the filters and destinations to the Exception Work
WorkTypeException worktypeexception = new WorkTypeException("MyWorkException", worklistexceptioncriteria, worktypeexceptiondestinations);
worktype.WorkTypeExceptions.Add(worktypeexception);
//now set up the worklist Out of Office (OOF) delegation
WorklistShare worklistshare = new WorklistShare();
worklistshare.ShareType = ShareType.OOF;
//Set time interval for the Sharing. These dates may be used to only share work for a specific period
worklistshare.StartDate = DateTime.MinValue;
worklistshare.EndDate = DateTime.MinValue;
//add the worktype
worklistshare.WorkTypes.Add(worktype);
//Share the worklist
K2Conn.ShareWorkList(worklistshare);
//Share the worklist for a managed user
K2Conn.ShareWorkList(@"[Label]:[Domain\Username]", worklistshare);
//When the current user's status is set to OOF the worklist shares defined above will take effect
K2Conn.SetUserStatus(UserStatuses.OOF);
}
StartDate and EndDate Properties
The StartDate and EndDate fields exposed in the API are not currently supported in all User Interfaces where Out of Office can be configured.
The Out of Office status check box in K2 Workspace will reflect the user's status, regardless of the OOF Start or End dates. Therefore if the Start and End dates have been programmatically set and the user's status has been set to OOF, the K2 Workspace check box will show a check mark before, during, and after the Start and End dates. The workflowManagementServer.SetUserStatus(@"K2:[domain\username]", UserStatusses.OOF); will need to be reset to workflowManagementServer.SetUserStatus(@"K2:[domain\username]", UserStatusses.ACTIVE); in order for the K2 Workspace OOF check box to become unchecked. Alternatively, uncheck the OOF check box in K2 Workspace once the End date has been reached.