Xpage 上的 运行 "Repeatagent"
Run "Repeatagent" on Xpage
我希望以下代理 运行 单击按钮,代理的工作是检查用户是否希望文档(在本例中为日记条目)重复日期。所以我想一次创建多个文档。我在 Notes 应用程序中有一个类似的 Lotusscript 运行ning,它似乎工作正常,但我不知道如何在我的 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()
结束子
代理设置为 "Allow restricted operations" , "Run as Web user" , Target:none, "Agent List selection".
Javascript应该执行代理
database.getAgent("Repeatagent").run()
也许我遗漏了一些重要的东西,如果有更好的方法,请告诉我!
我对笔记还很陌生,所以我从帮助菜单中将这些内容组合在一起,所以如果您有解决方案,请尝试进行非常广泛的解释。
谢谢
我建议将此代理转换为 Java Bean 并直接从 Xpage 的查询保存事件中调用它。
如果您仍然喜欢 lotusscript 代理,那么您需要将 UI 类 更改为后端 (NotesUIDocument -> NotesDocument),因为您无权访问NotesUI后端代理中的工作区。在这种情况下,看看将 documentcontext 传递给代理
您需要解决几个问题:
要在服务器上触发的代理只能包含后端 类。您的代理程序包含 uidoc,它仅是 NotesClient
您尝试从 ui 类
获取值
如果您想避免让自己头疼,您可以在 JavaScript 或 Java 中将代码重写为一个简单的函数。您将会话和数据库作为顶级对象。从 XPage 上的按钮调用它们并将值作为参数传递。
我希望以下代理 运行 单击按钮,代理的工作是检查用户是否希望文档(在本例中为日记条目)重复日期。所以我想一次创建多个文档。我在 Notes 应用程序中有一个类似的 Lotusscript 运行ning,它似乎工作正常,但我不知道如何在我的 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()
结束子
代理设置为 "Allow restricted operations" , "Run as Web user" , Target:none, "Agent List selection".
Javascript应该执行代理
database.getAgent("Repeatagent").run()
也许我遗漏了一些重要的东西,如果有更好的方法,请告诉我!
我对笔记还很陌生,所以我从帮助菜单中将这些内容组合在一起,所以如果您有解决方案,请尝试进行非常广泛的解释。
谢谢
我建议将此代理转换为 Java Bean 并直接从 Xpage 的查询保存事件中调用它。
如果您仍然喜欢 lotusscript 代理,那么您需要将 UI 类 更改为后端 (NotesUIDocument -> NotesDocument),因为您无权访问NotesUI后端代理中的工作区。在这种情况下,看看将 documentcontext 传递给代理
您需要解决几个问题:
要在服务器上触发的代理只能包含后端 类。您的代理程序包含 uidoc,它仅是 NotesClient
您尝试从 ui 类
获取值
如果您想避免让自己头疼,您可以在 JavaScript 或 Java 中将代码重写为一个简单的函数。您将会话和数据库作为顶级对象。从 XPage 上的按钮调用它们并将值作为参数传递。