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

这几天看了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去这个怎么传呢?还有怎么获取日志信息呢?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值