그래, 어렵지 않아. 잠금 문서가있는 잠금 데이터베이스를 만듭니다. 그들은 실제로 잠글 문서의 UNID 만 포함하면됩니다.
상담원이 문서 처리를 시작할 때 잠금 문서가 있는지 확인하십시오. 그렇지 않은 경우 생성하십시오. 하나 인 경우 지금 대기하거나 건너 뛰십시오. 문서 처리가 완료되면 잠금 문서를 삭제하십시오.
이것은 간단합니다. 우리가 Notes/Domino 5에 있었을 때, 필자의 어플리케이션 중 하나에서 문서 잠금을 처리하는 간단한 클래스를 작성하기까지했습니다. 아래의 코드는 다른 스크립트 라이브러리의 일부 함수와 변수를 참조하지만 아이디어를 얻을 수 있습니다. 나는 당신이 당신을 위해 일할 수있는 코드를 쉽게 수정할 수있을 것이라고 확신한다.
Option Public
Option Declare
Use "Functions.Globals"
Class DocumentLock
Private lockdb As NotesDatabase
Private lockview As NotesView
Private lockdoc As NotesDocument
Private lockservername As String
Private lockdbname As String
Private lnpdoc As NotesDocument ' Document to lock/unlock
Public Sub New(doc As NotesDocument)
me.lockservername = globals.GetValue("LockServer")
me.lockdbname = AppHomeDir + globals.GetValue("LockDBname")
If me.lockdb Is Nothing Then
Set me.lockdb = New NotesDatabase(me.lockservername, me.lockdbname)
End If
Set me.lockview = me.lockdb.GetView("LockedDocs")
Call me.lockview.Refresh()
Set me.lnpdoc = doc
End Sub
Public Sub LockMe()
Set me.lockdoc = New NotesDocument(me.lockdb)
me.lockdoc.Form="Locked"
me.lockdoc.LockUNID=me.lnpdoc.UniversalID
me.lockdoc.LockUser= globalcurrentusername
me.lockdoc.LockTime=Str(Now())
me.lockdoc.ClaimNumber = me.lnpdoc.GetItemValue("ClaimNumber")(0)
me.lockdoc.DocumentForm = me.lnpdoc.GetItemValue("Form")(0)
Call me.lockdoc.Save(True,True)
End Sub
Public Sub UnlockMe()
Call me.lockview.Refresh()
Set me.lockdoc = me.lockview.GetDocumentByKey(me.lnpdoc.UniversalID)
If Not me.lockdoc Is Nothing Then
Call me.lockdoc.Remove(True)
Call me.lockview.Refresh()
End If
End Sub
Public Function IsLocked(flagShowInfo As Boolean) As Boolean
Call lockview.Refresh()
Set me.lockdoc = me.lockview.GetDocumentByKey(me.lnpdoc.UniversalID)
If me.lockdoc Is Nothing Then
me.IsLocked = False
Else
me.IsLocked = True
If flagShowInfo = True Then
MsgBox "Document locked " & locktext & "." & Chr$(13) & "Please wait a while and try again.."
End If
End If
End Function
Public Function LockText() As String
LockText = "by " & LockUserName() & " at " & me.lockdoc.LockTime(0)
End Function
Public Function LockUserName() As String
Dim lockedby As String
lockedby = me.lockdoc.LockUser(0)
If lockedby = globalcurrentusername Then
LockUserName = "you"
Else
LockUserName = lockedby
End If
End Function
End Class
디자인을 다시 생각해 보시는 것처럼 들리 겠지만 사용자가 버튼을 클릭 할 때 클라이언트에서 코드를 직접 실행하지 않으시겠습니까? 너무 오래 걸리면 대신 코드를 최적화 할 수 있을까요? 프로파일 러를 사용하여 느린 속도를 확인하십시오. 그렇게하면 모든 일을 피할 수 있습니다. 나는 현재 사용자에게 보여지고있는 문서를 처리하기 위해 run-on-server 에이전트를 사용하지 않는다. –