实例¶
此部分使用 ZOO-API , the ZOO-Project 服务器端Javascript API。
zoo-api包含许多类和函数。您可以找到描述列表 here .
动物园.流程示例¶
function SampleService(conf,inputs,outputs){
var myProcess = new ZOO.Process('http://localhost/cgi-bin-new1/zoo_loader_new1.cgi','Boundary');
var myInputs = {InputPolygon: { type: 'complex', value: '{"type":"Polygon","coordinates":[[[-106.993853,35.998758],[-107.407233,35.997524],[-107.430525,35.997726],[-107.4824,35.99878],[-108.37013,35.999472],[-109.043633,35.996652],[-109.096265,35.997817],[-109.148763,36.001751],[-109.200981,36.008442],[-109.252775,36.017871],[-109.304,36.030014],[-109.354516,36.044835],[-106.468201,35.991497],[-106.855511,35.989504],[-106.90933,35.990676],[-106.963008,35.994743],[-106.993853,35.998758]]]}', mimeType: "application/json"} };
var myExecuteResult=myProcess.Execute(myInputs);
return {result: ZOO.SERVICE_SUCCEEDED, outputs: [ {name:"Result", value: myExecuteResult} ] };
}
在这个非常简短的示例中,您可以看到如何创建 ZOO.Process
类实例并对此类实例调用Execute方法。然后您只需要返回一个包含属性result和outputs的javascript对象,我确信您已经知道这是怎么回事了。第一个是关于进程的状态(可以是 ZOO.SERVICE_SUCEEDED
, ZOO.SERVICE_FAILED
等等),最后一个显然是生成的映射(请看一看动物园内核在 service.h
)
zoo.updateStatus示例¶
function SampleLongService(conf,inputs,outputs){
var my_i=0;
while(my_i<100){
try{
conf["lenv"]["status"]=my_i;
}
catch(e){
}
ZOOUpdateStatus(conf,my_i);
SampleService(conf,inputs,outputs);
my_i+=10;
}
return SampleService(conf,inputs,outputs);
}
在这个示例代码中,您可以看到如何使用 ZOOUpdateStatus
函数更新正在运行的进程的当前状态。当zoo内核以后台模式运行javascript服务(如果用户设置为 true
这个 storeExecuteResponse
请求中的参数)。
异步动物园。过程例子¶
function RunAsynchonous(conf,inputs,outputs){
var formatWPS=new ZOO.Format.WPS();
var myProcess = new ZOO.Process(conf["main"]["serverAddress"],'Demo',true);
var myExecuteResult =myProcess.Execute(myInputs,myOutputs);
var response=formatWPS.read(myExecuteResult);
while(response.status){
sleep(1500);
var response1 = ZOO.Request.Get(response.status.replace(/amp;/g,""),null);
response=formatWPS.read(response1);
}
conf["lenv"]["message"]="Asyncrhonous Process ended";
ZOO.UpdateStatus(conf,90);
return {result: ZOO.SERVICE_SUCCEEDED, outputs: outputs};
}
在这个示例代码中,通过创建动物园。过程,如果第三个参数设置为true,我们将确保WPS服务执行将异步运行。一旦获取executewps响应,直到服务执行结束,每隔1,5秒轮询一次statusLocation。