数据回写代理修改方案

目的:避免项目编号生成重复,使获取文档信息一次性获取; 主要功能:对RDB的数据库连接换成连接池;增加一次性获取当前文档域值的类ReturnDocValue与重新再次获得最大项目号的函数;

实现方案: 1. NotesMain() 主函数类,调用ReturnCrmPro与ReturnRdbPro来完成回写Domino与回写关系型数据库Rdb。

2. ReturnCrmPro() 回写到Domino的CRM库类,把原先直接从当前文档中获值的语句替换成从ReturnDocValue返回的HashMap中获值;

3. ReturnRdbPro() 回写到Rdb中的项目与子项的类,把原先直接从当前文档中获值的语句替换成从ReturnDocValue返回的HashMap中获值;把原因用jdbc与数据库定义的连接替换成直接调用连接池;

4. ReturnAllValue() 从外界获取连接所需各参数的类(该参数去掉,因为连接参数在创建连接池的进行属性初始化的时候已经涵盖了)

5. DBConnecitonManager()创建连接池类,调用示例: DBConnectionManager dm = DBConnectionManager.getInstance(); Connection conn = dm.getConnection("jtds"); 其中jtds为db.properties配置文件中的连接池名称。

6. ReturnDocValue() 从当前文档中获取各个域值,返回一个HashMap来存储获取到的各个域值。参数是当前Session,其中项目编号的值需要调用getMaxProNo函数来获得。目的是,把当前文档的值一次性读取出来,放在一HashMap中,以此来减少频繁获取当前文档域值的次数。

7. getMaxProNo () 功能获取最大项目编号,参数当前Session、当前db、当前文档,返回项目编号。 实现方法:拿当前的文档中生成的项目编号projectNo与dbCRm库中的临时项目编号tempProNo(最大项目编号+1)进行比较。如果两不等,则把临时编号tempProNo赋值给当前文档的项目编号projectNo。 getMaxProNo函数的主要代码如下:

 public String getMaxProNo(Session session,Database  db,Document docCur){          
          String tempProNo="";
         try{ 
               //根据当前db获取简要表FM_CrmInfoParaSet文档docPro                  
           Document docPro= db.getProfileDocument("FM_CrmInfoParaSet","");
           //根据docPro获取客户关系管理CRM数据库的路径字符串pathCrm
           String pathCrm = docPro.getItemValueString("F_PathName");
           //根据pathCrm获取CRM所在的数据库dbCrm
           //System.out.println("crm路径:"+pathCrm);
           Database dbCrm=session.getDatabase("",pathCrm);
   //搜索VD_ProjectNoByPro视图下的第一个文档
   View view = dbCrm.getView("VD_ProjectNoByPro"); 
   Document maxDoc = view.getFirstDocument();
   if (maxDoc != null) {
    String strProjectNo = maxDoc.getItemValueString("F_ProjectN0");
    //System.out.println("当前CRM文档的最大项目编号:"+strProjectNo);
    int NowProNo = Integer.parseInt(strProjectNo.substring(2));
    int InProNo= 1000000+NowProNo + 1;
    tempProNo=Integer.toString(InProNo);
    tempProNo="PA"+tempProNo.substring(1);
   }    
   
  }         
  catch (Exception e)
  {System.out.println("获取项目编号出错!");} 
         
          return tempProNo;
        }

你可能感兴趣的:(数据回写代理修改方案)