欢迎您来到 数字平台。 您尚未登录。[登录] [注册新用户]
当前位置: 论坛首页 / 栏目 产品与服务 / 文章 64

点击:1542

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章id: 64
编写方案主程序main.cs



    确定了方案名和方案目录后,我们就可以进入二次开发主要的一步——用C#语言开发方案主程序。双击“main.cs”或选中它并点击“编辑”按钮,可以用记事本程序编辑主程序模板:

这是一个典型的C#代码,除了用using关键词导入.Net命名空间的类外,数字平台公司也开发了很多专用类,可以很方便二次开发人员直接调用。批处理程序通过以下几个过程(可选的)实现功能:

OnInitial——批处理过程初始化阶段执行的代码。

OnBegin——批处理过程开始阶段执行的代码。

Inputing——数据导入数据库阶段执行的代码(与Outputing阶段互斥)。

Outputing——数据库中导出数据阶段执行的代码(与Inputing阶段互斥)。

OnEnd——批处理过程结束阶段的代码。

具体专用类的调用方式见相关手册,以下是“一边转入一边查重”的完整示例代码:

using System;

using System.Windows.Forms;

using System.IO;

using System.Text;

 

using DigitalPlatform.MarcDom;

using DigitalPlatform.Library;

using DigitalPlatform.Marc;

using DigitalPlatform.Statis;

 

using dp2Batch;

 

public class MyBatch : Batch

{

    DupDlg dupdlg = null;

 

    int m_nDupCount = 0;

 

    Encoding OutputEncoding = Encoding.UTF8;

 

    Stream DupOutputFile = null;

 

    public string Title = "";

 

    public override void OnInitial(object sender, BatchEventArgs e)

    {

 

 

        // MessageBox.Show(this.MainForm, "OnInitial");

    }

    public override void OnBegin(object sender, BatchEventArgs e)

    {

        MessageBox.Show(this.MainForm, "OnBegin");

 

        if (dupdlg == null)

        {

            dupdlg = new DupDlg();

 

            dupdlg.Initial(this.SearchPanel,

                this.SearchPanel.ServerUrl,

                false);

            dupdlg.ProjectName = "";

            dupdlg.Closed -= new

EventHandler(dupdlg_Closed);

            dupdlg.Closed += new

EventHandler(dupdlg_Closed);

 

            dupdlg.LoadBrowse = LoadBrowse.Dup; // 只装

载超过阈值的浏览记录

 

            dupdlg.Show();

 

            DialogResult ret = dupdlg.FindProjectName();

            if (ret != DialogResult.OK)

            {

                e.Continue = ContinueType.SkipAll;

                return;

            }

 

        }

 

 

        // 查重发现重复的MARC输出文件

        OpenMarcFileDlg dlg = new OpenMarcFileDlg();

 

        dlg.Text = "请指定经查重发现重复后输出的 ISO2709 文件";

        dlg.FileName = "output.mrc";

 

        this.ap.LinkFormState(dlg, "dupmarc_dlg_state");

        dlg.ShowDialog(this.MainForm);

        this.ap.UnlinkFormState(dlg);

 

        if (dlg.DialogResult != DialogResult.OK)

        {

            DupOutputFile = null;

        }

        else

        {

            DupOutputFile = File.Create(dlg.FileName);

        }

 

    }

    public override void Inputing(object sender, BatchEventArgs e)

    {

        string strError = "";

 

        // MessageBox.Show(this.MainForm, this.Title);

 

        if (dupdlg == null)

        {

            e.Continue = ContinueType.SkipAll;

            return;

        }

 

        try {

 

        dupdlg.Activate();

        dupdlg.ServerUrl = this.ServerUrl;

        dupdlg.RecordFullPath = this.RecFullPath;

        dupdlg.Record = this.XmlRecord;

        int nRet = dupdlg.DoSearch(out strError);

        if (nRet == -1)

        {

            MessageBox.Show(this.MainForm, strError);

            return;

        }

 

        if (dupdlg.DupPaths.Length > 0)

        {

            m_nDupCount ++;

 

            this.SkipInput = true;

 

            if (DupOutputFile != null)

            {

                // 遇到重复,向外写ISO2709文件

                byte [] baResult = null;

                nRet = MarcUtil.CvtJineiToISO2709(

                    this.MarcRecord,

                    this.MarcSyntax,

                    OutputEncoding,

                    out baResult,

                    out strError);

                if (nRet == -1)

                {

                    MessageBox.Show(this.MainForm,

strError);

                    return;

                }

                DupOutputFile.Write(baResult, 0,

baResult.Length);

            }

 

        }

           

 

        }

        catch (Exception ex)

        {

            MessageBox.Show(this.MainForm, ex.Message);

            e.Continue = ContinueType.SkipAll;

            return;

        }

 

    }

    public override void OnEnd(object sender, BatchEventArgs e)

    {

        if (DupOutputFile != null)

        {

            DupOutputFile.Close();

        }

        MessageBox.Show(this.MainForm, "OnEnd");

    }

 

    private void dupdlg_Closed(object sender, EventArgs e)

    {

        dupdlg = null;

    }

}



发表时间: 2006-04-07 16:52:04
最后修改时间: 2006-04-07 16:53:31
  • 普通文章 数字平台系统二次开发体验(一)——数据导入批查重方案 孤舟蓑笠翁 2006-04-07 16:33:23[点击:68089]
  • 普通文章 启动批处理程序,打开方案管理器 孤舟蓑笠翁 2006-04-07 16:41:24 (ID:62) [点击:1659]
  • 普通文章 新增批处理方案 孤舟蓑笠翁 2006-04-07 16:45:18 (ID:63) [点击:1854]
  • 普通文章 编写方案主程序main.cs 孤舟蓑笠翁 2006-04-07 16:52:04 (ID:64) [点击:1542]
  • 普通文章 类库引用配置文件 孤舟蓑笠翁 2006-04-07 16:56:03 (ID:65) [点击:1622]
  • 普通文章 新增操作MARC数据程序,完成配置方案开发 孤舟蓑笠翁 2006-04-07 17:00:31 (ID:66) [点击:1481]
  • 普通文章 运行批处理程序,体验二次开发成果 孤舟蓑笠翁 2006-04-07 17:06:43 (ID:67) [点击:1837]
  • 普通文章 选择批处理方案 孤舟蓑笠翁 2006-04-07 17:14:38 (ID:68) [点击:1450]
  • 普通文章 选择查重方案,确定重复数据文件输出格式 孤舟蓑笠翁 2006-04-07 17:18:11 (ID:69) [点击:1746]
  • 普通文章 导入数据时,根据批处理方案调用查重功能模块 孤舟蓑笠翁 2006-04-07 17:22:42 (ID:70) [点击:1735]
  • 普通文章 二次开发的批处理方案的导入和导出 孤舟蓑笠翁 2006-04-07 17:25:18 (ID:71) [点击:1732]
  •  

    在线用户
    访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客 (我自己)   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客   访客访客
    当前栏目在线用户数 112, 总在线用户数 118