= ZOO Services !HowTos = ZOO Services are quiet easy to create once you have install ZOO Kernel and that you have chosen a code to turn into a ZOO service. Here are some !HelloWorlds in Python, PHP, Java and !JavaScript with link to the correpondant .zcfg files. == Python == You'll find here informations needed to deploy your own Python Services Provider. === Python ZCFG requirements === For each Services providen by your ZOO Python Services Provider, the ZCFG File have to be named as the Python module function name. The ZCFG file should contain the following : serviceType:: Python serviceProvider:: the name of the Python module to use as a ZOO Service Provider. For instance, if your script, located in the same directory as your ZOO Kernel, was named {{{my_module.py}}} then you should use {{{my_module}}} (the Python module name) as {{{serviceProvider}}} value in ZCFG file. === Python Data Structure used === The Python module's function to be used as a service have to : * take three arguments : the main configuration, inputs and outputs maps are passed to the Python module as [http://docs.python.org/tutorial/datastructures.html#dictionaries dictionaries]. * return an integer : corresopnding to the service status code. ==== Sample Data Structure ==== In the following you 'll find a sample argument passed to the Python module's function for the two first [browser:trunk/zoo-kernel/main.cfg main configuration file]' sections. {{{ #!python main={ "main": {"encoding": "utf-8", "version": "1.0.0", "serverAddress": "http://www.zoo-project.org/zoo/", "lang": "fr-FR,en-CA"}, "identification": {"title": "The Zoo WPS Development Server", "abstract": "Development version of ZooWPS.", "fees": "None", "accessConstraints": "none", "keywords": "WPS,GIS,buffer"} } }}} === Sample ZOO Python Services Provider === The following code represent a simple ZOO Python Services Provider which provides only one Service, the {{{HelloPy}}} one. {{{ #!python import sys def HelloPy(conf,inputs,outputs): outputs["Result"]["value"]="Hello "+inputs["a"]["value"]+" from Python World !" return 3 }}} || [browser:trunk/zoo-services/hello-py/cgi-env/HelloPy.zcfg The ZCFG File] || [http://svn.zoo-project.org/zoo/?Service=WPS&Request=DescribeProcess&Version=1.0.0&Identifier=HelloPy DescribeProcess]||[http://svn.zoo-project.org/zoo/?Service=WPS&Request=Execute&Version=1.0.0&Identifier=HelloPy&DataInputs=a=ZOO%20Project&RawDataOutput=Result RawDataOutput]|| == PHP == {{{ #!php }}} [browser:trunk/zoo-services/hello-php/cgi-env/HelloPHP.zcfg Link to HelloPHP.zcfg] == Java == {{{ #!java import java.util.*; public class HelloJava { public static int HelloWorldJava(HashMap conf,HashMap inputs, HashMap outputs) { HashMap hm1 = new HashMap(); hm1.put("dataType","string"); HashMap tmp=(HashMap)(inputs.get("S")); java.lang.String v=tmp.get("value").toString(); hm1.put("value","Hello "+v+" from JAVA WOrld !"); outputs.put("Result",hm1); System.err.println("Hello from JAVA WOrld !"); return 3; } } }}} [browser:trunk/zoo-services/hello-java/cgi-env/HelloWorldJava.zcfg Link to HelloJava.zcfg] == Javascript == {{{ function hellojs(conf,inputs,outputs){ outputs=new Array(); outputs[0]={}; outputs[0]["result"]["value"]="Hello "+inputs[0]["S"]["value"]+" from JS World !"; return Array(3,outputs); } }}} [browser:trunk/zoo-services/hello-js/cgi-env/hellojs.zcfg Link to Hellojs.zcfg]