{hidden}
DO NOT EDIT THE CONTENT OF THIS PAGE DIRECTLY, UNLESS YOU KNOW WHAT YOU'RE DOING.
		THE STRUCTURE OF THE CONTENT IS VITAL IN BEING ABLE TO EXTRACT CHANGES FROM THE PAGE AND MERGE THEM BACK INTO SERVOY SOURCE{hidden}
{sub-section:description|text=}{sub-section}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Constants Summery{th}{tr}{tbody}{tr}{td}[String]{td}{td}[#CALLBACK_EVENT]
{td}{tr}{tbody}{tbody}{tr}{td}[String]{td}{td}[#CALLBACK_EXCEPTION_EVENT]
{td}{tr}{tbody}{table}\\ 

{table:id=|class=servoy sSummery}{colgroup}{column:padding=0px|width=80px}{column}{column}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=2}Method Summery{th}{tr}{tbody}{tr}{td}[String]{td}{td}[#getClientID]\()
gets the id of the client{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#getDataProviderValue]\(context, variableName, \[currentMethodName])
get a dataprovider value from the client{td}{tr}{tbody}{tbody}{tr}{td}[Boolean]{td}{td}[#isValid]\()
returns true if this client is still valid/usable{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#queueMethod]\(context, methodName, args, callbackFunction)
queue a method on the client{td}{tr}{tbody}{tbody}{tr}{td}[Object]{td}{td}[#setDataProviderValue]\(context, variableName, value, \[currentMethodName])
set a dataprovider value on the client{td}{tr}{tbody}{tbody}{tr}{td}void{td}{td}[#shutdown]\(force)
shutdown{td}{tr}{tbody}{table}\\ 

{table:id=constant|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Constants Details{th}{tr}{tbody:id=CALLBACK_EVENT|class=node}{tr:id=name}{td}h6.CALLBACK_EVENT{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:CALLBACK_EVENT_des|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EVENT_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:CALLBACK_EVENT_snc|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EVENT_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:CALLBACK_EVENT_prs|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EVENT_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:CALLBACK_EVENT_ret|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EVENT_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:CALLBACK_EVENT_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EVENT_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:CALLBACK_EVENT_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EVENT_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=sam}{td}*Sample*\\{sub-section:CALLBACK_EVENT_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EVENT_sam|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=CALLBACK_EXCEPTION_EVENT|class=node}{tr:id=name}{td}h6.CALLBACK_EXCEPTION_EVENT{td}{tr}{builder-show:permission=edit}{tr:id=des}{td}{sub-section:CALLBACK_EXCEPTION_EVENT_des|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EXCEPTION_EVENT_des|trigger=none|class=sIndent}Replace with description{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:CALLBACK_EXCEPTION_EVENT_snc|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EXCEPTION_EVENT_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:CALLBACK_EXCEPTION_EVENT_prs|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EXCEPTION_EVENT_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:CALLBACK_EXCEPTION_EVENT_ret|text=|trigger=button}{sub-section}{sub-section:CALLBACK_EXCEPTION_EVENT_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:CALLBACK_EXCEPTION_EVENT_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EXCEPTION_EVENT_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:CALLBACK_EXCEPTION_EVENT_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EXCEPTION_EVENT_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=sam}{td}*Sample*\\{sub-section:CALLBACK_EXCEPTION_EVENT_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:CALLBACK_EXCEPTION_EVENT_sam|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}\\ 

{table:id=function|class=servoy sDetail}{colgroup}{column:padding=0px|width=100%}{column}{colgroup}{tr:style=height: 30px;}{th:colspan=1}Method Details{th}{tr}{tbody:id=getClientID|class=node}{tr:id=name}{td}h6.getClientID{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[String]{span}{span:id=iets|style=float: left; font-weight: bold;}getClientID{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:getClientID_des|text=|trigger=button}{sub-section}{sub-section:getClientID_des|trigger=none|class=sIndent}gets the id of the client{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getClientID_snc|text=|trigger=button}{sub-section}{sub-section:getClientID_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:getClientID_prs|text=|trigger=button}{sub-section}{sub-section:getClientID_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:getClientID_ret|text=|trigger=button}{sub-section}{sub-section:getClientID_ret|trigger=none|class=sIndent}[String]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getClientID_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getClientID_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getClientID_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getClientID_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	/*Queue a method where the callback can do something like this
	if (event.getType() == JSClient.CALLBACK_EVENT)
	{
		application.output("callback data, name: " + event.data);
	}
	else if (event.getType() == JSClient.CALLBACK_EXCEPTION_EVENT)
	{
		application.output("exception callback, name: " + event.data);
	}*/
	var x = new Object();
	x.name = 'remote1';
	x.number = 10;
	// this calls a 'remoteMethod' on the server as a global method, because the context (first argument is set to null), you can use a formname to call a form method
	jsclient.queueMethod(null, "remoteMethod", [x], callback);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=getDataProviderValue|class=node}{tr:id=name}{td}h6.getDataProviderValue{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]{span}{span:id=iets|style=float: left; font-weight: bold;}getDataProviderValue{span}{span:id=iets|style=float: left;}\(context, variableName, \[currentMethodName]){span}{td}{tr}{tr:id=des}{td}{sub-section:getDataProviderValue_des|text=|trigger=button}{sub-section}{sub-section:getDataProviderValue_des|trigger=none|class=sIndent}get a dataprovider value from the client{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:getDataProviderValue_snc|text=|trigger=button}{sub-section}{sub-section:getDataProviderValue_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:getDataProviderValue_prs|text=|trigger=button}{sub-section}{sub-section:getDataProviderValue_prs|trigger=none|class=sIndent}context
variableName
\[currentMethodName]
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:getDataProviderValue_ret|text=|trigger=button}{sub-section}{sub-section:getDataProviderValue_ret|trigger=none|class=sIndent}[Object]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:getDataProviderValue_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValue_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:getDataProviderValue_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValue_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:getDataProviderValue_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:getDataProviderValue_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	// only gets the globals.media when the 'remoteMethod' is currently executing for this client
	var value = jsclient.getDataProviderValue(null, "globals.number", 'remoteMethod');
	if (value != null)
	{
		application.output("value get from globals.number :: "+ value);
		globals.value = value+10;
		var returnValue = jsclient.setDataProviderValue(null, "globals.number", globals.value, 'remoteMethod');
		application.output("value set to globals.number previous value "+ returnValue);
	}
	else
	{
		application.output("value get from globals.number :: " + null);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=isValid|class=node}{tr:id=name}{td}h6.isValid{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Boolean]{span}{span:id=iets|style=float: left; font-weight: bold;}isValid{span}{span:id=iets|style=float: left;}\(){span}{td}{tr}{tr:id=des}{td}{sub-section:isValid_des|text=|trigger=button}{sub-section}{sub-section:isValid_des|trigger=none|class=sIndent}returns true if this client is still valid/usable{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:isValid_snc|text=|trigger=button}{sub-section}{sub-section:isValid_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=prs}{td}*Parameters*\\{sub-section:isValid_prs|text=|trigger=button}{sub-section}{sub-section:isValid_prs|trigger=none|class=sIndent}{sub-section}{td}{tr}{builder-show}{tr:id=ret}{td}*Returns*\\{sub-section:isValid_ret|text=|trigger=button}{sub-section}{sub-section:isValid_ret|trigger=none|class=sIndent}[Boolean]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:isValid_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isValid_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:isValid_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isValid_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:isValid_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:isValid_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	/*Queue a method where the callback can do something like this
	if (event.getType() == JSClient.CALLBACK_EVENT)
	{
		application.output("callback data, name: " + event.data);
	}
	else if (event.getType() == JSClient.CALLBACK_EXCEPTION_EVENT)
	{
		application.output("exception callback, name: " + event.data);
	}*/
	var x = new Object();
	x.name = 'remote1';
	x.number = 10;
	// this calls a 'remoteMethod' on the server as a global method, because the context (first argument is set to null), you can use a formname to call a form method
	jsclient.queueMethod(null, "remoteMethod", [x], callback);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=queueMethod|class=node}{tr:id=name}{td}h6.queueMethod{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}queueMethod{span}{span:id=iets|style=float: left;}\(context, methodName, args, callbackFunction){span}{td}{tr}{tr:id=des}{td}{sub-section:queueMethod_des|text=|trigger=button}{sub-section}{sub-section:queueMethod_des|trigger=none|class=sIndent}queue a method on the client{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:queueMethod_snc|text=|trigger=button}{sub-section}{sub-section:queueMethod_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:queueMethod_prs|text=|trigger=button}{sub-section}{sub-section:queueMethod_prs|trigger=none|class=sIndent}context
methodName
args
callbackFunction
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:queueMethod_ret|text=|trigger=button}{sub-section}{sub-section:queueMethod_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:queueMethod_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:queueMethod_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:queueMethod_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:queueMethod_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:queueMethod_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:queueMethod_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	/*Queue a method where the callback can do something like this
	if (event.getType() == JSClient.CALLBACK_EVENT)
	{
		application.output("callback data, name: " + event.data);
	}
	else if (event.getType() == JSClient.CALLBACK_EXCEPTION_EVENT)
	{
		application.output("exception callback, name: " + event.data);
	}*/
	var x = new Object();
	x.name = 'remote1';
	x.number = 10;
	// this calls a 'remoteMethod' on the server as a global method, because the context (first argument is set to null), you can use a formname to call a form method
	jsclient.queueMethod(null, "remoteMethod", [x], callback);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=setDataProviderValue|class=node}{tr:id=name}{td}h6.setDataProviderValue{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}[Object]{span}{span:id=iets|style=float: left; font-weight: bold;}setDataProviderValue{span}{span:id=iets|style=float: left;}\(context, variableName, value, \[currentMethodName]){span}{td}{tr}{tr:id=des}{td}{sub-section:setDataProviderValue_des|text=|trigger=button}{sub-section}{sub-section:setDataProviderValue_des|trigger=none|class=sIndent}set a dataprovider value on the client{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:setDataProviderValue_snc|text=|trigger=button}{sub-section}{sub-section:setDataProviderValue_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:setDataProviderValue_prs|text=|trigger=button}{sub-section}{sub-section:setDataProviderValue_prs|trigger=none|class=sIndent}context
variableName
value
\[currentMethodName]
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:setDataProviderValue_ret|text=|trigger=button}{sub-section}{sub-section:setDataProviderValue_ret|trigger=none|class=sIndent}[Object]{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:setDataProviderValue_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValue_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:setDataProviderValue_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValue_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:setDataProviderValue_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:setDataProviderValue_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	// only gets the globals.media when the 'remoteMethod' is currently executing for this client
	var value = jsclient.getDataProviderValue(null, "globals.number", 'remoteMethod');
	if (value != null)
	{
		application.output("value get from globals.number :: "+ value);
		globals.value = value+10;
		var returnValue = jsclient.setDataProviderValue(null, "globals.number", globals.value, 'remoteMethod');
		application.output("value set to globals.number previous value "+ returnValue);
	}
	else
	{
		application.output("value get from globals.number :: " + null);
	}
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{tbody:id=shutdown|class=node}{tr:id=name}{td}h6.shutdown{td}{tr}{tr:id=sig}{td}{span:style=float: left; margin-right: 5px;}void{span}{span:id=iets|style=float: left; font-weight: bold;}shutdown{span}{span:id=iets|style=float: left;}\(force){span}{td}{tr}{tr:id=des}{td}{sub-section:shutdown_des|text=|trigger=button}{sub-section}{sub-section:shutdown_des|trigger=none|class=sIndent}shutdown{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=snc}{td}*Since*\\{sub-section:shutdown_snc|text=|trigger=button}{sub-section}{sub-section:shutdown_snc|trigger=none|class=sIndent} Replace with version info{sub-section}{td}{tr}{builder-show}{tr:id=prs}{td}*Parameters*\\{sub-section:shutdown_prs|text=|trigger=button}{sub-section}{sub-section:shutdown_prs|trigger=none|class=sIndent}force
{sub-section}{td}{tr}{tr:id=ret}{td}*Returns*\\{sub-section:shutdown_ret|text=|trigger=button}{sub-section}{sub-section:shutdown_ret|trigger=none|class=sIndent}void{sub-section}{td}{tr}{builder-show:permission=edit}{tr:id=see}{td}*Also see*\\{sub-section:shutdown_see|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:shutdown_see|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{builder-show:permission=edit}{tr:id=link}{td}*External links*\\{sub-section:shutdown_link|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:shutdown_link|trigger=none}{sub-section}{div}{td}{tr}{builder-show}{tr:id=sam}{td}*Sample*\\{sub-section:shutdown_sam|text=|trigger=button}{sub-section}{div:class=sIndent}{sub-section:shutdown_sam|trigger=none}{code:language=javascript}
if (jsclient && jsclient.isValid())
{
	/*Queue a method where the callback can do something like this
	if (event.getType() == JSClient.CALLBACK_EVENT)
	{
		application.output("callback data, name: " + event.data);
	}
	else if (event.getType() == JSClient.CALLBACK_EXCEPTION_EVENT)
	{
		application.output("exception callback, name: " + event.data);
	}*/
	var x = new Object();
	x.name = 'remote1';
	x.number = 10;
	// this calls a 'remoteMethod' on the server as a global method, because the context (first argument is set to null), you can use a formname to call a form method
	jsclient.queueMethod(null, "remoteMethod", [x], callback);
}
{code}{sub-section}{div}{td}{tr}{tr:class=lastDetailRow}{td}{td}{tr}{tbody}{table}