Servet.Karabas

Bir firmaya login durumda iken başka bir firma kayıtlarının güncellenmesi

  j-Platform/LPT

Bir tanımın birden fazla firmaya aktarılabiliyor. Bunun için ön kabullerimiz var. Örneğin malzeme kartlarının tüm firmalarda olması lazım, yoksa aktarımlar sorun yaşayacak.

Sorum şu: 50 firma aktarımından 1 tanesinde sorun çıkarsa hiç birisini aktarma gibi bir şart olursa işte bunu aşağıdaki gibi AtomicOperation olarak nasıl yapabilriiz.


AtomicOperation


Servet.Karabas
public boolean AddOperation(IServerContext context, final int kacAdet){
          
try { 
context.execute(new AtomicOperation("Onder.Deneme")
  {
  public Boolean execute(IServerContext context) throws AtomicException
  {
   boolean res=true;
   for (int i = 0; i < kacAdet; i++) {
     IObjectFactory objectFactory = context.getServerObjectFactory();
     FactoryParams factoryParams = new FactoryParams();
     factoryParams.setCustomization(ProjectGlobals.getM_ProjectGUID());
     factoryParams.getVariables().put("firm", new Integer(2));
     factoryParams.getVariables().put("period", 1);
     CustomBusinessObject newCBO = ProjectUtil.createNewCBO("CBODOCTOR");
     ProjectUtil.setMemberValue(newCBO, "Name", "Name"+i);
     ProjectUtil.setMemberValue(newCBO, "SurName", "SurName"+i);
     boolean persist = false;
     try {
       persist = objectFactory.persist(newCBO, factoryParams);
     } catch (ObjectFactoryException e) {
     // TODO Auto-generated catch block
       e.printStackTrace();
       res = false;
     } catch (SessionTimeoutException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       res = false;
     } catch (SessionReestablishedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       res = false;
     }
       if (!persist){
        res = false; 
       }
     }
     return res;
     }
}
                    );
             } catch (AtomicException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    return new Boolean(false);
             }
             return new Boolean(true);
       }
}

AtomicOperation 'da tablo locklarınıyor ve operasyon tamamlanıncaya kadar persist true gelse de transaction commit edilmemiş oluyor.

 


26/03/15 12:42

Cevap vermek için giriş yapmanız gerekmektedir.