Version: 24.04
Submission Completed Processor
The Submission Completed Processor is called immediately after a form submission has progressed to form status Completed
. This could occur immediately after submission, or later when the user completes attachments or payment steps.
Service Invoke Parameters
Parameters are not nullable except where otherwise indicated.
Parameter | Description |
---|---|
svcDef | SvcDef A service definition value object. |
txn | Txn A transaction record value object. |
request | HttpServletRequest Nullable. A HTTP servlet request. |
user | User Nullable. An authenticated user. |
Error Handling
If an error occurs, the system catches the error and logs it to the Journey Manager database error log. The user should not be aware that any error has occurred.
info
Any changes made by the service made to the database are persisted with the transaction. It is up to the service to undo any changes it has made.
Templates
Service
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.svc.*
import com.avoka.tm.vo.*
import javax.servlet.http.*
class FluentSubmissionCompletedProcessor {
/**
* Perform submission completed processor service
*/
void invoke(SvcDef svcDef, Txn txn, HttpServletRequest request, User user) {
// TODO: perform business logic
new TxnUpdater(txn)
.setProperty("IDV-Status", "Completed")
.update()
new EventLogger()
.setMessage("User '" + user.loginName + "' completed Identity Verification")
.setRequest(request)
.setTxn(txn)
.logInfo()
}
}
Unit Test
import com.avoka.core.groovy.GroovyLogger as logger
import com.avoka.tm.query.*
import com.avoka.tm.svc.*
import com.avoka.tm.test.*
import com.avoka.tm.util.*
import com.avoka.tm.vo.*
import org.junit.Test
class UnitTest extends AbstractJUnitTest {
/*
* Perform service unit test
*
* throws exception if unit test fails
*/
@Test
void testStatusCompleted() throws Exception {
String xmlData = testParams['Test XML Data']
Txn txn = new MockVoBuilder().createTxnCompletedWithXml(xmlData)
MockRequest request = new MockRequest()
User user = new MockVoBuilder().createUserLocal()
Map params = [
"svcDef": svcDef,
"txn": txn,
"request": request,
"user": user
]
new ServiceInvoker(svcDef).invoke(params)
txn = new TxnQuery()
.setId(txn.id)
.withPropertyMap()
.firstValue()
logger.info txn
assert txn.formStatus == Txn.FORM_COMPLETED
assert txn.propertyMap["IDV-Status"] == 'Completed'
}
}