public virtual object Process(HttpContext context) { YZRequest request = new YZRequest(context); int stepid = request.GetInt32("StepID"); string uid = request.GetString("uid", YZAuthHelper.LoginUserAccount); //共享任务uid为空,会导致重定向到登录页面,产生异常 using (BPMConnection cn = new BPMConnection()) { string orguid = YZAuthHelper.LoginUserAccount; YZAuthHelper.SetAuthCookie(uid); try { cn.WebOpen(); } finally { YZAuthHelper.SetAuthCookie(orguid); } ProcessInfo processInfo = BPMProcess.GetProcessInfo(cn, stepid); if (processInfo.Links.Count == 0) { throw new BPMException(BPMExceptionType.MissOutLink, processInfo.NodeName); } string postXml = @"{0} <XForm> <Header> <Method>Process</Method> <PID>{1}</PID> <Action>{2}</Action> <Comment></Comment> </Header> <FormData> </FormData> </XForm>"; postXml = String.Format(postXml, "<?xml version=\"1.0\"?>", stepid, YZUtility.EncodeXMLInnerText(processInfo.Links[0].DisplayString)); using (MemoryStream postStream = new MemoryStream(Encoding.UTF8.GetBytes(postXml))) { PostResult postResult = BPMProcess.Post(cn, postStream); return(new { success = true, result = (postResult.PostResultType == PostResultType.TaskFinishedApproved || postResult.PostResultType == PostResultType.TaskFinishedRejected) ? "finished" : "running" }); } } }
public static string ConvertToXmlValue(object value) { string strValue; if (value == null) { strValue = String.Empty; } else { if (value is DateTime) { strValue = ((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss"); } else if (value is byte[]) { strValue = Convert.ToBase64String((byte[])value); } else if (value is JsonItemCollection) { StringBuilder sb = new StringBuilder(); sb.AppendLine(); foreach (JsonItem item in (value as JsonItemCollection)) { item.AppendToXmlString(sb); } strValue = sb.ToString(); } else if (value is JsonItem) { StringBuilder sb = new StringBuilder(); (value as JsonItem).AppendToXmlString(sb); strValue = sb.ToString(); } else { strValue = Convert.ToString(value); strValue = YZUtility.EncodeXMLInnerText(strValue); } } return(strValue); }
public virtual object Start(HttpContext context) { YZRequest request = new YZRequest(context); Guid draftid = request.GetGuid("draftid", false); string memberfullname = request.GetString("memberfullname"); string uid = request.GetString("uid"); using (BPMConnection cn = new BPMConnection()) { string orguid = YZAuthHelper.LoginUserAccount; YZAuthHelper.SetAuthCookie(uid); try { cn.WebOpen(); } finally { YZAuthHelper.SetAuthCookie(orguid); } BPMDraft draft = new BPMDraft(); draft.Open(cn, draftid); JObject jDraftHeader = null; if (!String.IsNullOrEmpty(draft.Header)) { jDraftHeader = JObject.Parse(draft.Header); } PostInfo postInfo = BPMProcess.GetPostInfo(cn, draft.ProcessName, null, memberfullname, -1); if (postInfo.Links.Count == 0) { throw new BPMException(BPMExceptionType.MissOutLink, postInfo.NodeName); } string postXml = @"{0} <XForm> <Header> <Method>Post</Method> <ProcessName>{1}</ProcessName> <OwnerMemberFullName>{2}</OwnerMemberFullName> <Action>{3}</Action> <Comment>{4}</Comment> {5} </Header> {6} </XForm>"; StringBuilder sb = new StringBuilder(); if (jDraftHeader != null) { foreach (KeyValuePair <string, JToken> jProp in jDraftHeader) { string line = String.Format("<{0}>{1}</{0}>", jProp.Key, YZUtility.EncodeXMLInnerText(jProp.Value.ToString())); sb.AppendLine(line); } } postXml = String.Format(postXml, "<?xml version=\"1.0\"?>", YZUtility.EncodeXMLInnerText(draft.ProcessName), YZUtility.EncodeXMLInnerText(memberfullname), YZUtility.EncodeXMLInnerText(postInfo.Links[0].DisplayString), YZUtility.EncodeXMLInnerText(draft.Comments), sb.ToString(), draft.xml); using (MemoryStream postStream = new MemoryStream(Encoding.UTF8.GetBytes(postXml))) { PostResult postResult = BPMProcess.Post(cn, postStream); return(new { success = true, TaskID = postResult.TaskID, SN = postResult.SN }); } } }