Пример #1
0
        /// <summary>
        /// 执行发送
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Send_Click(object sender, EventArgs e)
        {
            //调用保存方法.
            Btn_Save_Click(null, null);

            // 查找出已经保存的主表数据。
            tab_wf_commonkpiopti_main tab_wf_commonkpiopti_main = new BP.Demo.tab_wf_commonkpiopti_main();

            tab_wf_commonkpiopti_main.Retrieve(tab_wf_commonkpiopti_mainAttr.WorkID, this.WorkID);

            // 发当前工作,让他发送到,主线程的下一个节点上去。
            string msg = BP.WF.Dev2Interface.Node_SendWork(this.FK_Flow, this.WorkID).ToMsgOfHtml();

            //为市局启动工作任务, 查询出来集合,该表单的集合.
            tab_wf_commonkpioptis tab_wf_commonkpioptis = new tab_wf_commonkpioptis();

            tab_wf_commonkpioptis.Retrieve(tab_wf_commonkpioptiAttr.tab_wf_commonkpiopti_main,
                                           tab_wf_commonkpiopti_main.OID);

            // 遍历市局这个集合.
            foreach (tab_wf_commonkpiopti tab_wf_commonkpiopti in tab_wf_commonkpioptis)
            {
                // 调用 创建空白工作,为市局生成一个开始节点的待办工作,并接受它的WorkID.
                Int64 subFlowWorkID = BP.WF.Dev2Interface.Node_CreateBlankWork("026", null,
                                                                               null, tab_wf_commonkpiopti.wf_send_user, "自动发起任务:" + WebUser.No, this.WorkID, this.FK_Flow);

                // 给子流程赋WorkID.
                tab_wf_commonkpiopti.WorkID       = subFlowWorkID;
                tab_wf_commonkpiopti.ParentWorkID = this.WorkID;
                tab_wf_commonkpiopti.Update();

                // 执行sql 更新设备的 ParentWorkID .
                string sql = "UPDATE tab_wf_commonkpioptivalue SET ParentWorkID=" + subFlowWorkID + " WHERE wf_commonkpioptivalue_id=" + tab_wf_commonkpiopti.OID;
                DBAccess.RunSQL(sql);

                msg += "@子流程 - 市局:" + tab_wf_commonkpiopti.region_id + "已经启动,任务已经下达给" + tab_wf_commonkpiopti.wf_send_user + " 处理 .";
            }

            // 这里应当转向一个界面来显示这些信息。
            this.Session["info"] = msg;
            this.Response.Redirect("ShowMsg.aspx?ss=" + DataType.CurrentDataTime, true);
        }
Пример #2
0
        /// <summary>
        /// 执行保存工单
        /// 1,向省局业务主表里写数据.
        /// 2,向市局工单临时表里写数据。
        /// 3,向设备工单临时表里写数据。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Btn_Save_Click(object sender, EventArgs e)
        {
            /*
             * 保存说明: 向省局主表里写数据, 这里用En30框架来描述业务逻辑的实现步骤.
             * 您可以直接用sql,或者用自己的方式把数据存入 tab_wf_commonkpiopti_main表里.
             */

            #region 第一步: 保存主表数据.
            // 建立一个空白的数据.
            tab_wf_commonkpiopti_main mainFlow = new  tab_wf_commonkpiopti_main();

            // 根据WorkID 查询出来这条数据信息, 执行这个方法,就可以获得主建OID,
            // 一定可以查询出来一条数据,因为在page_load中已经判断。
            mainFlow.Retrieve(tab_wf_commonkpiopti_mainAttr.WorkID, this.WorkID);  /*查询出来数据.*/

            //首先要给这个主表的, 赋予流程的基本信息.
            mainFlow.WorkID      = this.WorkID;
            mainFlow.fk_flow     = this.FK_Flow;                                                  // 流程编号
            mainFlow.wf_category = "02";                                                          // 流程类别编号。

            mainFlow.wf_title           = "自定义流程标题:" + DataType.CurrentData + " , " + WebUser.No; // 流程标题
            mainFlow.wf_no              = this.TB_wf_no.Text;                                     // 单据编号
            mainFlow.wf_send_user       = WebUser.No;                                             // 当前操作员.
            mainFlow.wf_send_department = WebUser.FK_Dept;                                        // 当前操作人员部门.
            mainFlow.wf_send_phone      = "18660153393";                                          //当前操作员电话
            mainFlow.wf_send_time       = DataType.CurrentDataTime;                               // 当前时间.
            // 其次要给其它业务字段赋值.
            mainFlow.techology = this.TB_ZBName.Text;                                             /*指标信息.*/

            //最后更新到数据库里, 完成主表的数据写入。
            int i = mainFlow.Update(); // 执行更新
            if (i == 0)
            {
                mainFlow.Insert();
            }
            #endregion 保存主表数据.


            #region 第二步: 清除目标从表数据与从从表数据, 可能你们的方法与我们的方法不同.
            tab_wf_commonkpioptis shiJus = new tab_wf_commonkpioptis();
            shiJus.Retrieve(tab_wf_commonkpioptiAttr.tab_wf_commonkpiopti_main, mainFlow.OID); // 清除市局数据.
            foreach (tab_wf_commonkpiopti shiju in shiJus)
            {
                //删除该市局下面的设备信息。
                tab_wf_commonkpioptivalue shebeiEn = new  tab_wf_commonkpioptivalue();
                shebeiEn.Delete(tab_wf_commonkpioptivalueAttr.wf_commonkpioptivalue_id, shiju.OID);

                //删除该市局数据。
                shiju.Delete();
            }
            #endregion 清除目标从表数据与从从表数据.


            #region 第三步: 保存从表数据.(市局数据)
            // new 市局数据.
            tab_wf_commonkpiopti shijuEn = new  tab_wf_commonkpiopti();

            // 设置基础信息
            shijuEn.WorkID = this.WorkID;
            shijuEn.tab_wf_commonkpiopti_main = mainFlow.OID; // 关联的主键
            shijuEn.fk_flow      = this.FK_Flow;
            shijuEn.wf_no        = "111-222-3333";            //单据编号
            shijuEn.WorkID       = 0;                         // 这个时间还没有产生WorkID
            shijuEn.wf_send_user = "******";            // 子线程的处理人.

            //设置业务数据信息.
            shijuEn.region_id = "济南";

            // 将市局数据-插入到数据库.
            shijuEn.Insert();
            #endregion 第三步: 保存从表数据. (市局数据)


            #region 第四步: 保存从从表数据.(市局-设备数据)
            // 生成济南的第1个设备信息, 这些信息放在子线程中去, new 一个设备信息.
            tab_wf_commonkpioptivalue shebei = new  tab_wf_commonkpioptivalue();

            // 给他赋值  - 流程信息字段
            shebei.wf_commonkpioptivalue_id = shijuEn.OID; //关联主键
            shebei.fk_flow = this.FK_Flow;
            shebei.WorkID  = 0;                            // 这个时间还没有产生WorkID
            // shebei.fid = 0; // 这个时间还没有产生fid
            shebei.fuzeren = "guobaogeng";                 // 现在指定下一节点的工作人员

            // 给他赋值  - 业务字段.
            shebei.addr   = "济南高新区xx路xx号";
            shebei.remark = "abc-abc";

            // 插入到数据库.
            shebei.Insert();

            // 在建立一个设备信息。
            shebei = new tab_wf_commonkpioptivalue();
            // 给他赋值  - 流程信息字段
            shebei.wf_commonkpioptivalue_id = shijuEn.OID; //关联主键
            shebei.fk_flow = this.FK_Flow;
            shebei.WorkID  = 0;                            // 这个时间还没有产生WorkID
            // shebei.fid = 0; // 这个时间还没有产生fid
            shebei.fuzeren = "fuhui";                      // 现在指定下一节点的工作人员

            // 给他赋值  - 业务字段.
            shebei.addr   = "济南历城区xx路xx号";
            shebei.remark = "abc-123";

            // 插入到数据库.
            shebei.Insert();

            #endregion 保存从从表数据. (市局-设备数据)

            if (sender == null)
            {
                this.Response.Write("保存成功");
            }
        }