Null pointer exception
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-19-2013 04:26 AM
hello I can not solve this problem of nullpinterExeption, how to have the value of loan Amount
How can I read the value of the form LoanAmount form ProcessStartExecutionListener class?
<h1>LoanApplication.java</h1>
<h1>CreateApplicationTask.java</h1>
<h1>ProcessStartExecutionListener.java</h1>
<h1>ProcessEndEvent.java</h1>
How can I read the value of the form LoanAmount form ProcessStartExecutionListener class?
<?xml version="1.0" encoding="UTF-8"?><definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.bpmnwithactiviti.org/loanrequest"> <process id="loanrequest" name="Process to handle a loan request" isExecutable="true"> <extensionElements> <activiti:executionListener class="org.bpmnwithactiviti.chapter5.listener.ProcessStartExecutionListener" event="start" /> <activiti:executionListener class="org.bpmnwithactiviti.chapter5.listener.ProcessEndExecutionListener" event="end" /> </extensionElements> <startEvent id="theStart" > <extensionElements> <activiti:formProperty id="name" name="Name" type="string" required="true"></activiti:formProperty> <activiti:formProperty id="emailAddress" name="Email address" type="string" required="true"></activiti:formProperty> <activiti:formProperty id="income" name="Income" type="long" required="true"></activiti:formProperty> <activiti:formProperty id="loanAmount" name="Loan amount" type="long" required="true" ></activiti:formProperty> </extensionElements> </startEvent> <sequenceFlow id="sequenceFlow-d450f4a5-4e6f-4b3e-8451-07228a5b1b0d" sourceRef="theStart" targetRef="checkCredit"></sequenceFlow> <scriptTask id="checkCredit" scriptFormat="groovy" activiti:autoStoreVariables="true"> <script> out:println "Checking credit for " + name; creditCheckOk = false; if((income / 2) > loanAmount){ creditCheckOk = true; } out:println "Checked credit for " + name + " outcome is " + creditCheckOk; </script> </scriptTask> <sequenceFlow id="sequenceFlow-b5777c55-420a-426c-9245-44fcb83e4df4" sourceRef="checkCredit" targetRef="createApplication"></sequenceFlow> <serviceTask id="createApplication" activiti:class="org.bpmnwithactiviti.chapter5.CreateApplicationTask"></serviceTask> <sequenceFlow id="sequenceFlow-a205db56-b336-492d-92b1-3c7996441546" sourceRef="createApplication" targetRef="evaluateLoanRequest"></sequenceFlow> <userTask id="evaluateLoanRequest" name="Evaluate loan request" activiti:assignee="fozzie"> <extensionElements> <activiti:formProperty id="customerName" name="Customer name" expression="${loanApplication.customerName}" writable="false"></activiti:formProperty> <activiti:formProperty id="income" name="Income of customer" expression="${loanApplication.income}" writable="false"></activiti:formProperty> <activiti:formProperty id="requestedAmount" name="Requested loan amount" expression="${loanApplication.requestedAmount}" writable="false"></activiti:formProperty> <activiti:formProperty id="creditCheckOk" name="Outcome of credit check" expression="${loanApplication.creditCheckOk}" writable="false"></activiti:formProperty> <activiti:formProperty id="requestApproved" name="Do you approve the request?" type="enum" required="true"> <activiti:value id="true" name="Yes"></activiti:value> <activiti:value id="false" name="No"></activiti:value> </activiti:formProperty> <activiti:formProperty id="explanation" name="Explanation"></activiti:formProperty> </extensionElements> </userTask> <sequenceFlow id="sequenceFlow-bb80e463-aeaa-400f-b4e0-93411ebf9d03" sourceRef="evaluateLoanRequest" targetRef="approvalGateway"></sequenceFlow> <boundaryEvent id="escalationTimer" attachedToRef="evaluateLoanRequest" cancelActivity="true"> <timerEventDefinition> <timeDuration>PT1M</timeDuration> </timerEventDefinition> </boundaryEvent> <sequenceFlow id="sequenceFlow-e77d6d4d-9c90-4abe-979b-55562296a412" sourceRef="escalationTimer" targetRef="evaluateRequestByManager"></sequenceFlow> <userTask id="evaluateRequestByManager" name="Evaluate loan request by manager" activiti:candidateGroups="management"> <extensionElements> <activiti:formProperty id="customerName" name="Customer name" expression="${loanApplication.customerName}" writable="false"></activiti:formProperty> <activiti:formProperty id="income" name="Income of customer" expression="${loanApplication.income}" writable="false"></activiti:formProperty> <activiti:formProperty id="requestedAmount" name="Requested loan amount" expression="${loanApplication.requestedAmount}" writable="false"></activiti:formProperty> <activiti:formProperty id="creditCheckOk" name="Outcome of credit check" expression="${loanApplication.creditCheckOk}" writable="false"></activiti:formProperty> <activiti:formProperty id="requestApproved" name="Do you approve the request?" type="enum" required="true"> <activiti:value id="true" name="Yes"></activiti:value> <activiti:value id="false" name="No"></activiti:value> </activiti:formProperty> <activiti:formProperty id="explanation" name="Explanation"></activiti:formProperty> </extensionElements> </userTask> <sequenceFlow id="sequenceFlow-d94c0587-5717-4229-a236-c861b3cfcf36" sourceRef="evaluateRequestByManager" targetRef="approvalGateway"></sequenceFlow> <exclusiveGateway id="approvalGateway"></exclusiveGateway> <sequenceFlow id="sequenceFlow-8146a86e-12d1-4a93-9e2d-a48daa266830" sourceRef="approvalGateway" targetRef="informCustomer"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == false}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="sequenceFlow-298593fc-ef06-49cc-8714-e4d8cf9de075" sourceRef="approvalGateway" targetRef="processRequest"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == true}]]></conditionExpression> </sequenceFlow> <serviceTask id="informCustomer" activiti:type="mail"> <extensionElements> <activiti:field name="to"> <activiti:expression>${loanApplication.emailAddress}</activiti:expression> </activiti:field> <activiti:field name="subject"> <activiti:string>Loan Request Denied</activiti:string> </activiti:field> <activiti:field name="html"> <activiti:expression><html> <body> Hello ${loanApplication.customerName},<br/><br/> Your loan request has been denied for the following reason: ${explanation}.<br/><br/> Kind regards,<br/> The Loan Sharks Company. </body> </html></activiti:expression> </activiti:field> </extensionElements> </serviceTask> <sequenceFlow id="sequenceFlow-d47de415-a158-43f4-8a68-6c28a92011c2" sourceRef="informCustomer" targetRef="theEnd"></sequenceFlow> <userTask id="processRequest" name="Process the loan request" activiti:assignee="fozzie"></userTask> <sequenceFlow id="sequenceFlow-7c3caf15-06b9-4a7b-880a-a19977c7c4c8" sourceRef="processRequest" targetRef="theEnd"></sequenceFlow> <endEvent id="theEnd"></endEvent> </process> <bpmndi:BPMNDiagram id="BPMNDiagram_loanrequest"> <bpmndi:BPMNPlane bpmnElement="loanrequest" id="BPMNPlane_loanrequest"> <bpmndi:BPMNShape bpmnElement="escalationTimer" id="BPMNShape_escalationTimer"> <omgdc:Bounds height="30.0" width="30.0" x="445.0" y="45.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="createApplication" id="BPMNShape_createApplication"> <omgdc:Bounds height="60.0" width="100.0" x="230.0" y="4.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="processRequest" id="BPMNShape_processRequest"> <omgdc:Bounds height="60.0" width="100.0" x="620.0" y="0.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="evaluateRequestByManager" id="BPMNShape_evaluateRequestByManager"> <omgdc:Bounds height="60.0" width="140.0" x="340.0" y="160.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="informCustomer" id="BPMNShape_informCustomer"> <omgdc:Bounds height="60.0" width="100.0" x="620.0" y="160.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="evaluateLoanRequest" id="BPMNShape_evaluateLoanRequest"> <omgdc:Bounds height="60.0" width="100.0" x="380.0" y="0.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="approvalGateway" id="BPMNShape_approvalGateway"> <omgdc:Bounds height="40.0" width="40.0" x="530.0" y="90.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd"> <omgdc:Bounds height="35.0" width="35.0" x="770.0" y="95.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="checkCredit" id="BPMNShape_checkCredit"> <omgdc:Bounds height="60.0" width="100.0" x="80.0" y="6.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart"> <omgdc:Bounds height="35.0" width="35.0" x="0.0" y="21.0"></omgdc:Bounds> </bpmndi:BPMNShape> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-298593fc-ef06-49cc-8714-e4d8cf9de075" id="BPMNEdge_sequenceFlow-298593fc-ef06-49cc-8714-e4d8cf9de075"> <omgdi:waypoint x="570.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="582.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="582.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="620.0" y="30.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-b5777c55-420a-426c-9245-44fcb83e4df4" id="BPMNEdge_sequenceFlow-b5777c55-420a-426c-9245-44fcb83e4df4"> <omgdi:waypoint x="180.0" y="36.0"></omgdi:waypoint> <omgdi:waypoint x="192.0" y="36.0"></omgdi:waypoint> <omgdi:waypoint x="192.0" y="34.0"></omgdi:waypoint> <omgdi:waypoint x="230.0" y="34.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-d450f4a5-4e6f-4b3e-8451-07228a5b1b0d" id="BPMNEdge_sequenceFlow-d450f4a5-4e6f-4b3e-8451-07228a5b1b0d"> <omgdi:waypoint x="35.0" y="38.0"></omgdi:waypoint> <omgdi:waypoint x="42.0" y="36.0"></omgdi:waypoint> <omgdi:waypoint x="42.0" y="36.0"></omgdi:waypoint> <omgdi:waypoint x="80.0" y="36.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-e77d6d4d-9c90-4abe-979b-55562296a412" id="BPMNEdge_sequenceFlow-e77d6d4d-9c90-4abe-979b-55562296a412"> <omgdi:waypoint x="460.0" y="75.0"></omgdi:waypoint> <omgdi:waypoint x="460.0" y="117.0"></omgdi:waypoint> <omgdi:waypoint x="490.0" y="117.0"></omgdi:waypoint> <omgdi:waypoint x="490.0" y="230.0"></omgdi:waypoint> <omgdi:waypoint x="430.0" y="230.0"></omgdi:waypoint> <omgdi:waypoint x="410.0" y="220.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-8146a86e-12d1-4a93-9e2d-a48daa266830" id="BPMNEdge_sequenceFlow-8146a86e-12d1-4a93-9e2d-a48daa266830"> <omgdi:waypoint x="570.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="582.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="582.0" y="190.0"></omgdi:waypoint> <omgdi:waypoint x="620.0" y="190.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-d47de415-a158-43f4-8a68-6c28a92011c2" id="BPMNEdge_sequenceFlow-d47de415-a158-43f4-8a68-6c28a92011c2"> <omgdi:waypoint x="720.0" y="190.0"></omgdi:waypoint> <omgdi:waypoint x="732.0" y="190.0"></omgdi:waypoint> <omgdi:waypoint x="732.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="770.0" y="112.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-d94c0587-5717-4229-a236-c861b3cfcf36" id="BPMNEdge_sequenceFlow-d94c0587-5717-4229-a236-c861b3cfcf36"> <omgdi:waypoint x="480.0" y="190.0"></omgdi:waypoint> <omgdi:waypoint x="492.0" y="190.0"></omgdi:waypoint> <omgdi:waypoint x="492.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="530.0" y="110.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-bb80e463-aeaa-400f-b4e0-93411ebf9d03" id="BPMNEdge_sequenceFlow-bb80e463-aeaa-400f-b4e0-93411ebf9d03"> <omgdi:waypoint x="480.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="492.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="492.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="530.0" y="110.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-a205db56-b336-492d-92b1-3c7996441546" id="BPMNEdge_sequenceFlow-a205db56-b336-492d-92b1-3c7996441546"> <omgdi:waypoint x="330.0" y="34.0"></omgdi:waypoint> <omgdi:waypoint x="342.0" y="34.0"></omgdi:waypoint> <omgdi:waypoint x="342.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="380.0" y="30.0"></omgdi:waypoint> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge bpmnElement="sequenceFlow-7c3caf15-06b9-4a7b-880a-a19977c7c4c8" id="BPMNEdge_sequenceFlow-7c3caf15-06b9-4a7b-880a-a19977c7c4c8"> <omgdi:waypoint x="720.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="732.0" y="30.0"></omgdi:waypoint> <omgdi:waypoint x="732.0" y="110.0"></omgdi:waypoint> <omgdi:waypoint x="770.0" y="112.0"></omgdi:waypoint> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram></definitions>
<h1>LoanApplication.java</h1>
public class LoanApplication implements Serializable { private static final long serialVersionUID = 1L; private String customerName; private long income; private long requestedAmount; private boolean creditCheckOk; private String explanation; private String emailAddress; private long loanAmount; public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public long getIncome() { return income; } public void setloanAmount(long loanamount) { this.loanAmount = loanamount; } public long getloanAmount() { return loanAmount; } public void setIncome(long income) { this.income = income; } public long getRequestedAmount() { return requestedAmount; } public void setRequestedAmount(long requestedAmount) { this.requestedAmount = requestedAmount; } public boolean isCreditCheckOk() { return creditCheckOk; } public void setCreditCheckOk(boolean creditCheckOk) { this.creditCheckOk = creditCheckOk; } public String getExplanation() { return explanation; } public void setExplanation(String explanation) { this.explanation = explanation; } public String getEmailAddress() { return emailAddress; } public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; }}
<h1>CreateApplicationTask.java</h1>
public class CreateApplicationTask implements JavaDelegate { public void execute(DelegateExecution execution) { LoanApplication la = new LoanApplication(); la.setCreditCheckOk((Boolean) execution.getVariable("creditCheckOk")); la.setCustomerName((String) execution.getVariable("name")); la.setIncome((Long) execution.getVariable("income")); la.setRequestedAmount((Long) execution.getVariable("loanAmount")); la.setEmailAddress((String) execution.getVariable("emailAddress")); execution.setVariable("loanApplication", la); }}
<h1>ProcessStartExecutionListener.java</h1>
public class ProcessStartExecutionListener implements ExecutionListener { @Override public void notify(DelegateExecution execution) throws Exception { LoanRequestReceivedEvent event = new LoanRequestReceivedEvent( execution.getId(), new Date().getTime(), (Integer) execution.getVariable("loanAmount")); EventSender.send(event); }}
<h1>ProcessEndEvent.java</h1>
public class ProcessEndExecutionListener implements ExecutionListener { @Override public void notify(DelegateExecution execution) throws Exception { LoanRequestProcessedEvent event = new LoanRequestProcessedEvent ( execution.getId(), new Date().getTime(), (Boolean) execution.getVariable("requestApproved"), 10); EventSender.send(event); }}
Labels:
- Labels:
-
Archive
5 REPLIES 5
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-22-2013 05:42 AM
Where do you get the nullpointer? A stacktrace would help here a lot (cause I see a lot of code that uses LoanAmount, but don't know where exactly it might go wrong)
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-23-2013 02:09 PM
with class exection listener Start Process Execution listener.java >>
Null pointerExeption in this line :
execution.getvariable("loanAmount")
Null pointerExeption in this line :
execution.getvariable("loanAmount")
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-24-2013 04:20 AM
Ok, I see. Could you verify whether the execution is null or the result of execution.getVariable() is null?
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-24-2013 01:12 PM
When i try execution.getVariableNames() i get in return an empty table"
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-28-2013 05:51 AM
Ok. So how do you start your process instance? I don't see the code where you actually pass the values? Are you filling these in in Activiti Explorer with forms?
