11. januar 2007 - 14:15Der er
20 kommentarer og 1 løsning
Centralt "flag" som kan læses/opdateres af flere brugere
Jeg har en database som står for noget udprintning. Der må kun være én bruger der udskriver ad gangen fra databasen og det vil jeg gerne kunne styre ved at sætte et "flag" et eller andet centralt sted. Jeg har prøvet at benytte et profile dokument, men det virker ikke da det kommer i cache og værdien bliver derfor ikke opdateret når der er andre det ændrer det.
Er der nogen der har en god løsning til dette problem ?? Skal jeg bare bruge et normalt dokument i databasen og lade brugerene læse/opdatere værdien i dette ?? Jeg tror at der findes en mere smidig løsning...
Ikke for at smide grus i dit maskineri, men hvad med lokale udgaver af basen? Forhindrer du at man kan tage lokale kopier eller køre den andre steder fra en på den ENE server?
En simpel måde kan være at bruge "Document Locking". Den første bruger der går ind i basen, hvor man åbner et framset, hvor der i et lille frame samtidig åbnes et dokument i EDIT-mode. Efterfølgende brugere får besked på at dokumentet allerede er åbnet af en anden bruger.
En anden metode er at undersøge om der findes et "låsedokument". Hvis ja, giv besked til brugerne (evt. med navn på brugeren som har låst) og gå ud. Hvis der ikke findes et "låsedokument", så opret et og fortsæt.
Når brugeren går ud af databasen, så slettes låse-dokumentet (kontroller om det er MIT dokument)
ja, databasen kommer kun til at ligge et sted. Men hvis der må også godt printes fra en replika/kopi af databasen bare der ikke er to brugere der printer fra den SAMME database.
Printdatabasen indeholder en række forskellige dokumenttyper (forms), og når brugeren udskriver en række dokumenter skal disse sorteres på en bestemt måde. For at lave denne sortering overføres alle dokumenterne først til en folder, som har den rigtige sortering og herfra udskrives de. Der skulle så gerne findes en folder til hver enkelt bruger, for at de ikke får blandet deres udskrifts-dokumenter. Problemet er at vores brugere kører på en terminal server og benytter det samme notes id, derfor kan jeg ikke kende forskel på dem. Det er derfor nødvendigt at gøre den ene brugers print færdig før end en anden bruger kan starte sit print....
Måske er det en lidt tung måde at gøre det på, men det fungerer fint og jeg kan ikke lige se andre løsninger på problemet. Kan du ;o)
Er du bimmer mand .... samme Notes.ID til alle brugere .... Så kan man jo ikke kende forskel på nogen af dem. Det ER muligt at køre Notes med personlige Notes.id fra en TS ....
Logger de på TS med en fælles konto eller en brugerkonto? Så kan man evt. identificere brugerne ud fra deres NT-navn, som sikkert kan hentes frem via nogle systemkald.
De kan kun printe fra printdatabasen og har ikke adgang til andre databaser fra TS, så der er ikke den store risiko ved det. De har hver et personligt ID som de bruger til Notes mail mv.
Måske jeg kan kende forskel på dem ved deres NT-navn, men ved ikke lige hvordan det kan gøres. Men med mindre der ligger en nem løsning på at kende forskel på dem vil jeg hellere lave så der kun er én bruger der kan printe ad gangen. Det vil være en fin løsning for os.
Ved du om det er holbart at have et normalt notes-dokument som alle brugerene kan læse/opdatere en værdi i ? Eller vil dette ikke virke når der er flere brugere ?
Det er jo lige spørgsmålet --- jeg tror document locking er bundet op imod brugernavn.
En anden mulighed er følgende: Alle der går ind prøver at åbne et helt specielt dokument (få fat i det via DOCUNID). Når der i dokumentet står "Jeg er fri, tag mig!!", så skrives til det: "Taget kl. XX:XX". Og når man går ud, så sættes værdien tilbage til "Jeg er fri, tag mig!!".
Den løsning du beskriver i din sidste kommentar ligner det jeg allerede har lavet, men jeg er ikke helt sikker. Du skriver at der åbnes et "specielt dokument", mener du en speciel dokumenttype, eller bare et dokument som bruges til dette formål ? Du skriver også at det skal hentes via DOCUNID, kan det ikke bare hentes fra et view eventuelt ?
Men ellers synes jeg at det lyder som den rigtige løsning, jeg er dog stadig i tvivl om det vil virke med flere samtidige brugere, men det kan komme an på en prøve.
Ja, hvordan du får fat i dokumentet er ligegyldig (View, DocUNID etc). Blot skal du være sikker på at det er PRÆCIS det samme dokument alle prøver at få fat i. Derfor forslog jeg DocUNID, som du hardkoder ind i applikationen.
Hvad ville der ske hvis brugeren tilgik den pågældende applikation fra deres egen arbejdsstation (og ikke TS)?
Jeg er nu ret sikker på at det ikke er specielt svært at få fat i Brugernavn fra TS-login ... hvis du har det, så ville dine problemer være løst, ikke?
Hvorfor sørger du ikke for at brugerne kan logge på med deres egen NOTESID i TS-sessionen? Er det fordi de kun bruger Notes i TS som printfacilitet?
Hvordan er NOTESDATA-biblioteket struktureret for TS-brugerne? De må jo have hver deres egen NOTESDATA, ikke? Så har de også deres egen DESKTOP.DSK, ikke? Så kan du måske redde det hele nemt ved at oprette de fågeældende foldere som PRIVATE, så placeres de nemlig i DESKTOP.DSK, og ikke i databasen ...
Du må gerne svar på flere af spørgsmålene, det gør det nemmere at hjælpe :-)
Jeg ved ikke helt hvordan det er installeret på TS, da det ikke er min "afdeling". Men jeg kan selvfølgelig finde ud af det.
Du har ret i at vi kun bruger Notes i TS til at printe. De har en anden Notes klient til mail osv. Når de skal printe logger de på TS med det samme brugernavn og jeg kan derfor ikke bruge løsningen med private folders. Det var ellers den løsning jeg havde til at køre inden det blev testet på TS...
Men jeg vil prøve at bruge løsningen med en dokument til at styre adgangen.
Tak for dine gode råd og kommentarer, hvis du smider et svar er der points.
Jeg skal lige høre om du har været udsat for at metoder "OpenView" på NotesUIDatabase åbner et forkert view/folder ?? Når jeg åbner en private folder med denne metoder åbner den nogle gange det første view fra listen af views i stedet for...??
Eller en løsning der anvender Notes/Dominos indbyggede Lock facilitet. Den anvender DocumentLocking. Du kan også enable Design locking, men jeg ved ikke om det kun virker med Designeraccess. DocumentLocking burde altid virke.
This view action attempts to lock the current document for all members of the "Guys" group. Locking is successful if the document is not yet locked, or the document is locked but the effective user is a member of Guys. A provisional lock is allowed if the administration server is not available. %INCLUDE "lsxbeerr.lss"
Sub Click(Source As Button) Dim session As New NotesSession Dim db As NotesDatabase Set db = session.CurrentDatabase
REM Exit if locking is not enabled If Not db.IsDocumentLockingEnabled Then Print "Document locking not enabled" Exit Sub End If
REM Get selected document Dim dc As NotesDocumentCollection Dim doc As NotesDocument Set dc = db.UnprocessedDocuments Set doc = dc.GetFirstDocument
REM Lock the document REM Not locked if return is False or error is raised On Error Goto errh If doc.Lock("Guys", True) Then Print "Document locked" Else Print "Document NOT locked" End If Exit Sub errh: If Err() = lsERR_NOTES_LOCKED Then Print "Document NOT locked" Else Messagebox "Error " & Err() & ": " & Error(),, "Error" End If Exit Sub End Sub
Tak for indput. Det ser ud som om at jeg kan bruge dokumentlocking, som du skriver. På nuværende tidspunkt bruger jeg dog et dokument, hvor jeg tjekker på om en værdi er sat eller ej. Jeg har dog ikke testet det med mange brugere, det kan jo være at det giver lidt problemer...
Hvad mener du med den foldertype du bekriver ? Skulle den være unik for hver bruger, selv fra en TS server ?
Ja, det er den, under forudsætning at hver bruger har sit eget NOTESDATA. Disse Desktop-views placeres nemlig i --- gæt selv --- DESKTOPx.NDK. Derfor er de "personlige".
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.