• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Mady
  • Дата начала
M

Mady

Кто-нибудь знает как обновить предстваление после того как там поменял формулу отбора.
refresh не помогает.
 
M

Mihal

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

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

Vitizan

У меня проблема такого порядка.
Можно ли какимто образом сначала создать подмножество идентификаторов документов из одной вьюхи, а потом по этому подмножеству вытащить то что мне надо. В моем случае события по одному документу. Я работаю с воркфлоу. и мне надо все события по документу например за 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

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

morpheus

<!--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

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

morpheus

Да просто не у всех включен полнотекстовый поиск
 
S

Sandr

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

morpheus

<!--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]
Вот тут наверное не будем спорить... а то флейм начнёться
я замёрз и злой :)
 
O

Omh

Я за Db.Search!
FTSearch - юзерориентированная штука.
А Search - что сказал, то сделал.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
<!--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

Это понятно коллеги. насчет коллекции.
Но задача такая. (кто работает в воркфлоу)
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

И еще.:

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

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

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

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

K-Fire

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

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

Vitizan

Вьюха такая:
Поля:
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:eek:racle:thin:mad: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
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!