⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htdlexecdtrwbyfz.java

📁 以前做的一个j2ee的项目
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        }
//        return result; //需要对result做进一步的分析:全部执行成功,部分执行成功(成功的记录数),执行完全失败
    }

//逐条取出属于该分组的任务执行,这样可以通过控制“当天任务表”中的任务来取消某些任务的执行, for test
    public void executeDtrwByFz1() {
        try {
            //根据fzxx参数,取得属于该分组的所有任务
//            LogWritter.sysDebug(HTDLexecDtrw.class.getName() + "开始获取属于" + this.fz +
//                                "分组的任务!");

            HTDLdtrwlbDAO dtrwDAO = new HTDLdtrwlbDAO();
            HTDLreturnVO retVO = new HTDLreturnVO();
            HTDLybsdsrwDAO ybsrwDAO = new HTDLybsdsrwDAO();
            java.sql.Timestamp dtBefore;
            java.sql.Timestamp dtAfter;

            ArrayList dtrwList = (ArrayList) dtrwDAO.getOneDtrwByFz(this.fz);
            while (dtrwList.size()!=0) {
                HTDLdtrwVO dtrwVO = (HTDLdtrwVO) dtrwList.get(0);
                String rwxh = dtrwVO.getRw_xh();
                LogWritter.sysDebug(HTDLexecDtrw.class.getName() + "开始执行" +
                                    dtrwVO.getRw_xh() + "号任务:" + dtrwVO.getDyjk());
                dtBefore = new java.sql.Timestamp(System.currentTimeMillis());
                //执行任务
                //更新任务状态为执行中("1")
                dtrwDAO.updateZt("1", rwxh);

                //插日志Log,提示任务执行中
                HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
                HTDLzxqkVO zxqkVO = new HTDLzxqkVO();
                zxqkVO.setLrry_dm(dtrwVO.getLrry_dm());
                zxqkVO.setRw_xh(dtrwVO.getRw_xh()); //任务序号
                zxqkVO.setRw_mc(dtrwVO.getRw_mc());
                zxqkVO.setBlh_mc(dtrwVO.getBlh_mc()); //业务逻辑名称
                zxqkVO.setBczx_qssj(dtBefore);
                zxqkVO.setZxjg("1"); //执行结果
                zxqkVO.setJgms("执行参数:" + dtrwVO.getCsl()); //结果描述
                String log_xh = zxlogDAO.insertNewLog(zxqkVO);

                if (HTDL_SXLX_PROC.equals(dtrwVO.getSx_lx())) { //该任务是存储过程
                    retVO = executeProc(dtrwVO.getDyjk(), dtrwVO.getCsl());
                } else if (HTDL_SXLX_JAVA.equals(dtrwVO.getSx_lx())) { //该任务是Java类
                    retVO = executeJavaClass(dtrwVO.getDyjk(), dtrwVO.getCsl());
                } else {
                    retVO.setStatus("-1");
                    retVO.setDetail("未知的实现类型");
                }
                dtAfter = new java.sql.Timestamp(System.currentTimeMillis());
                LogWritter.sysDebug("执行结果--状态:" + retVO.getStatus() + "描述:" +
                                    retVO.getDetail());
                if (retVO.getDetail() == null) {
                    retVO.setDetail("未提供执行结果的描述");
                }

                //更新日志
                zxqkVO.setLog_xh(log_xh);
                zxqkVO.setBczx_zzsj(dtAfter);
                zxqkVO.setZxjg(retVO.getStatus()); //执行结果
                zxqkVO.setJgms("执行参数:" + dtrwVO.getCsl() + ".结果:" + retVO.getDetail()+"(自动调度)"); //结果描述
                zxlogDAO.updateZxlog(zxqkVO);

                //如果执行成功的话,更新已部署任务列表中相应的上次成功执行时间 mod
                if (retVO.getStatus().equals("0")) {
                    ybsrwDAO.updateSccg_sj(rwxh, dtAfter);
                }
                //更新“当天任务列表”中该任务的当前状态为“执行完毕(2)”mod
                dtrwDAO.updateZt("2", rwxh);
                LogWritter.sysDebug("任务:" + dtrwVO.getRw_xh() +
                                    dtrwVO.getBlh_mc() + "执行完毕!");

                //取下一条未执行的任务
                dtrwList = (ArrayList) dtrwDAO.getOneDtrwByFz(this.fz);
            }
        } catch (SQLException e) {
            e.printStackTrace();
            LogWritter.sysError(e.toString());
        } catch (Exception e) {
            e.printStackTrace();
            LogWritter.sysError(e.toString());
        }

    }

    //逐条取出属于该分组的任务执行,同时锁定该条记录,并更新该记录为执行中
        public void executeDtrwByFz_synchronize() {
            try {
                //根据fzxx参数,取得属于该分组的所有任务
//            LogWritter.sysDebug(HTDLexecDtrw.class.getName() + "开始获取属于" + this.fz +
//                                "分组的任务!");

                HTDLdtrwlbDAO dtrwDAO = new HTDLdtrwlbDAO();
                HTDLreturnVO retVO = new HTDLreturnVO();
                HTDLybsdsrwDAO ybsrwDAO = new HTDLybsdsrwDAO();
                java.sql.Timestamp dtBefore;
                java.sql.Timestamp dtAfter;

//                ArrayList dtrwList = (ArrayList) dtrwDAO.getOneDtrwByFz(this.fz);
                //取出第一条未执行的任务,同时更新该任务的状态为“执行中。。。”(1)
                HTDLdtrwVO dtrwVO = dtrwDAO.getOneDtrwByFz_synchronize(this.fz);
                System.out.println("=============just before while!=================");
                while (dtrwVO != null) {
                    System.out.println("=============in while first!=========================");
//                    HTDLdtrwVO dtrwVO = (HTDLdtrwVO) dtrwList.get(0);
                    String rwxh = dtrwVO.getRw_xh();
                    LogWritter.sysDebug(HTDLexecDtrw.class.getName() + "begin to execute the task:" +
                                        dtrwVO.getRw_xh() + "--" + dtrwVO.getDyjk());
                    System.out.println("begin to execute the task:" +
                                        dtrwVO.getRw_xh() + "--" + dtrwVO.getDyjk());
                    dtBefore = new java.sql.Timestamp(System.currentTimeMillis());
                    //执行任务
                    //更新任务状态为执行中("1")
//                    dtrwDAO.updateZt("1", rwxh);  放在getOneDtrwByFz中更改

                    //插日志Log,提示任务执行中
                    HTDLzxlogDAO zxlogDAO = new HTDLzxlogDAO();
                    HTDLzxqkVO zxqkVO = new HTDLzxqkVO();
                    zxqkVO.setLrry_dm(dtrwVO.getLrry_dm());
                    zxqkVO.setRw_xh(dtrwVO.getRw_xh()); //任务序号
                    zxqkVO.setRw_mc(dtrwVO.getRw_mc());
                    zxqkVO.setBlh_mc(dtrwVO.getBlh_mc()); //业务逻辑名称
                    zxqkVO.setBczx_qssj(dtBefore);
//             zxqkVO.setBczx_zzsj(dtAfter);
                    zxqkVO.setZxjg("1"); //执行中
                    zxqkVO.setJgms("执行参数:" + dtrwVO.getCsl()); //结果描述
                    String log_xh = zxlogDAO.insertNewLog(zxqkVO);
                    System.out.println("insert a new log "+log_xh+".....");

                    System.out.println("begin to call interface....");
                    if (HTDL_SXLX_PROC.equals(dtrwVO.getSx_lx())) { //该任务是存储过程
                        retVO = executeProc(dtrwVO.getDyjk(), dtrwVO.getCsl());
                    } else if (HTDL_SXLX_JAVA.equals(dtrwVO.getSx_lx())) { //该任务是Java类
                        retVO = executeJavaClass(dtrwVO.getDyjk(), dtrwVO.getCsl());
                    } else {
                        retVO.setStatus("-1");
                        retVO.setDetail("未知的实现类型");
                    }
                    dtAfter = new java.sql.Timestamp(System.currentTimeMillis());
                    LogWritter.sysDebug("执行结果--状态:" + retVO.getStatus() + "描述:" +
                                        retVO.getDetail());
                    System.out.println("return from call interface......");
                    if (retVO.getDetail() == null) {
                        retVO.setDetail("未提供执行结果的描述");
                    }

                    //更新日志
                    System.out.println("update the log "+log_xh);
                    zxqkVO.setLog_xh(log_xh);
                    zxqkVO.setBczx_zzsj(dtAfter);
                    zxqkVO.setZxjg(retVO.getStatus()); //执行结果
                    zxqkVO.setJgms("执行参数:" + dtrwVO.getCsl() + ".结果:" + retVO.getDetail()+"(自动调度)"); //结果描述
                    zxlogDAO.updateZxlog(zxqkVO);

                    //如果执行成功的话,更新已部署任务列表中相应的上次成功执行时间 mod
                    if (retVO.getStatus().equals("0")) {
                        ybsrwDAO.updateSccg_sj(rwxh, dtAfter);
                    }
                    //更新“当天任务列表”中该任务的当前状态为“执行完毕(2)”mod
                    dtrwDAO.updateZt("2", rwxh);
                    LogWritter.sysDebug("Task:" + dtrwVO.getRw_xh() +
                                        dtrwVO.getBlh_mc() + " end of execution!");
                    System.out.println("Task:" + dtrwVO.getRw_xh() +
                                        dtrwVO.getBlh_mc() + " end of execution!");

                    //取下一条未执行的任务
//                    dtrwList = (ArrayList) dtrwDAO.getOneDtrwByFz(this.fz);
                    System.out.println("get the next task.......");
                    dtrwVO = dtrwDAO.getOneDtrwByFz_synchronize(this.fz);
                }
                System.out.println("=================All tasks in fz:"+fz+" are end of execution!=============");
            } catch (SQLException e) {
                e.printStackTrace();
                LogWritter.sysError(e.toString());
            } catch (Exception e) {
                e.printStackTrace();
                LogWritter.sysError(e.toString());
            }

        }

    //执行所属分组fz中的任务
    public void run() {
//        executeDtrwByFz();
//        executeDtrwByFz1();
        executeDtrwByFz_synchronize();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -