//菜单项对应操作事件。
        private void menuItemClick(object sender, System.EventArgs e)
        {
            try {
                //检验业务对象是否已经实现了
                System.Reflection.MemberInfo[] mths = _ClientRule.GetType().GetMember(INVOKE_METHOD_NAME);
                if (mths == null || mths.Length == 0)
                {
                    throw new MB.Util.APPException(string.Format("在单据业务状态操作改变中对应的业务类 {0} 必须实现方法{1}", _ClientRule.GetType().FullName, INVOKE_METHOD_NAME), MB.Util.APPMessageType.SysErrInfo);
                }

                if (!_OperateTypes.ContainsKey((ToolStripMenuItem)sender))
                {
                    throw new MB.Util.APPException("该菜单还没有进行相应的处理", MB.Util.APPMessageType.DisplayToUser);
                }

                MB.Util.Model.DocOperateType operateType = _OperateTypes[(ToolStripMenuItem)sender];

                //operateType = MB.Util.Model.DocOperateType.Approved;
                MB.WinClientDefault.Common.frmEditDocStateTrace editDocState = new MB.WinClientDefault.Common.frmEditDocStateTrace(operateType);
                editDocState.AfterEditSure += new EventHandler <MB.WinClientDefault.Common.EditDocStateTraceEventArgs>(editDocState_AfterEditSure);
                editDocState.ShowDialog();
            }
            catch (Exception ex) {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }
        /// <summary>
        ///
        /// </summary>
        public frmEditDocStateTrace(MB.Util.Model.DocOperateType docOperateType)
        {
            InitializeComponent();

            _DocOperateType = docOperateType;
            this.Load      += new EventHandler(frmEditDocStateTrace_Load);
        }
        /// <summary>
        /// 提交该单据对象相应的业务操作
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="operateState"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        public virtual int BusinessFlowSubmit(object entity, MB.Util.Model.DocOperateType operateState, string remark)
        {
            object[] pars = new object[] { entity, operateState, remark };
            object   val  = null;

            using (TChannel serverRuleProxy = CreateServerRuleProxy()) {
                System.ServiceModel.IClientChannel channel = MB.Util.MyReflection.Instance.InvokePropertyForGet(serverRuleProxy, "InnerChannel") as System.ServiceModel.IClientChannel;
                using (System.ServiceModel.OperationContextScope scope = new System.ServiceModel.OperationContextScope(channel)) {
                    //增加消息表头信息
                    MB.WinBase.WcfClient.MessageHeaderHelper.AppendUserLoginInfo();
                    val = MB.WcfServiceLocator.WcfClientHelper.Instance.InvokeServerMethod(serverRuleProxy, "BusinessFlowSubmit", pars);
                }
                if (val == null || (int)val < 0)
                {
                    return(-1);
                }
            }
            return(1);
        }
 /// <summary>
 /// 单据状态编辑对应事件参数。
 /// </summary>
 /// <param name="remark">操作输入的备注信息</param>
 public EditDocStateTraceEventArgs(string remark, MB.Util.Model.DocOperateType docOperateType)
 {
     _Remark         = remark;
     _DocOperateType = docOperateType;
 }