用友软件股份有限公司研发过程 U9 调度开发范例说明 版 本 号 :V1.0 作者:赵军生 第 1 页 共 8 页 版本记录 【此部分要记录该文档形成过程中的历次版本变更过程及变更的内容】 版本 修改与参与人 修改时间 修改原因 修改概述 审批人1.0 赵军生 2008/07/30 原始文档建立 第 2 页 共 8 页 一.问题域说明 用户在进行 ERP 操作时,有些业务操作仅仅在 IIS 上是满足不了的,比如像成本计算、成本月结等耗时操作,必须单独建立服务进程进行操作。本文讨论与调度进程相关的内容。 二.基本原理 1. UI 项目添加对依赖的 DLL 的引用 UFIDA.U9.Base.BaseBE.Deploy.DLL,UFIDA.U9.Base.BaseBP.Agent.DLL, UFIDA.U9.Base.BaseBP.Deploy.DLL,UFIDA.U9.BS.Job.JobBP.Agent.DLL, UFIDA.U9.BS.Job.JobBP.Deploy.DLL,UFIDA.U9.BS.Job.RequestClient.DLL 2. UI 调度按钮事件 编写 ActionExtend 文件中调度按钮对应的 Click 事件代码,来 ShowModalDialog 方案窗体。该窗体负责保存RecurrencePattern,并向CurrentState["RecurrencePatternID"]中写入 RecurrencePattern.ID。 3. 调度的管理 可以在 系统管理—〉异步请求管理 —〉请求管理/请求监控/请求执行结果 等功能节点下进行调度的管理和结果监控。 三.关键代码及说明 具体参见CC上的: \U9.VOB.PD.COST\CA\Code\CalculateCostUI\ 目录中成本计算相关文件 1. *WebPartExtend 部分示例代码 #region 自己扩展 Extended Event handler public void AfterOnLoad() 第 3 页 共 8 页 { if (this.CurrentState["RecurrencePatternID"] != null && long.Parse(this.CurrentState["RecurrencePatternID"].ToString()) > 0) { this.Action.CalculateCost_Execute(); } } #endregion 2. *Action 部分示例代码 #region 成本计算操作 private void OnCostCalculate_Extend(object sender, UIActionEventArgs e) { //调用模版定义的默认实现方法.如需扩展,请直接在此编程. //this.OnCostCalculate_DefaultImpl(sender, e); //清除错误信息 this.CurrentModel.ClearErrorMessage(); CalculateCost_Execute(); this.CurrentPart.ShowWindowStatus(PDResource.GetRequest_SubmitInfo()); } #endregion #region 调度操作 private void Onattemper_Extend(object sender, UIActionEventArgs e) { string PageID = "390a732c-937a-484e-b63a-8a0f71ad2e69"; //注意:窗体高度和宽度可能还会调整 this.CurrentPart.ShowModalDialog(PageID, "", "320", "195", null, null, true, true); } #endregion #region 成本计算调度相关 /// /// 调度相关 /// public void CalculateCost_Execute() { CalculateCostViewRecord ccvr; if (this.CurrentModel.CalculateCostView.FocusedRecord == null) { 第 4 页 共 8 页 if (this.CurrentPart.CurrentState["ZJSCalcCostRecord"] != null) { ccvr = (CalculateCostViewRecord)this.CurrentPart.CurrentState["ZJSCalcCostRecord"]; } else { return; } } else { ccvr = this.CurrentModel.CalculateCostView.FocusedRecord; } if (UFSoft.UBF.Util.Context.PlatformContext.Current.OrgID == null) { try { string strRawUrl = ((UFSoft.UBF.UI.FormProcess.BaseWebForm)this.CurrentPart).Page.Request.RawUrl; ((UFSoft.UBF.UI.FormProcess.BaseWebForm)this.CurrentPart).Page.Response.Redirect(strRawUrl); } catch { } } int intCostCalcBalance = GetCostCalcBalanceProfile(); //成本计算前,要对成本计算的配置及数据进行检查 CalculateCost.Proxy.CalcCostCheckProxy calcCostCheckProxy = new CalculateCost.Proxy.CalcCostCheckProxy(); calcCostCheckProxy.Org = long.Parse(UFSoft.UBF.Util.Context.PlatformContext.Current.OrgID); if (ccvr.Cal...