在我们开发事情流的时候,往往需要设计到具体业务表单信息的编纂,有些是给与动态编纂的,有些则是在开发过程中措置惩罚惩罚的,各有各的长处,动态编纂的则便利维护各类百般的表单,但是数据的绑定及措置惩罚惩罚则对照麻烦,而自界说开发的,则数据弹性很大,便利改削调解。本篇随笔基于表单的开发设计过程,介绍在事情流中如何新增一个业务表单,以便快速的实现审批业务的上线措置惩罚惩罚。
1、业务表单的基类担任首先我们来了解一下业务表单的对应关系,一般创建一个业务流程措置惩罚惩罚,都需要有一个具体的创建业务表单的界面,以及一个检察措置惩罚惩罚表单的界面。
为了便利,我们尽可能减少代码编写,我们需要把大大都的逻辑措置惩罚惩罚放在基类实现,这样我们在新增一个业务表单的时候就可以减少很多代码编写及维护了。
如对付FrmAddApply类界说如下,我们界说一些抽象接口用于下面的业务表单实现
/// <summary> /// 创建申请单的窗体基类 /// </summary> public partial class FrmAddApply : BaseForm { /// <summary> /// 表单ID /// </summary> public string FormID { get; set; } /// <summary> /// 申请单ID /// </summary> public string ApplyId { get; set; } public FrmAddApply() { InitializeComponent(); } /// <summary> /// 显示数据的函数(子类必需实现) /// </summary> public virtual void DisplayData() { } /// <summary> /// 实现控件输入查抄的函数(子类必需实现) /// </summary> /// <returns></returns> public virtual bool CheckInput() { return true; } /// <summary> /// 编纂状态下的数据生存(子类必需实现) /// </summary> /// <returns></returns> public virtual bool SaveUpdated() { return true; } /// <summary> /// 新增状态下的数据生存(子类必需实现) /// </summary> /// <returns></returns> public virtual bool SaveAddNew() { return true; } ...................
这样我们创建一个新的业务表单,只需要操作代码生成工具,生成所需要的各层框架代码,然后再生成Winform窗体代码,复制部分界面措置惩罚惩罚代码过来这个业务表单的子类即可。
下面是一个告假申请的业务表单设计,如下所示。
我们看到这个表单可以使用代码生成工具Database2Sharp快速生成后进行必然调解的,而这个编纂表单的界面,我们只需要使用自动生成的部分代码即可。
相关代码只需要复制上面的新增、更新、显示数据的代码即可。
对付检察申请单的基类FrmViewApply类,我们越发简单,我们需要把它的自界说界面控件加载出来即可。
下面是检察申请单的基类,封装了相关的措置惩罚惩罚逻辑。
/// <summary> /// 本窗体是通用的检察申请单界面基类。 /// 为减少开发相关页面的事情量,只需要创建一个新窗体,并担任本窗体,然后在子窗体Form_Load函数里面,初始化对应的申请单显示控件即可。 /// </summary> public partial class FrmViewApply : BaseDock { /// <summary> /// 申请单ID /// </summary> public string ApplyId { get; set; } /// <summary> /// 申请单自界说控件 /// </summary> public BaseUserControl ApplyControl { get; set; } /// <summary> /// 默认结构函数 /// </summary> public FrmViewApply() { InitializeComponent(); } private void FrmViewApply_Load(object sender, EventArgs e) { if (!this.DesignMode) { InitToolBar(); } } /// <summary> /// 初始化申请单控件 /// </summary> protected virtual void InitApplyControl(BaseUserControl control) { if (control != null) { this.ApplyControl = control; this.ApplyControl.Dock = DockStyle.Fill; this.Controls.Add(control); } } /// <summary> /// 打印申请单控件内容(默认挪用窗体打印) /// </summary> protected virtual void PrintApplyControl() { if(this.ApplyControl != null) { PrintFormHelper.Print(this.ApplyControl, false); } } /// <summary> /// 表单另存为 /// </summary> protected virtual void ApplySaveAs() { } /// <summary> /// 初始化工具栏的按钮和状态 /// </summary> protected virtual void InitToolBar() { ................//基类实现,控制什么时候该做什么审批措置惩罚惩罚,以及一些常见按钮 } .................
检察告假申请单的窗口就是担任这个FrmViewApply即可,,如下所示。