iT邦幫忙

DAY 40
2

鐵之 Just Do Lotus Notes系列 第 40

Calling Lotus Notes Agent From .NET

在Lotus Notes代理程式算是一個強項,但是強人還是有弱點的(葉問一次也只能打10個)
代理程式最短呼叫時間為5分鐘,而且Notes本身要沒有當掉,所以從外部來呼叫Lotus Notes代理程式
也是一個必要的課題,我們就一起來學學以下的程式機制吧.


Lotus Notes Agent有個小缺點就是最小定時呼叫執行時間只能5分鐘,有時有特別的應用需要短時間作呼叫,這是後就要利用外部的力量來做處理.
以下範例我們建立一個 .NET Microsoft Visual Studio 2010 的應用程式來做呼叫.

Step01:在欲呼叫的資料庫裡建立一代理程式 Ex:CallME

Step02:撰寫.NET 程式

Step03:使用 .NET程式來讀取所有該資料庫代理程式並可對點選代理程式作呼叫

Step04:Server Console觀看被呼叫執行情形.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;  //  Debug
using Domino;

namespace CallingNotesAgent
{
    public partial class Form1 : Form
    {
         NotesSession session = new NotesSession();
         NotesDatabase NotesDb;
        public Form1()
        {
            InitializeComponent();
            session.Initialize("");
            NotesDb = session.GetDatabase("hub/wwcorp", "mail\\dnotes.nsf", false);  //修改這
        }
        private void button3_Click(object sender, EventArgs e)
        {
            if (NotesDb == null)
            {
                MessageBox.Show("Could not access Notes NSF file!", "",
                MessageBoxButtons.OKCancel); // If Mail db not accessible, return an error
                return;
            }
            else {
                GetAgentList();
            }
        }

        public void GetAgentList()
         {
             // NotesDatabase NotesDb = session.GetDatabase("hub/wwcorp", "mail\\dnotes.nsf", false);
             object[] items = (object[])NotesDb.Agents;
             foreach (NotesAgent item in items)
	         {
                 Debug.WriteLine(item.Name.ToString());
                 listBox1.Items.Add(item.Name.ToString());
	         }
             //MessageBox.Show(agentString);
         }
        public void RunAgent()
        {
            NotesAgent theAgent;
            theAgent = NotesDb.GetAgent(listBox1.SelectedItem.ToString());
            //theAgent.Run();  // Could not execute macro:LotusScript Error - Cannot load resource string or resource file missing (nse*, nsk*, etc).
            theAgent.RunOnServer();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem != null )
             {
                    MessageBox.Show(listBox1.SelectedItem.ToString());
             }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (NotesDb == null)
            {
                MessageBox.Show("Could not access Notes NSF file!", "",
                MessageBoxButtons.OKCancel); // If Mail db not accessible, return an error
                return;
            }
            else
            {
                RunAgent();
            }
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
    }
}

上一篇
XPages上不支援@WebDbName的函數的解決方案
下一篇
Csharp(C#) 使用Domino Server寄信
系列文
鐵之 Just Do Lotus Notes41

1 則留言

我要留言

立即登入留言