在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)
{
}
}
}