The lotus java agents don’t have classes to manage the UI objects, such as in LotusScript with the classes NotesUIDocument or NotesUIView.
It’s true that you can find several info about the Notes Client Java UI API in internet, but these classes are not officially supported.
In this post I explain 3 ways to obtain the currently open view or document inside an agent java.
You take advantage of the LotusScript UI classes that can easily manage the UI objects, and you pass them to the java agent using the variables in the notes.ini or a profile document or a notes document.
Lotus provides the method QueryAccessRoles of the NotesDatabase class to get the roles of a user and there are no methods to get users belonging to a role, but you can get them by combining IsRoleEnabled of the NotesACLEntry class with the function getUsersByGroup that I wrote in a previous article.
There is not a method in lotusccript to get the list of all users belonging to a group, and to complicate matters, groups can contain other groups as members.
To solve this problem I wrote getUsersByGroup function that returns the list of users belonging to a group, provided that:
- the public names.nsf is accessible
- users have a document “Person” in the public address book
- groups are defined in the names
- the maximum number of nested groups is 100, but you can change this setting changing the variable maxNestedGroup
If you want to open a document in a dialog box you can use two methods:
I discovered that you can not debug the Terminate event of a form with Lotus Notes Designer 8.5.3 and I do not understand why.
I’m sure that once you could.
If a user sends an e-mail using an agent, he seems to be the sender or the agent signer seems to be the sender if the agent is scheduled.
This is not always the desired behavior, especially in the case of scheduled agents in which the sender of the e-mail seems to be the developer of that agent or the administrator of the server.
The method getDocumentByUNID NotesDatabase class returns the appropriate document for the UniversalUnid passed as argument, but it does not return Nothing if it does not find the document but the error 4091 (lsERR_NOTES_BAD_UNID).
Then a code to handle this would be the following:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim unid As String
Set db = s.Currentdatabase
unid = "1EC53F4B3D66557BC12579A600404BE2"
On Error 4091 GoTo Error4091Handler ' lsERR_NOTES_BAD_UNID
Set doc = db.Getdocumentbyunid(unid)
On Error GoTo 0
Print "Document found"
Print "Document not found"
The method UpdateProcessedDoc in NotesSession class can be used to mark a document as already processed by an agent