zoukankan      html  css  js  c++  java
  • Captaris Workflow 6.0不支持ASP.NET 2.0的 MasterPage? 软件之美,美在缺陷

        在Captaris WOrkflow 6.0开发工作流平台开发中,需要使用ASP.NET 2.0和 Web表单来执行任务。由于任务的数据较多而且存在主从结构,例如:Product Change Request(产品更改申请)或Month Expense Request(个人月费用报销申请),将所有的数据显示在一个Web表单上会导致以下问题:

       

    大页面,运行效率低下。
    页面控制太复杂,造成不稳定,增加出错几率。
    修改及扩展困难,如果流程的任务发生改变,维护变得困难。
    缺乏灵活机动(如上)。

        鉴于此,我们需要使用ASP.NET 2.0的MasterPage来分别显示不同的层面的数据,例如对于Product Change Request(产品更改申请)流程我们使用wfApproveInfo.aspx显示所有审核者的签核信息,wfDistributeDept.aspx显示资料发放部门列表,wfArchives.aspx显示图纸列表,在MasterPage中显示Product Change Request的基本信息,如单号、申请人姓名、更改分类等。wfApproveInfo.aspx、wfDistributeDept.aspx和wfArchives.aspx页面都引用MasterPage。
        但是当我们应用MasterPage到Captaris Workflow 6.0中时,发生了两个问题:
        

    Captaris Workflow 6.0的任务表单需要继承Teamplate.Web.UI.BaseWorkflowPage,MasterPage不可能继承它
    wfArchives.aspx等页面引用MasterPage后,无法调用this.CompleteTask()方法

    经过反编译相关代码和查找有关MasterPage的资料,问题得以解决,解决方法如下:
       
    MasterPage设置公共属性,在Content Page中访问它并且赋值。
    不使用BaseWorkflowPage的this.CompleteTask()方法,使用Process.WorkAdvance()方法。
        原因在于,当WebForm引用MasterPage成为ContentPage后,控件集合和名字发生了改变,导致Teamplate.Web.UI.BaseWorkflowPage的Complete()方法在执行到以下代码时引发异常:
    1      foreach (Control control1 in this.Page.Controls[1].Controls)
    2      {
    3            if (control1 is WebControl)
    4            {
    5                  base.Trace.Write(string.Format("Adding {0} of type {1}", control1.ID, control1.GetType().UnderlyingSystemType.ToString()));
    6                  list1.Add(control1);
    7            }
    8      }
    9

          
  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/Johnson/p/568202.html
Copyright © 2011-2022 走看看