0

我将自己的 Java 代码添加到 Notes 复制器(如活动同步):

<plugin>
   <extension
     point="com.ibm.notes.client.notesSync">
     <unit
        class="com.ibm.notes.smartfile.RunOnReplication"
        id="com.ibm.notes.smartfile.RunOnReplication"
        image="icons/SmartFile.gif"
        label="IBM SmartFile action">
     </unit>
  </extension>
</plugin>

这会在每次作业运行时执行的复制器页面中添加一个条目。我的课看起来像这样:

public class RunOnReplication extends Job {
    public RunOnReplication(String name) {
      super(name);
    }

    @Override
    public IStatus run(IProgressMonitor arg0) {
        NotesSessionJob nsj = new NotesSessionJob("SmartFile Replication") {
            @Override
            protected IStatus runInNotesThread(Session s,
                IProgressMonitor monitor) throws NotesException {
            Engine engine = Activator.getDefault().getEngine();
            return engine.scheduledProcessing(s, monitor);
            }
        };
    nsj.schedule();
    return Status.OK_STATUS;
   }
}

现在我想知道:如何让nsjJob 中的监视器向外部类报告状态,以便将进度报告给复制器进度条——或者是否有其他方法可以在不创建新作业的情况下到达 NotesSession ?

4

1 回答 1

3

您不必使用 NotesSessionJob。取而代之的是,您还可以使用实例化 N/D java 类的“旧”方式。

public class RunOnReplication extends Job {
    public RunOnReplication(String name) {
      super(name);
    }

    @Override
    public IStatus run(IProgressMonitor arg0) {
        try {
            NotesThread.sinitThread();
            Session session = NotesFactory.createSessionWithFullAccess();
            //do your stuff here
        } catch (Exception e) {
            // do your error handling here
        } finally {
            NotesThread.stermThread();
        }
    return Status.OK_STATUS;
   }
}

顺便说一句:好主意...

于 2012-09-28T06:03:00.763 回答