Запустите «Repeatagent» на Xpage - PullRequest
0 голосов
/ 11 марта 2019

Я бы хотел, чтобы следующий агент запускал нажатие кнопки, задача агентов - проверять, хочет ли пользователь (в данном случае запись в журнале) повторять дату.Поэтому я пытаюсь создать несколько документов одновременно.У меня был симулятивный Lotusscript, запущенный в приложении Notes, который, казалось, работал нормально, но я не знаю, как запустить его на моей 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()

End Sub

Для агента установлено значение «Разрешить ограниченные операции», «Запуск от имени веб-пользователя», Цель: нет, «Выбор списка агентов».

Javascript, предназначенный для выполнения Агента

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

может быть, я упускаю что-то важное здесь, если есть лучший способ сделать это, пожалуйста, дайте мне знать!

Я довольноплохо знакомы с заметками и вроде как сгруппировали это из меню справки, поэтому, если у вас есть решение, попробуйте объяснить очень подробно.

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

Я бы порекомендовал перевести этот агент в Java Bean и вызвать его непосредственно из события querysave вашей Xpage.

Если вам все еще нравится агент lotusscript, вам нужно изменитьклассы пользовательского интерфейса для бэкэнда (NotesUIDocument -> NotesDocument), поскольку у вас нет доступа к NotesUIWorkspace в бэкэндагенте.В этом случае обратите внимание на передачу documentcontext агенту

1 голос
/ 11 марта 2019

Есть пара вопросов, на которые нужно обратить внимание:

  • агенты, запускаемые на сервере, могут содержать только внутренние классы. Ваш агент содержит uidoc, который только NotesClient

  • вы пытаетесь получить значения из классов пользовательского интерфейса

Если вы хотите избавить себя от большой головной боли, вы переписываете этот код на JavaScript или Java как простую функцию. У вас есть сеанс и база данных в качестве объектов верхнего уровня. Вызовите их с помощью кнопки на XPage и передайте значение в качестве параметров.

...