<?xml version="1.0" encoding="iso-8859-1" ?>
<tasks>
<!--
	<task id = "mcp_initialize" action-type = "default" action = "[nothing]" handler-type = "default" handler = "[nothing]">
		<depends rid="mcp_synchronize" />
		<![CDATA[
			
			t.returnDependency("mcp_initialize");
		]]>
	</task>
-->

	<task id = "data_provider" action-type = "default" action = "[nothing]" handler-type = "script" handler = "#cdata">
		<depends rid="provider_util" />
		<![CDATA[
			/*
				In the context of using a task list, or within a service environment where objects
				come and go, it is sometimes easier to use a stacked token instead of a global object id.

				This implementation will take the first token on the stack with the given name and invoke the specified function.
				Note that this places explicit dependencies on understanding what component is in the stack.
			*/
			org.cote.js.token.TokenStack.getTokenValue("data_provider")._handle_task_complete();
			
		]]>
<!--

			/*
				Instead of looking up an object name, or flooding an event queue or  message queue with a message,
				ApplicationComponents have transaction packets, so the corresponding packet will be bounced back at it.
			*/
			

			var _t = org.cote.js.transaction.TransactionService,
				_m = org.cote.js.message.MessageService,
				p
			;
			p = _t.getPacketByName("mcp_initialize");
			if(p){
				/* type is a supplementary data structure for packets created from Application Components */
				p.data.type = "task_complete";
				_t.serveTransaction(p);
			}
			else{
				_m.sendMessage("mcpServiceTask: Application Component packet not found.","200.4");
			}
			t.returnDependency("mcp_initialize");

-->
	</task>

</tasks>	
