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

Reply via email to