InstanceStateChart.aspx.cs
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:4k
源码类别:

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Web;
  8. using System.Web.SessionState;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.HtmlControls;
  12. namespace OThinker.H3.Portal
  13. {
  14. /// <summary>
  15. /// Summary description for InstanceStateChart.
  16. /// </summary>
  17.     public partial class InstanceStateChart : PortalPage
  18. {
  19. private string InstanceId
  20. {
  21. get
  22. {
  23. return this.Request.QueryString[Param_InstanceId];
  24. }
  25. }
  26. protected void Page_Load(object sender, System.EventArgs e)
  27. {
  28. if(!this.IsPostBack)
  29. {
  30. // 已经完成的任务列表
  31.                 List<string> finishedActivitys = new List<string>();
  32. // 已经触发的任务列表
  33.                 List<string> runningActivities = new List<string>();
  34.                 // 异常任务列表
  35.                 List<string> exceptionalActivities = new List<string>();
  36.                 System.Data.DataTable tokenTable = OThinker.H3.Server.Engine.TokenPool.QueryTable(this.InstanceId);
  37.                 foreach (System.Data.DataRow tokenRow in tokenTable.Rows)
  38.                 {
  39.                     string activityName = (string)tokenRow[Instance.Token.PropertyName_Activity];
  40.                     if ((int)tokenRow[Instance.Token.PropertyName_State] == (int)Instance.TokenState.Finished)
  41.                     {
  42.                         if (!finishedActivitys.Contains(activityName))
  43.                         {
  44.                             finishedActivitys.Add(activityName);
  45.                         }
  46.                     }
  47.                     else if(
  48.                         (int)tokenRow[Instance.Token.PropertyName_State] == (int)Instance.TokenState.Running && 
  49.                         (int)tokenRow[Instance.Token.PropertyName_Dropped] == 0)
  50.                     {
  51.                         if (!runningActivities.Contains(activityName))
  52.                         {
  53.                             runningActivities.Add(activityName);
  54.                         }
  55.                     }
  56.                     if ((int)tokenRow[Instance.Token.PropertyName_Exceptional] == 1 && !exceptionalActivities.Contains(activityName))
  57.                     {
  58.                         exceptionalActivities.Add(activityName);
  59.                     }
  60.                 }
  61.                 // 获得上下文
  62.                 H3.Instance.InstanceContext context = OThinker.H3.Server.Engine.InstanceManager.GetInstanceContext(this.InstanceId);
  63.                 // 对完成列表进行修正
  64.                 foreach (H3.Instance.ActivityContext activity in context.ActivityArray)
  65.                 {
  66.                     if (activity.State == H3.Instance.ActivityState.Running)
  67.                     {
  68.                         finishedActivitys.Remove(activity.Name);
  69.                         if (!runningActivities.Contains(activity.Name))
  70.                         {
  71.                             runningActivities.Add(activity.Name);
  72.                         }
  73.                     }
  74.                     else
  75.                     {
  76.                         runningActivities.Remove(activity.Name);
  77.                     }
  78.                 }
  79.                 // 如果状态为完成状态,那么清除掉运行记录
  80.                 if (context.State == OThinker.H3.Instance.InstanceState.Complete)
  81.                 {
  82.                     runningActivities.Clear();
  83.                 }
  84. // 图片的二进制内容
  85.                 byte[] chartContent = OThinker.H3.Server.Engine.InstanceManager.ChartInstanceState(
  86. this.InstanceId, 
  87. finishedActivitys.ToArray(),
  88.                     runningActivities.ToArray(), 
  89.                     exceptionalActivities.ToArray());
  90. this.Response.ContentType = "image/jpeg";
  91. this.Response.BinaryWrite(chartContent);
  92. }
  93. }
  94. #region Web Form Designer generated code
  95. override protected void OnInit(EventArgs e)
  96. {
  97. //
  98. // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  99. //
  100. InitializeComponent();
  101. base.OnInit(e);
  102. }
  103. /// <summary>
  104. /// Required method for Designer support - do not modify
  105. /// the contents of this method with the code editor.
  106. /// </summary>
  107. private void InitializeComponent()
  108. {    
  109. }
  110. #endregion
  111. }
  112. }