public static WFBaseActivityInstance[] GetActivityInstsByPIID(string piID) { // This is console application sample IWFWorkflowService svc = Common.GetWorkFlowAPI(); string processInstanceID = piID;//"02C3FA88ADE04750A34B5B3168C25793"; WFBaseActivityInstance[] activityInstance = null; try { activityInstance = svc.GetActivityInstsByPIID(processInstanceID); } catch (Exception ex) { } return(activityInstance); }
private void UpdateImagePage(String piID) { IWFWorkflowService api = WFFactory.GetWF(WFType.AgilePoint).GetAPI(); string xml = api.GetProcDefGraphics(piID); if (xml == null || xml.Length == 0) { return; } GraphicImage g = new GraphicImage(); g.FromXml(xml); System.IO.MemoryStream ms = new System.IO.MemoryStream(g.Image); Bitmap bitmap = new Bitmap(ms); Size size = Calculate(bitmap.Width, bitmap.Height); Size bitmapSize = ZoomView(bitmap.Width, bitmap.Height); int maginX = (size.Width - bitmapSize.Width) / 2; int maginY = (size.Height - bitmapSize.Height) / 2; Bitmap canvas = new Bitmap(size.Width, size.Height, PixelFormat.Format24bppRgb); Graphics gdi = Graphics.FromImage(canvas); gdi.FillRectangle(new SolidBrush(Color.White), 0, 0, canvas.Width, canvas.Height); gdi.DrawImage(bitmap, maginX, maginY, bitmapSize.Width, bitmapSize.Height); ArrayList shapes = g.Normalize(bitmapSize.Width, bitmapSize.Height, maginX, maginY); WFBaseActivityInstance[] ais = api.GetActivityInstsByPIID(piID); gdi.Flush(); Session["ProcessImage"] = canvas; ProcInstImage.ImageUrl = "ProcessImage.aspx"; string map = ""; foreach (NamedRectangle shp in shapes) { AddImageContrl(shp, WFBaseActivityInstance.ACTIVE, true); AddImageContrl(shp, WFBaseActivityInstance.PENDING, true); AddImageContrl(shp, WFBaseActivityInstance.PASSED, true); AddImageContrl(shp, WFBaseActivityInstance.CANCELLED, true); AddImageContrl(shp, WFBaseActivityInstance.ACTIVATED, true); if (ais != null) { foreach (WFBaseActivityInstance ai in ais) { if (shp.Name.Equals(ai.Name)) { int participantCount = CountParticipantOnActivity(api, piID, ai); if (participantCount > 1) { DrawParticipantImage(gdi, shp, "MultiParticipant", participantCount); } else if (participantCount == 1) { DrawParticipantImage(gdi, shp, "SingleParticipant", participantCount); } } } } map += AddAreaControl(shp); } ActivityInfoMap.Text = map; // add hidden text to store activity (name, id) map foreach (WFBaseActivityInstance ai in ais) { HtmlInputHidden ctrl = new HtmlInputHidden(); ctrl.ID = ai.Name; ctrl.Value = ai.ID; PlaceHolder.Controls.Add(ctrl); } }