Динамическое представление

Mady

Well-Known Member
16.09.2006
65
0
#1
Кто-нибудь знает как обновить предстваление после того как там поменял формулу отбора.
refresh не помогает.
 
M

Mihal

Гость
#4
Считаю своим долгом предупредить, что для выполнения операции ПЕРЕСТРОЕНИЯ индекса необходим уровень прав не ниже дизайнера. Поэтому для "промышленой эксплуатации" такие вещи лучше не делать. Там права, как правило, не выше редактора.

P.S. Так, на всяк случай...
 
V

Vitizan

Гость
#5
У меня проблема такого порядка.
Можно ли какимто образом сначала создать подмножество идентификаторов документов из одной вьюхи, а потом по этому подмножеству вытащить то что мне надо. В моем случае события по одному документу. Я работаю с воркфлоу. и мне надо все события по документу например за 2 посл дня. и качать это мосле некой модификации в оракл. можно конечно взять дока за 2 посл месяца, но это весьма нестабильно и берет много времени.



Пытался это сделать через профильный документ - не выходит, через DBlookup - тоже нельзя, пытался присвоить строку, но говорит очень длинная. (у меня в отборе получается около 1000 unid)

Типа SELECT @Contains('unid1,unid2,unidN......'; unid)

эквивалент SQL:
SELECT * FROM Tab WHERE Field in(SELECT DISTINCT Field FROM Tab WHERE ...)
 
S

Sandr

Гость
#6
Если на выходе нужно получить коллекцию документов, а не вьюху, то используйте notesDatabase.FTSearch
 

morpheus

скриптописец
07.08.2006
3 915
1
#7
<!--QuoteBegin-Sandr+12:11:2007, 11:09 -->
<span class="vbquote">(Sandr @ 12:11:2007, 11:09 )</span><!--QuoteEBegin-->то используйте notesDatabase.FTDearch
[snapback]85224" rel="nofollow" target="_blank[/snapback]​
[/quote]
лучше уж просто notesDatabase.Search
 
S

Sandr

Гость
#8
Сейчас опять начнутся споры, что лучше и что быстрее.. :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Да просто не у всех включен полнотекстовый поиск
 
S

Sandr

Гость
#10
Долго включить? Да и желательно включить.. если с базой работают....
 

morpheus

скриптописец
07.08.2006
3 915
1
#11
<!--QuoteBegin-Sandr+12:11:2007, 11:19 -->
<span class="vbquote">(Sandr @ 12:11:2007, 11:19 )</span><!--QuoteEBegin-->Да и желательно
[snapback]85230" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вот тут наверное не будем спорить... а то флейм начнёться
я замёрз и злой :)
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#12
Я за Db.Search!
FTSearch - юзерориентированная штука.
А Search - что сказал, то сделал.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#13
<!--QuoteBegin-Sandr+12:11:2007, 12:19 -->
<span class="vbquote">(Sandr @ 12:11:2007, 12:19 )</span><!--QuoteEBegin-->Долго включить? Да и желательно включить.. если с базой работают....
[snapback]85230" rel="nofollow" target="_blank[/snapback]​
[/quote]

Поправить инишник, чтобы искал более 5000 документов...
 
V

Vitizan

Гость
#14
Это понятно коллеги. насчет коллекции.
Но задача такая. (кто работает в воркфлоу)
1. Есть Биндер который приходит к пользователю, он может быть в прогрессе, вертеться туда сюда, а потом завершение этапа, и неизвестно сколько времени может наход в таком сосотоян Биндер до завершения.
2. Пока я беру все документы за послед 2 мес. Сортирую по folderIdOS и Дате ASC
3. Пробегаю сверху вниз, все Биндеры. если этап не завершен, беру в память дату, как увижу завершен, прикладываю эту дату и кидаю в Оракле. если там такой док есть, Оракл отвергает.

Это офигенная рутина.

А хочу:
Взять все заверш этапы за 2 дня. По ним получить Биндер. Опятьже отсортировать, без этого нельзя и все . Было бы быстрее. и база бы не ругалась оч много. Без вьюхи отсортир никак нельзя.

Есть ли у вас господа решение?

вид у меня такой:
unid1 0
unid1 0
unid1 0
unid1 1
unid2 0
unid2 1
...........
unidN 0
unidN 0
unidN 1
 
V

Vitizan

Гость
#15
И еще.:

Бьюсь с агентом по закачке в Оракл. на Java уже неделю
Я понимаю что дело во мне но все же.

Он должен гад качать примерно 2000 записей в день.
Если запускаю кнопкой. Отрабатывает как миленький.

Если по рассписанию ночью - пару сотен бросит и пошлет подальше.
Ошибок не выдает. Говорит все успешно (Systen.out.print("Success")). но я то знаю что врет.

Подскажиче че делать. достал он меня.
 
K

K-Fire

Гость
#17
Vitizan, мы работаем с LWF уже много времени, я мог бы помочь, если бы понял задачу :D

Пока я к сожалению вьехал только то что вы доки по какому-то условию отбора хотите экспортировать в Оракл.
Но что это за доки, и что за условие отбора - совершенно непонятно. Попробуйте написать поподробнее, желательно с примером.
 
V

Vitizan

Гость
#18
Вьюха такая:
Поля:
Folder ASC| End Date ASC| Flag (@If(Action="Этап завершен";"1";"0"))

Selection Formula = "SELECT FOLDERIDOS_COPY!="" & (Action="Этап завершен" | Action="Доставлено") & ActTime>=@Adjust(@Now;0;-1;0;0;0;0)"


Агент такой:

import lotus.domino.*;
import java.sql.*;
import java.lang.*;
import java.text.*;

//***** ЗАКАЧКА ИЗ ЖУРНАЛА ПРЕДКОНТРАКТНОЙ РАБОТЫ *****
//сначала запускается RefreshStatViews для обновления вьюшек

public class JavaAgent extends AgentBase {
Document dc=null;

public void NotesMain() {
Session s = getSession();
Connection cnn=null;
Statement stmt=null;
ResultSet rs=null;
int dcs=0;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strAny="SELECT username,instanceos,subject,activityname,folderidos_copy,contractdepexecutorpers
on,"+
"contractdepexecutor,contractexecutor,instanceunid,contractsignernamelist,co
ntractcontragent,"+
"duedateos,start_time,end_time,form,unid,alt_start_time,ins_time,decision "+
"FROM xxlotus_journal_contracts WHERE unid=''";
try {
//создать соединение к Oracle
Class.forName("oracle.jdbc.driver.OracleDriver");
cnn = DriverManager.getConnection("jdbc:oracle:thin:@0.0.0.0:1521:prod","xx","xx");
stmt = cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery(strAny);

String fld="";
int x=0;
Database db=s.getDatabase("UprFlow01/Upr/Uralkaly","PreContract\\Journal.nsf");
View vw=db.getView("vSortedFolders");
Timestamp[] dt=new Timestamp[2];
DateTime dd=null;

dc=vw.getFirstDocument();
while (dc!=null){
if (!dc.getItemValueString("FOLDERIDOS_COPY").equals(fld)) {dt[0]=null;dt[1]=null;x=0;}
if (dc.getItemValueString("Action").equals("Доставлено")) {
if (x==0) {dd=(DateTime)dc.getItemValue("ActTime").elementAt(0);
dt[0]=new Timestamp(dd.toJavaDate().getTime());}
x++;
dd=(DateTime)dc.getItemValue("ActTime").elementAt(0);
dt[1]=new Timestamp(dd.toJavaDate().getTime());}
else {
if (dt[1]!=null) {dcs+=(byte)addRow(rs, dc, dt[0], dt[1]); x=0;}
}

fld=dc.getItemValueString("FOLDERIDOS_COPY");
dc=vw.getNextDocument(dc);
} //wend
s.recycle();rs.close();stmt.close();cnn.close();
} //end try

catch (SQLException sqle) {System.err.println("SQL error: "+sqle.getErrorCode()+": "+sqle.getMessage());}
catch (Exception e) {e.printStackTrace();}
finally {System.out.println("'DropEventsToOraB' Inserted " + dcs + " documents");}
} //end void

private byte addRow(ResultSet rs,Document dc,Timestamp t0,Timestamp t1) {
java.util.Date dtc=new java.util.Date();

try {
rs.moveToInsertRow();
rs.updateString("UNID", dc.getUniversalID());

rs.updateString("FORM",dc.getItemValueString("FORMNAME"));
rs.updateString("USERNAME",dc.getItemValueString("ActivityOwnerOS_copy"));
rs.updateString("INSTANCEOS",dc.getItemValueString("INSTANCEOS"));
rs.updateString("SUBJECT",dc.getItemValueString("SUBJECT"));
rs.updateString("ACTIVITYNAME",dc.getItemValueString("ACTIVITYNAME"));

rs.updateString("DECISION",dc.getItemValueString("APPROVALCHOICEOS"));
rs.updateString("FOLDERIDOS_COPY",dc.getItemValueString("FOLDERIDOS_COPY"));
rs.updateString("CONTRACTDEPEXECUTORPERSON",dc.getItemValueString("CONTRACTDEPEXECUTORPERSON"));
rs.updateString("CONTRACTEXECUTOR",dc.getItemValueString("EXECUTOR"));
rs.updateString("CONTRACTDEPEXECUTOR",dc.getItemValueString("CURRENTDEPARTMENT"));

rs.updateString("CONTRACTCONTRAGENT",dc.getItemValueString("CONTRAGENT"));
rs.updateString("INSTANCEUNID",dc.getItemValueString("INSTANCEUNID"));
rs.updateString("CONTRACTSIGNERNAMELIST",dc.getItemValueString("CONTRACTSIGNERNAMELIST"));

DateTime dd=null;
if (canBeUpdated("DUEDATEOS")) {
dd=(DateTime)dc.getItemValue("DUEDATEOS").elementAt(0);
rs.updateTimestamp("DUEDATEOS",new Timestamp(dd.toJavaDate().getTime()));}

if (canBeUpdated("ACTTIME")) {
dd=(DateTime)dc.getItemValue("ACTTIME").elementAt(0);
rs.updateTimestamp("END_TIME",new Timestamp(dd.toJavaDate().getTime()));}

rs.updateTimestamp("ALT_START_TIME",t0);
rs.updateTimestamp("START_TIME",t1);
rs.updateTimestamp("INS_TIME",new Timestamp(dtc.getTime()));
try {rs.insertRow();return 1;}
catch (SQLException sqle) {rs.cancelRowUpdates();}
}
catch (Exception e) {}
return 0;
}

private boolean canBeUpdated(String nm) {
try {
String itm=(String)dc.getFirstItem(nm).getText();
if (itm.length()>0) return true;
}
catch (Exception e) {}
return false;
}
} //end class