Servet.Karabas

remote call ile çalışan controller örneği

  j-Platform/LPT

sunucu arayüzünden çalıştıracağım bir emulating controller metoduna ihtiyacım var.

Örnek kaynak kodu var mıdır?


remote call emulating controller


Servet.Karabas

XUI Emulating Controllers

üründe bulunan formlardaki işlevleri formlar açılmadan sunucu tarafında kullanabilmeyi sağlayan teknolojidir.

Controller altyapısı iki parçadan oluşur;

  1. Bunlardan ilki her formda kullanılan swing bileşenlerinin (TextEdit, ComboBox, Button gibi) görsel olmayan birer taklitlerinin geliştirilmesidir. Bu taklit sınıflar sayesinde bir XUI formu sunucu tarafında yaratılabilir ve formun kullanıcı arayüzünde sunduğu tüm işlevler sunucu tarafında da kullanılabilir.
    Örneğin sunucuda bir form açılıp, o formda bulunan kontrollere (bileşenlere) değerler doldurulup formdaki kaydet tuşuna basılabilir. Bu taklit sınıflar, görsel parçaları olmadığı için sunucuda headless modda bile çalışabilirler.
     
  2. Altyapının ikinci parçası da üründe bulunan her forma ait bir controller sınıfı oluşturulmasıdır. Her forma ait controller sınıfı o formun üzerindeki arayüz kontrollerinin desteklediği işlevleri kullanıcı arayüzü ve de etkileşimi olmadan yerine getirebilmek için gerekli metodları içerir.

Bu iki parça bir araya gelince sunucu tarafında bir forma ait controller sınıfı elde edilip formun içindeki kontroller taklit sınıflarla gerçekleştirilip form aslında açılmadan da formun işlevleri kullanılabilir hale gelir.

// CFExcelSheetImportHandler Client Side
public void onClickTest(JLbsXUIControlEvent event)
{
	RemoteMethodResponse response = null;
	invSlip = new ArrayList<InvoiceSlips>();
	//Object[] inParam = new Object[] { null, invSlip.toArray()};
	Object[] inParam = new Object[] { null, invSlip};
	Object[] retObj; 
	try {
		response =   event.getClientContext().callRemoteMethod("RCSRV", "InvoiceSlips", inParam);
		retObj = (Object[]) response.Result;
		boolean sonuc = (boolean) retObj[0];
		if(sonuc)
		{
			JOptionPane.showMessageDialog(null, "Excel'den fatura aktarımı tamamlandı.");
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Fatura aktarımı sırasında hata oluştu");
		}
	} catch (Exception e) {
		// TODO Auto-generated catch block
		JOptionPane.showMessageDialog(null,"Genel hata oluştu : "+ e.getLocalizedMessage());
	}
}

//RemoteCustService  Server Side
public Object InvoiceSlips(IServerContext context, ArrayList<InvoiceSlips> Slip) {
	
	Object[] res = new Object[3];		 	    
	InvoiceSlipController slipController = new InvoiceSlipController(Slip);		
	try {
		LbsControllerUtil.executeControllerTask(context, slipController);
		res[0] = "Tamam";
		
	} catch (Exception e) {
		
		res[1] = e.getLocalizedMessage();		
	}
	return res;
}

 


18/05/15 09:38

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