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

Тема в разделе "Lotus - Программирование", создана пользователем Mady, 3 ноя 2007.

  1. Mady

    Mady Well-Known Member

    Регистрация:
    16 сен 2006
    Сообщения:
    66
    Симпатии:
    0
    Кто-нибудь знает как обновить предстваление после того как там поменял формулу отбора.
    refresh не помогает.
     
  2. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    notesUIWorkspace.ViewRebuild ?
     
  3. Mady

    Mady Well-Known Member

    Регистрация:
    16 сен 2006
    Сообщения:
    66
    Симпатии:
    0
    ага она самая!!! ;)
     
  4. Mihal

    Mihal Гость

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

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

    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 ...)
     
  6. Sandr

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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
     
  8. Sandr

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Да просто не у всех включен полнотекстовый поиск
     
  10. Sandr

    Sandr Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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]
    Вот тут наверное не будем спорить... а то флейм начнёться
    я замёрз и злой :)
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я за Db.Search!
    FTSearch - юзерориентированная штука.
    А Search - что сказал, то сделал.
     
  13. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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 документов...
     
  14. Vitizan

    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
     
  15. Vitizan

    Vitizan Гость

    И еще.:

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

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

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

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

    Sandr Гость

    а как он доки подгребает?
     
  17. K-Fire

    K-Fire Гость

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

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

    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
     
Загрузка...

Поделиться этой страницей