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

点击:1403

[顶层访客留言] [回复顶层(需要先登录)] [表状] [详细]
[回复留言] [回复(需要先登录)] [引用(需要先登录)]普通文章跟帖
文章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[点击:63397]
  • 普通文章 启动批处理程序,打开方案管理器 孤舟蓑笠翁 2006-04-07 16:41:24 (ID:62) [点击:1512]
  • 普通文章 新增批处理方案 孤舟蓑笠翁 2006-04-07 16:45:18 (ID:63) [点击:1727]
  • 普通文章 编写方案主程序main.cs 孤舟蓑笠翁 2006-04-07 16:52:04 (ID:64) [点击:1403]
  • 普通文章 类库引用配置文件 孤舟蓑笠翁 2006-04-07 16:56:03 (ID:65) [点击:1517]
  • 普通文章 新增操作MARC数据程序,完成配置方案开发 孤舟蓑笠翁 2006-04-07 17:00:31 (ID:66) [点击:1388]
  • 普通文章 运行批处理程序,体验二次开发成果 孤舟蓑笠翁 2006-04-07 17:06:43 (ID:67) [点击:1737]
  • 普通文章 选择批处理方案 孤舟蓑笠翁 2006-04-07 17:14:38 (ID:68) [点击:1324]
  • 普通文章 选择查重方案,确定重复数据文件输出格式 孤舟蓑笠翁 2006-04-07 17:18:11 (ID:69) [点击:1630]
  • 普通文章 导入数据时,根据批处理方案调用查重功能模块 孤舟蓑笠翁 2006-04-07 17:22:42 (ID:70) [点击:1632]
  • 普通文章 二次开发的批处理方案的导入和导出 孤舟蓑笠翁 2006-04-07 17:25:18 (ID:71) [点击:1642]
  •  

    在线用户
    (无) 
    当前栏目在线用户数 0, 总在线用户数 0