通过java jna 调用datastage c api 例子如下,这是运行作业的例子
经测试是可行的。
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 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;
proj=libvmdsapi.INSTANCE.DSOpenProjectEx(1,"B610_ODSB");
dsjob=libvmdsapi.INSTANCE.DSOpenJob(proj,"ss");
int lock= libvmdsapi.INSTANCE.DSLockJob(dsjob);
//int jofs= libvmdsapi.INSTANCE.DSGet