details: https://code.openbravo.com/erp/devel/pi/rev/5ec5054e4cff changeset: 34221:5ec5054e4cff user: Javier Armendáriz <javier.armendariz <at> openbravo.com> date: Mon Jun 18 18:13:28 2018 +0200 summary: Fixed issue 38766: Audit fields not updated for process request when scheduling.
When updating process request status, audit fields (updated, updatedby) fields are not included in update query. diffstat: src/org/openbravo/scheduling/OBScheduler.java | 10 ++++++---- src/org/openbravo/scheduling/ProcessMonitor.java | 19 ++++++++++++++----- src/org/openbravo/scheduling/ProcessRequest_data.xsql | 15 +++++++++++---- src/org/openbravo/scheduling/ProcessRunner.java | 4 ++-- 4 files changed, 33 insertions(+), 15 deletions(-) diffs (168 lines): diff -r 3ebd957afffb -r 5ec5054e4cff src/org/openbravo/scheduling/OBScheduler.java --- a/src/org/openbravo/scheduling/OBScheduler.java Wed Jun 20 10:22:27 2018 +0000 +++ b/src/org/openbravo/scheduling/OBScheduler.java Mon Jun 18 18:13:28 2018 +0200 @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2008-2016 Openbravo SLU + * All portions are Copyright (C) 2008-2018 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -243,7 +243,7 @@ sched.unscheduleJob(requestId, OB_GROUP); sched.deleteJob(requestId, OB_GROUP); ProcessRequestData.update(getConnection(), UNSCHEDULED, null, sqlDateTimeFormat, - format(new Date()), requestId); + format(new Date()), context.getUser(), requestId); } catch (final Exception e) { log.error("An error occurred unscheduling process " + requestId, e); } @@ -279,16 +279,18 @@ for (final ProcessRequestData request : data) { final String requestId = request.id; + final VariablesSecureApp vars = ProcessContext.newInstance(request.obContext).toVars(); + if ("Direct".equals(request.channel) || TriggerProvider.TIMING_OPTION_IMMEDIATE.equals(request.timingOption)) { // do not re-schedule immediate and direct requests that were in execution last time // Tomcat stopped - ProcessRequestData.update(getConnection(), Process.SYSTEM_RESTART, requestId); + ProcessRequestData.update(getConnection(), Process.SYSTEM_RESTART, vars.getUser(), requestId); log.debug(request.channel + " run of process id " + request.processId + " was scheduled, marked as 'System Restart'"); continue; } - final VariablesSecureApp vars = ProcessContext.newInstance(request.obContext).toVars(); + try { final ProcessBundle bundle = ProcessBundle.request(requestId, vars, getConnection()); schedule(requestId, bundle); diff -r 3ebd957afffb -r 5ec5054e4cff src/org/openbravo/scheduling/ProcessMonitor.java --- a/src/org/openbravo/scheduling/ProcessMonitor.java Wed Jun 20 10:22:27 2018 +0000 +++ b/src/org/openbravo/scheduling/ProcessMonitor.java Mon Jun 18 18:13:28 2018 +0200 @@ -183,8 +183,10 @@ } public void triggerFinalized(Trigger trigger) { + final ProcessBundle bundle = (ProcessBundle) trigger.getJobDataMap().get(ProcessBundle.KEY); + String updatedBy = bundle != null ? bundle.getContext().getUser() : "0"; try { - ProcessRequestData.update(getConnection(), COMPLETE, trigger.getName()); + ProcessRequestData.update(getConnection(), COMPLETE, updatedBy, trigger.getName()); } catch (final ServletException e) { log.error(e.getMessage(), e); @@ -196,8 +198,14 @@ public void jobUnscheduled(String triggerName, String triggerGroup) { try { - ProcessRequestData.update(getConnection(), UNSCHEDULED, null, null, null, triggerName); - + /* + * This method is never called. See for more details: + * https://issues.openbravo.com/view.php?id=38804 + * + * Once this issue is fixed, consider whether this method should be removed or changed to use + * an appropriate updatedBy userID + */ + ProcessRequestData.update(getConnection(), UNSCHEDULED, null, null, null, "0", triggerName); } catch (final ServletException e) { log.error(e.getMessage(), e); } finally { @@ -319,13 +327,14 @@ private void stopConcurrency(Trigger trigger, JobExecutionContext jec, String processName) { try { + final ProcessBundle bundle = (ProcessBundle) jec.getMergedJobDataMap().get(ProcessBundle.KEY); if (!trigger.mayFireAgain()) { + String updatedBy = bundle != null ? bundle.getContext().getUser() : "0"; // This is last execution of this trigger, so set it as complete - ProcessRequestData.update(getConnection(), COMPLETE, trigger.getName()); + ProcessRequestData.update(getConnection(), COMPLETE, updatedBy, trigger.getName()); } // Create a process run as error - final ProcessBundle bundle = (ProcessBundle) jec.getMergedJobDataMap().get(ProcessBundle.KEY); if (bundle != null) { final ProcessContext ctx = bundle.getContext(); final String executionId = SequenceIdData.getUUID(); diff -r 3ebd957afffb -r 5ec5054e4cff src/org/openbravo/scheduling/ProcessRequest_data.xsql --- a/src/org/openbravo/scheduling/ProcessRequest_data.xsql Wed Jun 20 10:22:27 2018 +0000 +++ b/src/org/openbravo/scheduling/ProcessRequest_data.xsql Mon Jun 18 18:13:28 2018 +0200 @@ -12,7 +12,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2001-2017 Openbravo SLU + * All portions are Copyright (C) 2001-2018 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -72,10 +72,13 @@ <SqlMethodComment></SqlMethodComment> <Sql><![CDATA[ UPDATE AD_Process_Request - SET Status = ? + SET Status = ?, + Updated = NOW(), + UpdatedBy = ? WHERE AD_Process_Request_ID = ? ]]></Sql> <Parameter name="status"/> + <Parameter name="updatedBy"/> <Parameter name="id"/> </SqlMethod> <SqlMethod name="update" type="preparedStatement" return="rowcount" saveContextInfo="false"> @@ -84,7 +87,9 @@ UPDATE AD_Process_Request SET Status = ?, Next_Fire_Time = TO_TIMESTAMP(?, ?), - Scheduled_Finish = TO_TIMESTAMP(?, ?) + Scheduled_Finish = TO_TIMESTAMP(?, ?), + Updated = NOW(), + UpdatedBy = ? WHERE AD_Process_Request_ID = ? ]]></Sql> <Parameter name="status"/> @@ -92,6 +97,7 @@ <Parameter name="dateTimeFormat"/> <Parameter name="scheduledFinish"/> <Parameter name="dateTimeFormat"/> + <Parameter name="updatedBy"/> <Parameter name="id"/> </SqlMethod> <SqlMethod name="update" type="preparedStatement" return="rowcount" saveContextInfo="false"> @@ -102,7 +108,8 @@ Previous_Fire_Time = TO_TIMESTAMP(?, ?), Next_Fire_Time = TO_TIMESTAMP(?, ?), Scheduled_Finish = TO_TIMESTAMP(?, ?), - Ob_Context = ? + Ob_Context = ?, + Updated = NOW() WHERE AD_Process_Request_ID = ? ]]></Sql> <Parameter name="updatedBy"/> diff -r 3ebd957afffb -r 5ec5054e4cff src/org/openbravo/scheduling/ProcessRunner.java --- a/src/org/openbravo/scheduling/ProcessRunner.java Wed Jun 20 10:22:27 2018 +0000 +++ b/src/org/openbravo/scheduling/ProcessRunner.java Mon Jun 18 18:13:28 2018 +0200 @@ -11,7 +11,7 @@ * under the License. * The Original Code is Openbravo ERP. * The Initial Developer of the Original Code is Openbravo SLU - * All portions are Copyright (C) 2008-2011 Openbravo SLU + * All portions are Copyright (C) 2008-2018 Openbravo SLU * All Rights Reserved. * Contributor(s): ______________________________________. ************************************************************************ @@ -91,7 +91,7 @@ throw new ServletException(e); } finally { final String duration = ProcessMonitor.getDuration(endTime - startTime); - ProcessRequestData.update(conn, COMPLETE, requestId); + ProcessRequestData.update(conn, COMPLETE, ctx.getUser(), requestId); ProcessRunData.update(conn, ctx.getUser(), status, duration, bundle.getLog(), executionId); } ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits