DISKUSE
HCL Domino na NAS QNAP (1)
20.02.2024 10:34

Vložení přílohy do dokumentu MS Word (3)
14.02.2024 20:54

Problěmy s diakritikou. (4)
06.02.2024 17:34

AI pomocnici 
15.01.2024 10:16

Export do pdf souboru (1)
12.01.2024 23:11

Agent přestává fungovat (1)
18.11.2023 06:42

RTF - Computed (2)
19.10.2023 13:00

Čtení polí v neuloženém dokumentu 
08.10.2023 17:15


ŠKOLENÍ


REKLAMA


KOMENTÁŘE
Diskusní skupina: Programování


mastnakJak resit casove narocneho agent na frontendu
19.01.2023
07:50:46

ID: 3758.0

Ahojte, po letech mam na vas zkusene dotaz. Mam agenta, ktereho kvuli dlouhemu ( nekolik hodin ) behu poustim na frontendu. Prohledava vsechny dokumenty ve vsech db a hleda v names polich jmeno, ktere pote nahradi jinym. Klasicka uloha pro nahradu pracovniku 1:1. Kdyz ho spustim na serveru, tak ho po x minutach zarizne. Nechci po spravci, aby nastavoval rozsah treba na 10 hodin. Nakopne me nekdo, jak rozfazovat takhle narocnou vec na casove useky? Aby agent bezel napr 5 minut, jestli pak staci nejaky timeout? Nebo ulozit po x minutach stav, na ktere db a kterem dokumentu skoncil, ulozit do logu a zavolat sam sebe a vzit si udaje z logu? Trosku nevim kudy do toho, resil jste nekdo neco podobneho?
mh Agent snad běží na pozadí (backend)?
19.01.2023
08:26:43

ID: 3758.1


Jestli je to reálně, udělal bych pro urychlení vždy pohled podle pole se jménem, které chci nahradit.
mastnak agent
19.01.2023
08:52:58

ID: 3758.2


Agenta lze pustit z klienta ( na popredi ) nebo na pozadi. Kdyby sel udelat takovy pohled, tak by to zrychlilo, ale jedna se o cca 130 db u kterych je unifikovanych cca 30, zbytek jsou naprosto odlisne aplikace. Proto jsem zvolil zpusob, kdy projizdim vsechny items a pokud jsou to jmenna pole, tak tam provedu nahradu. Tech poli muze byt ve formularich nekolik.
VZ Možná přes admin proces?
19.01.2023
12:15:43

ID: 3758.3


Šlo by místo agenta použít změnu jména uživatele přes administrační proces?
Viz např.
link1
nebo
link2
mastnak Admin proces
19.01.2023
16:58:52

ID: 3758.4


Admin proces na tohle pouzit nelze.
Ale kolegove me nakopli spravnym smerem, pouzit fulltext. Takze optimalizuju, nejdriv kolekce pomocit FTsearch, to sebehne i na 50tis dokumentech rychle a pak kontrola vsech names poli jen v nalezene kolekci. Az to ucesu, podelim se.
mpistora tell amgr run
20.01.2023
11:58:35

ID: 3758.5


Časově náročného agenta lze spustit na serveru z konzole příkazem tell amgr run "db.nsf" 'nazevagenta'. Není pak plánovaný, takže se na něj nevztahuje omezení času plánovaných agentů a omezení, že v jedné db může současně bežet jen jeden plánovaný agent. Ten příkaz by šlo spustit z normálního plánovaného agenta.

Rozdělení na úseky by šlo udělat takto:
- agent by si někde psal, třeba do notes.ini serveru, ve které db pracuje a noteid naposledy zpracovaného dokumentu
- po každém dokumentu by zjistil, zda už je blízko limitu od spuštění, pokud ano, tak by skončil
- naplánován by byl každých 5 minut, při dalším spuštění by přeskákal již zpracované db, až by se dostal do rozpracované, tam by našel zapsaný dokument a pokračoval od něj (když by ho nenšel, tak zpracuje vše)

mpistora Zápis pozice
20.01.2023
17:07:00

ID: 3758.6


Pokud by agent nehlídal čas a nechal by se násilně ukončit vypršením limitu, zapisoval by "pozici" (resp. noteid zpracovaného dokumentu) po každém dokumentu. Nebo v Terminate agenta.
Pokud by hlídal čas, stačilo by zapsat "pozici" jen při řádném ukončení.
mastnak fulltext
23.01.2023
09:07:01

ID: 3758.7


mpistora: spis ted ladim to fulltextovy predzpracovani pomoci FTsearch. Budu muset ale se systemakem probrat navyseni FT_Max_Search_Results alespon na 100tis, fulltext totiz bere i pole s $ a napr $UpdatedBy. ktery v puvodnim kodu vynechavam me to plni limit 5000 vysledku. Skoda ze, db.FTSearch neumi vyloucit konkretni typ poli uz v zakladu.
VZ Vynechání polí
23.01.2023
11:17:52

ID: 3758.8


Nešlo by určitá pole vynechat třeba pomocí operátoru NOT v tom FT query?
Viz přehled FT operátorů na link1
mastnak operator
23.01.2023
13:29:20

ID: 3758.9


Jesetli dobre ctu napovedu k db.FtSearch, tak tam nelze operatory pouzit?
Vyresil jsem to takhle pomoci db.FTSearchRange kde je promenna start. Je to kostrbatejsi, ale myslim, ze pomoci FT querry se nedostanu na nazev pole?

Set nc = db.CreateDocumentCollection() 'nezdokumentovana funkce vytvori prazdnou kolekci

Dim start As Integer
start = 1
Set dc = db.FTSearchRange( """" & sOldName & """", 4999, _
FT_SCORES, FT_STEMS, start)

Set doc = dc.GetFirstDocument

While dc.Count > 0

While Not (doc Is Nothing)
Call nc.AddDocument(doc)
Set doc = dc.GetNextDocument(doc)
Wend

REM po naplneni 4999 dalsi hledani

start = start + 4999
Set dc = db.FTSearchRange("""" & sOldName & """", 4999, _
FT_SCORES, FT_STEMS, start)

Set doc = dc.GetFirstDocument

While Not (doc Is Nothing)
Call nc.AddDocument(doc)
Set doc = dc.GetNextDocument(doc)
Wend

Wend

MessageBox "Celkem nalezeno i v $" & CStr(nc.count)

Set doc = nc.GetFirstDocument
Dim p As integer
p = 0

While Not doc Is Nothing

ano = "n"
ForAll niItem In doc.Items

If Left(niItem.Name,1) <> "$" And (niItem.Type = AUTHORS Or niItem.Type = NAMES Or niItem.Type = READERS ) Then
If InStr(niItem.Text , sNewName) > 0 Then 'hleda klic pouze ve jmennych polich a vynecha $fields

ano = "a"

End If

End If

End ForAll

If ano = "a" Then
p = p + 1
Call rtitem.AppendText(p & ". - ")
Call rtitem.AppendDocLink( doc, db.Title )
Call rtitem.AddNewLine(1)

End If
Set doc = nc.GetNextDocument(doc)

Wend
MessageBox "Celkem nalezeno ve jmennych polich" & p
VZ Nápověda
23.01.2023
15:07:29

ID: 3758.10


V nápovědě na link1 nebo link2
je dole v sekci Query syntax mj. uvedeno: "Wildcards, operators, and other syntax are permitted. For the complete syntax rules, see "Refining a search query using operators" in NotesŸ Help."
Tzn. Zástupné znaky, operátory a další syntaxe jsou povoleny ...


mastnak Re
23.01.2023
16:56:19

ID: 3758.11


Projizdel jsem databaze a je hodne dokumentu, kde je uzivatel jak v $polich tak v names. Takze to reseni zhora to resi. Vyloucit dokumenty uz v ftsearch by bylo spatne.
VZ Jaká je to verze Domina?
25.01.2023
16:09:40

ID: 3758.12


V podstatě čím přesnější bude dotaz, tím míň dokumentů by bylo nutné procházet tím cyklem. Pro fulltext asi nejde napsat dotaz tak, aby našel všechny dokumenty se jménem a současně vynechal ty, kde je jméno třeba jen v $UpdatedBy .
Teoreticky by šlo dát do řádku Set dc = db.FTSearchRange( """" & sOldName & """", ...
přesnější podmínku, tedy něco jako:
"Jmeno Prijmeni" AND NOT [$UpdatedBy] CONTAINS "Jmeno Prijmeni"
Tzn. v LS:
Set dc = db.FTSearchRange( {" & sOldName & " AND NOT [$UpdatedBy] CONTAINS " & sOldName & "}, ...
Jenže zrovna takto formulovaná podmínka nic nenajde ani přímo v řádku fulltextu v LN klientovi, takže by nic nenašla ani v LS. Prostě asi nejde FT hledat hodnotu a přitom tu samou hodnotu v jednom poli vynechávat.

Kdyby to byla nějaká novější verze, která už podporuje Domino Query Languge (DQL), třeba by šlo využít třídu NotesDominoQuery (https://help.hcltechsw.com/dom_designer/10.0.1/bas
ic/H_NOTESDOMINOQUERY_CLASS.html ) a DQL dotazy (https://help.hcltechsw.com/dom_designer/10.0.1/bas
ic/dql_simple_examples.html ) ?
mastnak Re vz
25.01.2023
19:15:26

ID: 3758.13


Diky za tipy, urcite se me budou nekdy hodit.
FTSearchRange me to hezky vyresil. Upgrade neni tak nejak uz par let aktualni, abych ted nekecal, myslim ze mame 9.01.

Přidejte názor
Autor:
Profese:
E-mail: i
URL:
Phone:
Předmět:
Obsah příspěvku (i):

Kolikátý je den v měsíci ? (číslovkou bez tečky)