Повышение приоритета процессов
Материал из BiTel WiKi
Повышение приоритета для старых проблем.
Класс может быть запущен планировщиком либо командой консоли crm.sh runclass <className>.
package ru.bgcrm.dyn; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.GregorianCalendar; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.log4j.Logger; import ru.bgcrm.dao.ParamValueDAO; import ru.bgcrm.dao.process.ProcessDAO; import ru.bgcrm.dao.process.ProcessLinkDAO; import ru.bgcrm.model.BGException; import ru.bgcrm.model.CommonObjectLink; import ru.bgcrm.model.Pair; import ru.bgcrm.model.SearchResult; import ru.bgcrm.model.process.Process; import ru.bgcrm.model.process.StatusChange; import ru.bgcrm.util.Setup; import ru.bgcrm.util.Utils; import ru.bgcrm.util.sql.ConnectionSet; import ru.bgcrm.util.sql.PreparedDelay; import ru.bgcrm.util.sql.SQLUtils; import ru.bgcrm.util.TimeUtils; public class setprior implements Runnable { private static final Logger log = Logger.getLogger(setprior.class ); private static AtomicBoolean working = new AtomicBoolean(); @Override public void run(){ log.info( "Started" ); if( working.get() ){ log.warn( "Already working" ); return; } Connection con = Setup.getSetup().getDBConnectionFromPool(); try{ working.set( true ); ProcessDAO processDao = new ProcessDAO( con ); String query = "SELECT * FROM process " + "WHERE process.close_dt IS NULL"; PreparedStatement ps = con.prepareStatement( query ); ResultSet rs = ps.executeQuery(); while( rs.next() ){ Process process = ProcessDAO.getProcessFromRs( rs ); int daysdelta =TimeUtils.daysDelta(TimeUtils.convertDateToCalendar(process.getStatusTime()), new GregorianCalendar())+1; if ((daysdelta<9)&&(process.getPriority()<daysdelta)) process.setPriority(daysdelta); processDao.updateProcess(process); con.commit(); } ps.close(); }catch( Exception e ){ log.error( e.getMessage(), e ); }finally{ SQLUtils.closeConnection( con); working.set( false ); } log.info( "Finished" ); } }