private void getUserIDByIdentifier(string PositionTypeCode, int OrganizationUnitID, ref string userid, ref string email) { try { string Pid = string.Empty;//职位 APWorkFlowTableAdapters.StuffUserTableAdapter TAUser = new APWorkFlowTableAdapters.StuffUserTableAdapter(); APWorkFlow.StuffUserDataTable dt = TAUser.GetDataByNode(PositionTypeCode, OrganizationUnitID); if (dt.Rows.Count < 1) { userid = "none";//此处给出找不到人时的标识 email = ""; } else { foreach (APWorkFlow.StuffUserRow dataRow in dt.Rows) { //人员 if (!string.IsNullOrEmpty(dataRow.StuffUserId.ToString())) { userid += "P" + dataRow.StuffUserId + "P"; } //职位 if (!string.IsNullOrEmpty(dataRow.PositionId.ToString())) { Pid += "P" + dataRow.PositionId + "P"; } //email if (!string.IsNullOrEmpty(dataRow.EMail)) { email += dataRow.EMail + ";"; } } userid = userid + "$" + Pid; } } catch (Exception) { throw; } }
//得到用户邮箱 public string getUserEmailByID(int userid) { APWorkFlowTableAdapters.StuffUserTableAdapter TAUser = new APWorkFlowTableAdapters.StuffUserTableAdapter(); APWorkFlow.StuffUserDataTable dt = TAUser.GetDataByID(userid); return(dt[0].EMail); }
//得到用户邮箱 public string getUserEmailByID(int userid) { APWorkFlowTableAdapters.StuffUserTableAdapter TAUser = new APWorkFlowTableAdapters.StuffUserTableAdapter(); APWorkFlow.StuffUserDataTable dt = TAUser.GetDataByID(userid); return dt[0].EMail; }
//如是最后一个节点 则创建一个任务 public bool LastCreateWorkItem(string processInstanceID, int positionID, ref string approve) { try { string admin = (String)ConfigurationManager.AppSettings["APAdmin"]; APWorkFlowTableAdapters.StuffUserTableAdapter TAStuffUser = new APWorkFlowTableAdapters.StuffUserTableAdapter(); APWorkFlowTableAdapters.StuffUserAndPositionTableAdapter TAUserAndPosition = new APWorkFlowTableAdapters.StuffUserAndPositionTableAdapter(); APWorkFlowTableAdapters.ProcessLastNameTableAdapter TAProcessLastName = new APWorkFlowTableAdapters.ProcessLastNameTableAdapter(); APWorkFlow.StuffUserAndPositionDataTable dtStuffUserAndPosition = TAUserAndPosition.GetDataByPositionId(positionID); if (dtStuffUserAndPosition.Rows.Count == 0) { return false; } string lastName = ""; WFBaseProcessInstance pi = api.GetProcInst(processInstanceID); WFManualWorkItem wi = getNextNode(processInstanceID); WFBaseActivityInstance ai = api.GetActivityInst(wi.ActivityInstID); APWorkFlow.ProcessLastNameDataTable dtProcessLastName = TAProcessLastName.GetDataByTName(pi.DefName); if (dtProcessLastName.Rows.Count > 0) { lastName = dtProcessLastName[0].lastName; if (ai.DisplayName == lastName) { WFTimeDuration td = new WFTimeDuration(); td.BusinessTime = false; td.Length = "7"; td.Unit = WFTimeUnit.DAY; foreach (APWorkFlow.StuffUserAndPositionRow drStuffUserAndPosition in dtStuffUserAndPosition.Rows) { //获取审批人 approve += "P" + drStuffUserAndPosition.StuffUserId + "P"; //APWorkFlow.StuffUserDataTable dtUser=TAStuffUser.GetDataByID(drStuffUserAndPosition.StuffUserId); } WFEvent evt = api.CreateLinkedWorkItem(wi.WorkItemID, wi.Name, approve, td, wi.ClientData); evt = getFullEvent(evt); APWorkFlow.NodeStatusDataTable dt = new APWorkFlow.NodeStatusDataTable(); APWorkFlow.NodeStatusRow dr = dt.NewNodeStatusRow(); dr.STATUS = FlowNodeStatus.ASSIGNED; dr.PARTICIPANT = approve; //dr.AcceptChanges(); dt.AddNodeStatusRow(dr); dt.AcceptChanges(); StringWriter sw = new StringWriter(); dt.WriteXml(sw); string clientData = sw.ToString(); System.Collections.ArrayList attrList = new System.Collections.ArrayList(); attrList.Add(new NameValue("UserID", dr.PARTICIPANT));//更新该步骤的userid attrList.Add(new NameValue("CLIENT_DATA", clientData)); NameValue[] attributes = (NameValue[])attrList.ToArray(typeof(NameValue)); api.UpdateWorkItem(evt.WorkItemID, attributes); api.GetWorkItem(evt.WorkItemID).DisplayName = "总经理审批"; if (string.IsNullOrEmpty(evt.Error)) return true; return false; } } return false; } catch { return false; } }