Servet.Karabas

Controller ile başka bir firma'ya veri aktarma

  j-Platform/LPT

controller kullanarak bir firmaya login oldukran sonra başka bir firmaya veri aktarımını nasıl yapabilirim?


controller veri aktarımı firma


Servet.Karabas

Controller aktarımlarını biliyorsunuz Server Side çalıştırmamız lazım. Firma değiştirme işlemide kesinlikle Client Side kodlarda kullanılmamalı. Mutlaka Server Side yazılacak kodlar ile kullanılmalıdır.

Basit bir malzeme aktarımı için aşağıdaki gibi controller kodu oluşturalım

public static GOBOCompany getCompany(IServerContext context, int companyNr) 
{
	GOBOCompany company = new GOBOCompany();

	IObjectFactory objFactory = null;
	try
	{
		objFactory = context.getObjectFactory();
		FactoryParams params = new FactoryParams();
		String activeFilter = "COMPANYNR=" + companyNr;
		params.setActiveFilter(activeFilter);
		objFactory.first(company, params);
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
	
	return company;
}
public static GOBOCompany getCompany(IServerContext context, int companyNr) 
{
	GOBOCompany company = new GOBOCompany();

	IObjectFactory objFactory = null;
	try
	{
		objFactory = context.getObjectFactory();
		FactoryParams params = new FactoryParams();
		String activeFilter = "COMPANYNR=" + companyNr;
		params.setActiveFilter(activeFilter);
		objFactory.first(company, params);
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
	
	return company;
}

ItemCardController.java

public class ItemCardController implements ILbsControllerTask
{
	private String code;
	private String name;
	public ItemCardController(String paramad, String paramSoyad) {
		super();
		this.code=paramad;
		this.name=paramSoyad;
	}

	public void execute(LbsMenuController menu, IClientContext context)
	{
		try
		{
			ILbsController controller = menu.launchMaterials();
			if (controller instanceof MMXFItemBrowserController)
			{
				MMXFItemBrowserController controller1 = (MMXFItemBrowserController) controller;
				controller = controller1.createNew_CGCommercialGood();
				if (controller instanceof MMXFItemController)
				{
					MMXFItemController controller2 = (MMXFItemController) controller;
					controller2.setCode(code);
					controller2.setDescription(name);
					controller2.set2ndDescription("2. açıklama");
					controller2.clickSave();
				}
				controller1.clickClose();
			}
		}
		catch (Exception e)
		{
			//TODO handle your exceptions
		}
	}
}

Bu controller kodlarını tetikleyeceğimiz aşağıdaki gibi bir ServerSide method tanımlayalım.

public Boolean AddItemCard(IServerContext cntx, String paramad, String paramSoyad)
{
	ItemCardController task = new ItemCardController(paramad, paramSoyad);
	try 
	{
		ProjectUtil.sschangeCompany(cntx, 2);
		LbsControllerUtil.executeControllerTask(cntx, task);
		return true;
	}
	catch (Exception e) 
	{
		e.printStackTrace();
		return false;
	}
}

Bu server side method’u aşağıdaki gibi client side tarafından tetikleyelim

public void addcardSS_onClick(JLbsXUIControlEvent event)
{
	IClientContext clientContext = event.getClientContext();
	try {
		clientContext.callRemoteMethod("CSRV", "AddItemCard", 
			new Object[]{null,"SS_byfirm1","name ok"});
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}      
}

Firma değişikliğini yapan bölüm;

public static void sschangeCompany(IServerContext context, int companyNr) 
{
	UserInfo userInfo = context.getUserInfo();
	Object parameters = userInfo.Parameters;
	if(parameters instanceof LbsUserLoginInfo)
	{
		LbsUserLoginInfo params = (LbsUserLoginInfo) parameters;
		params.setFirm(getCompany(context, companyNr));
		ApplicationEnvironment env = (ApplicationEnvironment) 
			context.getVariable(IApplicationVariableConstants.APP_ENV_VARIABLE);
			
		env.getValues().put(IApplicationVariableConstants.APP_ENV_VAR_FIRM, companyNr);
		context.setVariable(IApplicationVariableConstants.APP_ENV_VARIABLE, env);
		context.setVariable(IApplicationVariableConstants.APP_ENV_VAR_FIRM, companyNr);
	}
} 

 

Önemli NOT ! : Bu kod işlediğinde o an aktif olan ServerContext üzerinde firma değişikliği yapmış oluyoruz. Örneğin bu işlem sürerken aynı kullanıcı, aynı servercontext üzerinden başka çağrılar ve işlemler tetikletirse yine değişiklik yaptığımız firmaya gideceği unutulmamalı. Contextler kullanıcı bazında olduğu için diğer kullanıcılar etkilenmeyecektir.


30/03/15 15:10

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