在Xpage上运行“Repeatagent”

问题描述 投票:0回答:2

我希望以下代理程序能够单击按钮,代理程序作业是检查用户是否希望文档(在本例中为日记帐分录)是重复日期的。所以我试图一次创建多个文档。我在Notes应用程序中运行了一个类似的Lotusscript,似乎运行正常,但我不知道如何在我的Xpage上运行它。码:

Sub Initialize
Dim session As New NotesSession 
Dim db As NotesDatabase
Dim UIdoc As NotesUIDocument
Dim doc As NotesDocument 
Dim Workspace As New NotesUIWorkspace
Set db = session.CurrentDatabase
Set UIdoc = workspace.CurrentDocument
Dim Radio As String
Dim String1 As String
Dim Counter As Integer
Print("Repeat Agent Triggered and Variables Initialized")
String1 = UIdoc.FieldGetText("SubjectTX")
Radio = UIdoc.FieldGetText( "RepeatValueTX" )
Dim ret As Variant 
Dim Newdate As New NotesDateTime(UIdoc.FieldGetText("DiaryDateDT")) 
Print(Radio)
Print(String1)
Print("Select Case...")
Select Case Radio
    Case "Day": 
        Print("Case Day in use")
        For Counter = 1 To 7
            Call Newdate.AdjustDay( 1 )
            Set doc = db.CreateDocument
            doc.SubjectTX = "Day Revision " + String1
            doc.DiaryDateDT = NewDate
            Call doc.Save( True, True )
        Next
    Case "Week":
        Print("Case Week in use")
        For Counter = 1 To 4
            Call Newdate.AdjustDay( 7 )
            Set doc = db.CreateDocument
            doc.SubjectTX = "Week Revision:" + String1
            doc.DiaryDateDT = NewDate
            Call doc.Save( True, True )
        Next
    Case Else: 
        Print("No Case or Saving and Closing")
End Select
   Print("exited switch, Saving and Closing now")
   Call UIdoc.Save()
   Call UIdoc.Close()

结束子

代理设置为“允许受限操作”,“以Web用户身份运行”,目标:无,“代理列表选择”。

Javascript应该执行代理

database.getAgent("Repeatagent").run()

也许我错过了一些必要的东西,如果有更好的方法,请告诉我!

我是一个相当新的笔记,并从帮助菜单中将它们整合在一起,所以如果你有一个解决方案,请尝试解释非常广泛。

谢谢

javascript xpages lotus-notes lotusscript lotus
2个回答
2
投票

我建议将此代理转换为Java Bean并直接从您的Xpage的querysave事件中调用它。

如果您仍然喜欢lotusscript代理,那么您需要将UI类更改为后端(NotesUIDocument - > NotesDocument),因为您无权访问backendagent中的NotesUIWorkspace。在这种情况下,请看看将documentcontext传递给代理商


1
投票

您需要解决几个问题:

  • 要在服务器上触发的代理只能包含后端类。您的代理包含仅作为NotesClient的uidoc
  • 你试图从ui类中获取值

如果你想为自己节省大量的麻烦,可以将JavaScript或Java中的代码重写为一个简单的函数。您将会话和数据库作为顶级对象。从XPage上的按钮调用它们并将值作为参数移交。

© www.soinside.com 2019 - 2024. All rights reserved.