public List <UserCode> GetParticipants(string ActivityCode, string InstanceID) { if (!string.IsNullOrEmpty(ActivityCode) && !string.IsNullOrEmpty(InstanceID)) { //流程 OThinker.H3.Instance.InstanceContext InstanceContext = this.Engine.InstanceManager.GetInstanceContext(InstanceID); if (InstanceContext != null) { //流程模板 OThinker.H3.WorkflowTemplate.PublishedWorkflowTemplate Template = this.Engine.WorkflowManager.GetPublishedTemplate( InstanceContext.WorkflowCode, InstanceContext.WorkflowVersion); if (Template != null) { //活动信息 ClientActivityBase Activity = Template.GetActivityByCode(ActivityCode) as ClientActivityBase; OThinker.H3.Instance.InstanceData InstanceData = new OThinker.H3.Instance.InstanceData(this.Engine, InstanceID, null); string[] ParticipantIDs = Activity.ParseParticipants(InstanceData, this.Engine.Organization); OThinker.Organization.Unit[] ParticipantUsers = this.Engine.Organization.GetUnits(ParticipantIDs).ToArray(); if (ParticipantUsers != null) { List <UserCode> ParticipantUserNames = new List <UserCode>(); foreach (OThinker.Organization.Unit u in ParticipantUsers) { if (u != null && u.UnitType == OThinker.Organization.UnitType.User) { OThinker.Organization.User user = (OThinker.Organization.User)u; ParticipantUserNames.Add(new UserCode { Name = user.Name, Code = user.Code, ObjectID = user.ObjectID }); //ParticipantUserNames.Add(u.Name + "[" + u.Code + "]"); } } return(ParticipantUserNames); } } } } return(null); }
public System.Web.Mvc.ActionResult GetInstanceInfo(string appId, string pwd, string userCode, string workItemId) { OThinker.H3.WorkItem.WorkItem workItem = this.Engine.WorkItemManager.GetWorkItem(workItemId); if (workItem == null) throw new Exception("工作任务不存在"); OThinker.H3.Instance.InstanceContext instance = this.Engine.InstanceManager.GetInstanceContext(workItem.InstanceId); OThinker.H3.WorkflowTemplate.PublishedWorkflowTemplate template = this.Engine.WorkflowManager.GetPublishedTemplate(instance.WorkflowCode, instance.WorkflowVersion); OThinker.H3.WorkflowTemplate.Activity activity = template.GetActivityByCode(workItem.ActivityCode); InstanceInfo result = new InstanceInfo() { ActivityCode = activity.ActivityCode, ActivityName = activity.DisplayName, DataPermissions = (activity is OThinker.H3.WorkflowTemplate.ParticipativeActivity) ? ((OThinker.H3.WorkflowTemplate.ParticipativeActivity)activity).DataPermissions : null, InstanceId = instance.InstanceId, InstanceState = instance.State, Originator = instance.Originator, TokenId = workItem.TokenId, WorkflowCode = template.WorkflowCode, WorkflowName = template.WorkflowFullName, SequenceNo = instance.SequenceNo, WorkItemState = workItem.State }; OThinker.Organization.User user = this.Engine.Organization.GetUserByCode(userCode) as OThinker.Organization.User; if (user != null) { OThinker.Organization.Signature[] signatures = this.Engine.Organization.GetSignaturesByUnit(user.ObjectID); result.MySignatures = new List<SignatureParam>(); if (signatures != null) { foreach (OThinker.Organization.Signature signature in signatures) { result.MySignatures.Add(new SignatureParam() { IsDefault = signature.IsDefault, SignatureName = signature.Name, SignautreId = signature.ObjectID, SortKey = signature.SortKey }); } } result.FrequentlyComment = this.Engine.Organization.GetFrequentlyUsedCommentTextsByUser(user.ObjectID); if (activity is OThinker.H3.WorkflowTemplate.ParticipativeActivity) { // PermittedActions actions = new PermittedActions(); OThinker.H3.WorkflowTemplate.ParticipativeActivity participative = activity as OThinker.H3.WorkflowTemplate.ParticipativeActivity; //actions.AdjustParticipant = participative.PermittedActions.AdjustParticipant; //actions.Assist = participative.PermittedActions.Assist; //actions.CancelIfUnfinished = participative.PermittedActions.CancelIfUnfinished; //actions.Choose = participative.PermittedActions.Choose; //actions.Circulate = participative.PermittedActions.Circulate; //actions.Consult = participative.PermittedActions.Consult; //actions.Forward = participative.PermittedActions.Forward; //actions.Reject = participative.PermittedActions.Reject || participative.PermittedActions.RejectToAny || participative.PermittedActions.RejectToFixed; if (participative.PermittedActions.RejectToAny) {// 获取允许驳回的节点 List<ActivityParam> rejectActivies = new List<ActivityParam>(); foreach (OThinker.H3.Instance.Token token in instance.Tokens) { if (token.Activity == activity.ActivityCode) continue; ParticipativeActivity act = template.GetActivityByCode(token.Activity) as ParticipativeActivity; if (act == null) continue; rejectActivies.Add(new ActivityParam() { ActivityCode = act.ActivityCode, DisplayName = act.DisplayName }); } result.RejectActivies = rejectActivies; } result.PermittedActions = participative.PermittedActions; } } return Json(result); }