LbsMenuController üzerindeki "getControllerRegistry()" metodu ile "ControllerRegistry" nesnesine ulaşırız.. ControllerRegistry üzerinde ise, "setCollectExceptionsDontThrow(true);" metodu bulunmakta. Bu metodu "true" parametresi ile çalıştırdığımızda controller artık exception throw etmek yerine, oluşan exceptionları bir collection içerisinde toplamaya başlayacak( "menu.getControllerRegistry().setCollectExceptionsDontThrow(true);" ).
Controller'ın işi bittikten sonra, yine ControllerRegistry üzerindeki "getCollectedExceptions()" metodu ile toplanan exceptionları alabilirsiniz.
( "menu.getControllerRegistry().getCollectedExceptions();" )
package com.LPT.customization;
import java.math.BigDecimal;
import java.util.Vector;
import com.lbs.control.interfaces.ILbsController;
import com.lbs.controllers.ILbsControllerTask;
import com.lbs.controllers.gen.lo.LOXFDispatchBrowserController;
import com.lbs.controllers.gen.lo.LOXFDispatchController;
import com.lbs.controllers.gen.lo.LOXFDispatchController.TransactionsGridRowData;
import com.lbs.controllers.menu.LbsMenuController;
import com.lbs.remoteclient.IClientContext;
public class ControllerWholeSaleDispatch implements ILbsControllerTask {
public void execute(final LbsMenuController menu, final IClientContext context) {
Vector < Throwable > collectedExceptions = null;
try {
ILbsController controller = menu.launchSalesDispatches();
menu.getControllerRegistry().setCollectExceptionsDontThrow(true);
if (controller instanceof LOXFDispatchBrowserController) {
LOXFDispatchBrowserController controller1 = (LOXFDispatchBrowserController) controller;
controller = controller1.createNew_08WholesaleDispatch();
if (controller instanceof LOXFDispatchController) {
LOXFDispatchController controller2 = (LOXFDispatchController) controller;
controller2.setOrgUnit("01");
controller2.setWarehouse("01.01.02");
controller2.setAR_APCode("1");
TransactionsGridRowData rowData1 = controller2.getTransactionsGridRowData(0);
rowData1.setCode("1");
rowData1.setQuantity(new BigDecimal(1.0));
rowData1.setUnitPrice(new BigDecimal(100.0));
controller2.clickSave();
}
controller1.clickClose();
}
} catch (Exception e) {
//TODO handle your exceptions
System.out.println(e.getLocalizedMessage());
} finally {
collectedExceptions = menu.getControllerRegistry().getCollectedExceptions();
if (collectedExceptions != null && collectedExceptions.size() > 0) {
for (int i = 0; i < collectedExceptions.size(); i++) {
Throwable exception = collectedExceptions.get(i);
System.out.println(exception.getLocalizedMessage());
}
}
}
}
}
Merhaba,
Bu yapıda clickSave işlemi başarılı olmaz ise hata throw edecekmi? etmeyecek ise true/false bir değer dönmeliki işlemin neticesini bilelim. edecek ise sorun görünmüyor.
menu.getControllerRegistry().getCollectedExceptions() nesnesi hangi durumlarda kendisini sıfırlayacak.
Koddan paralel controller nesnesi kullanımı yaparken hata listesini nasıl ayrıştıracağız. Örneğin fatura controller'ı açıkken kasa tahsilat contoller'ına dallanıp nakit tahsilat kaydetme ve sonrasında faturanın işlemlerine devam etme gibi. yada çek senet tahsilat aktarımlarındaki iç içe controller kullanımları mevcut. bunlar ne olacak. bu hata listesi açılan controller nesnesi üzerinde erişilen o nesneye özel bir liste olsa daha iyi olur sanki.
Server tarafında bir çok kullanıcı controller ile aktarımlar çalışıtırıyor, aynı kullanıcı pararlel aktarımlar çalıştırabiliyor. Bu durumlarda hata listesinin durumu ne olur, hatalar bir birine geçermi?
Merhaba
collectedExceptions = (Vector) controller2.getControllerRegistry().getCollectedExceptions().clone();
controller2.getControllerRegistry().setCollectExceptionsDontThrow(false);
controller2.clickSave();
Cevap vermek için giriş yapmanız gerekmektedir.
Soru sormak için lütfen oturum açınız.
Controller hata yönetimi
21/01/16 11:52   j-Platform/LPTController ile yapılan aktarımlar sırasında karşılaşılan hataları, aktarım işlemi yarıda kesilmeden kaydet işlemi sonrasında liste şeklinde nasıl alabilirim?
controller hata yönetimi hata listesi