您的位置:首页 > 编程语言 > Java开发

datastage调度之java调度 欢迎加QQ群:106389516讨论

2012-10-02 10:34 375 查看
这几天看了datastage的调度,因为ds没有开放对java的接口去调用它,所以我们只能用java去调用dll的链接库,因为我刚接触对ds理解的也不是很深所以有的地方可能会说错,我现在想说说我的做法,说出来大家一起讨论一下对ds的调度,这里是一部分代码

import com.sun.jna.Library;

import com.sun.jna.Structure;

import com.sun.jna.Union;

import com.sun.jna.Native;

/** Simple example of native library declaration and usage. */

public class dsjobc {

public static class time_t extends Structure {

public int value;

public time_t() {}

public time_t(int value) {

this.value = value;

}

}

public static class DSPROJECT extends Structure{

public int dsapiVersionNo;

public int sessionId;

public byte valueMark;

public byte fieldMark;

}

public static class DSJOB extends Structure{

public DSPROJECT hProject; /* Reference to project handle for job */

String serverJobHandle; /* Text of handle to job on server */

String logData; /* Cached log summary data */

int logDataLen; /* Size of log summary data */

int logDataPsn; /* Current position in logData */

}

public static class DSparamValue extends Union{

String pString;

String pEncrypt;

int pInt;

float PFloat;

String pPath;

String pDate;

String pTime;

}

public static class DSPARAM extends Structure{

int paramType;

}

public interface libvmdsapi extends Library {

libvmdsapi INSTANCE = (libvmdsapi)Native.loadLibrary("vmdsapi",libvmdsapi.class);

public void DSSetServerParams( String ServerName, String UserName, String Password);

public DSPROJECT DSOpenProjectEx(int serial,String pro);

public DSJOB DSOpenJob(DSPROJECT pro,String job);

public int DSLockJob(DSJOB job);

public int DSRunJob(DSJOB job, int flag);

// public int DSGetJobInfo(DSJOB job, int flag, DSJOBINFO info);

public int DSSetParam(DSJOB job, String str, DSPARAM pam);

}

public static void main(String[] argv) {

DSPROJECT proj;

DSJOB dsjob;

// DSJOBINFO info;

libvmdsapi.INSTANCE.DSSetServerParams("193.158.163.243", "dsadm", "dsadmin");

proj=libvmdsapi.INSTANCE.DSOpenProjectEx(1,"B610_ODSB");

dsjob=libvmdsapi.INSTANCE.DSOpenJob(proj,"ss");

int lock= libvmdsapi.INSTANCE.DSLockJob(dsjob);

// int jofs= libvmdsapi.INSTANCE.DSGetJobInfo(dsjob,1,info);

// System.out.println("jofs:"+jofs);

System.out.println("lock:"+lock);

System.out.println("dsapiv:"+proj.dsapiVersionNo+"/ndsapi_sessionid:"+proj.sessionId);

System.out.println(dsjob.logData);

// System.out.println("jobname:"+info.info.jobName);

int runf = libvmdsapi.INSTANCE.DSRunJob(dsjob,1);

System.out.println("runflag:"+runf);

}

}
我贴出来,这个是可以运行的。这个是通过jna方式调用ds的。全部的代码和需要的jar包在http://download.csdn.net/detail/chen756430226/4600337 可以下载的到,这个是我自己写的一个初期的demo。我会将demo放在群共享里讨论。因为ds的服务器一般都是在Linux上的所以我们要是在远程运行的时候需要将ds的vmdsapi.dll类库拷贝到运行的本地。还有需要的其他两个dsclnt32.dll dsrpc32.dll 拷贝到自己本地。ds开发的帮助文档可以在http://download.csdn.net/my下载,我也会放在群共享里面。欢迎大家加入一起讨论。最后这里提出我的疑问来,在调度的时候我们会传参数到调度的job去这个怎么传呢?还有怎么获取日志信息呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: