Audit cleanups (process names for automations; no audit if no fields changed;

This commit is contained in:
2023-02-17 10:25:14 -06:00
parent 049c60c6e3
commit 05a7f9d847
4 changed files with 33 additions and 8 deletions

View File

@ -210,14 +210,17 @@ public class DMLAuditAction extends AbstractQActionFunction<DMLAuditInput, DMLAu
} }
} }
if(details.isEmpty()) if(details.isEmpty() && DMLType.UPDATE.equals(dmlType))
{ {
details.add(new QRecord().withValue("message", "No fields values were changed.")); // no, let's just noop.
// details.add(new QRecord().withValue("message", "No fields values were changed."));
} }
else
{
AuditAction.appendToInput(auditInput, table.getName(), record.getValueInteger(table.getPrimaryKeyField()), getRecordSecurityKeyValues(table, record), "Record was " + dmlType.pastTenseVerb + contextSuffix, details); AuditAction.appendToInput(auditInput, table.getName(), record.getValueInteger(table.getPrimaryKeyField()), getRecordSecurityKeyValues(table, record), "Record was " + dmlType.pastTenseVerb + contextSuffix, details);
} }
} }
}
// new AuditAction().executeAsync(auditInput); // todo async??? maybe get that from rules??? // new AuditAction().executeAsync(auditInput); // todo async??? maybe get that from rules???
new AuditAction().execute(auditInput); new AuditAction().execute(auditInput);

View File

@ -381,6 +381,10 @@ public class PollingAutomationPerTableRunner implements Runnable
} }
}); });
try
{
QContext.pushAction(runProcessInput);
RunProcessAction runProcessAction = new RunProcessAction(); RunProcessAction runProcessAction = new RunProcessAction();
RunProcessOutput runProcessOutput = runProcessAction.execute(runProcessInput); RunProcessOutput runProcessOutput = runProcessAction.execute(runProcessInput);
if(runProcessOutput.getException().isPresent()) if(runProcessOutput.getException().isPresent())
@ -388,6 +392,11 @@ public class PollingAutomationPerTableRunner implements Runnable
throw (runProcessOutput.getException().get()); throw (runProcessOutput.getException().get());
} }
} }
finally
{
QContext.popAction();
}
}
else if(action.getCodeReference() != null) else if(action.getCodeReference() != null)
{ {
LOG.debug(" Executing action: [" + action.getName() + "] as code reference: " + action.getCodeReference()); LOG.debug(" Executing action: [" + action.getName() + "] as code reference: " + action.getCodeReference());

View File

@ -265,6 +265,8 @@ public class ScheduleManager
runProcessInput.setProcessName(process.getName()); runProcessInput.setProcessName(process.getName());
runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP); runProcessInput.setFrontendStepBehavior(RunProcessInput.FrontendStepBehavior.SKIP);
QContext.pushAction(runProcessInput);
RunProcessAction runProcessAction = new RunProcessAction(); RunProcessAction runProcessAction = new RunProcessAction();
runProcessAction.execute(runProcessInput); runProcessAction.execute(runProcessInput);
} }

View File

@ -173,6 +173,17 @@ class DMLAuditActionTest extends BaseTest
assertTrue(auditDetailList.stream().noneMatch(r -> r.getValueString("message").contains("Favorite Shape"))); assertTrue(auditDetailList.stream().noneMatch(r -> r.getValueString("message").contains("Favorite Shape")));
MemoryRecordStore.getInstance().reset(); MemoryRecordStore.getInstance().reset();
} }
///////////////////////////////////////////////////////////
// confirm if nothing changed on an edit, that no audit. //
///////////////////////////////////////////////////////////
{
qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY).setAuditRules(new QAuditRules().withAuditLevel(AuditLevel.FIELD));
new DMLAuditAction().execute(new DMLAuditInput().withTableActionInput(updateInput).withRecordList(recordList).withOldRecordList(recordList));
List<QRecord> auditList = TestUtils.queryTable("audit");
assertEquals(0, auditList.size());
MemoryRecordStore.getInstance().reset();
}
} }
} }