kettle集成到web项目中

0
最近需要把kettle集成到web项目中,用定时调度模块来调我的kettle 然后链接webservice,但是苦于不知道如何下手,网上的例子基本都是片段,求实例,或者过程都行
 
已邀请:
0

肥鳄鱼 2015-11-17 回答

我做过类似的项目,前台SSH架构,数据处理采用kettle3.2。通过Spring定时器启动kettle。就是在Java中写代码启动bat脚本,通过启动脚本调用kitchen.bat,进而启动kettle JOB。
脚本代码
cd /d D:\FastLiquidData-ATM\liquid\
JobExcute.bat -file:./Templates/program/BatchAuto.kjb -level:Basic >./log/307_AutoCheck%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%_%TIME:~1,1%_%TIME:~3,2%_%TIME:~6,2%.log
 
不知道是否符合你的问题
 
Spring定时器配置代码
<bean id="runConetCheckJob"
        class="cn.grgbanking.view.schedule.RunConetCheck">
        <property name="dpTermlogManager">
            <ref bean="dpTermlogManager" />
        </property>
        <property name="backUpFileInfoManager">
            <ref bean="backUpFileInfoManager" />
        </property>
        <property name="tmlInfoManager">
            <ref bean="tmlInfoManager" />
        </property>
    </bean>
    <bean id="runConetCheckDetail"
        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject">
            <ref bean="runConetCheckJob" />
        </property>
        <property name="targetMethod">
            <value>runConetCheck</value>
        </property>
        <property name="concurrent">
            <value>false</value>
        </property>
    </bean>
    <bean id="runConetCheckTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="runConetCheckDetail" />
        </property>
        <property name="cronExpression">
            <value>30 0/5 7-23 ? * *</value>
        </property>
    </bean>
 
Java启动任务

    public void runConetCheck() {
        LiquidUtil.getTask("XXXXXXX.bat");
    }
   
    private static int getBatTask(String name) {
        Runtime rt = Runtime.getRuntime();
        int ret = -1;
        BufferedReader buf = null;
        try {
            SysLog.info("开始任务"+name );
            Process pcs = rt.exec(name);
            String line = null;
            buf = new BufferedReader(
                    new InputStreamReader(pcs.getInputStream()));
            while ((line = buf.readLine()) != null) {
                SysLog.check(line);
            }
            // pcs.waitFor();
            buf.close();
            // 此 Process 对象表示的子进程的出口值。根据惯例,值 0 表示正常终止
            ret = pcs.exitValue();
        } catch (Exception e) {
            try {
                // 结束掉进程
                buf.close();
                SysLog.info(e.getMessage());
            } catch (IOException e1) {
                SysLog.info(e1.getMessage());
            }
            return ret;
        }
        return ret;
    } 
脚本代码
XXXXXX.bat
cd /d D:\FastLiquidData-ATM\liquid\
JobExcute.bat -file:./Templates/program/BatchAuto.kjb -level:Basic >./log/307_AutoCheck%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%_%TIME:~1,1%_%TIME:~3,2%_%TIME:~6,2%.log
0

ab喜欢cd 2015-11-17 回答

cd /d D:\FastLiquidData-ATM\liquid\
JobExcute.bat -file:./Templates/program/BatchAuto.kjb -level:Basic >./log/307_AutoCheck%DATE:~0,4%_%DATE:~5,2%_%DATE:~8,2%_%TIME:~1,1%_%TIME:~3,2%_%TIME:~6,2%.log
 
你说的需求到是 符合 但是  就是不知道  你的脚本代码是写的什么  完全看不懂  是链接吗  但是也打不开啊
还请明示

要回复问题请先登录注册