If a client application called the getProcessInstanceAudit operation (from the EventCollectorReportService) against a process instance that has itself invoked a service process, the call failed and the following error was written to the BPM log file:
Internal Server Error: Process Runner Failed with the exception PVM-XML-106017: Expression Evaluation Error
This error occurred because the getProcessInstanceAudit response returns "nil" for a service process call, but the EventCollectorReportService schema did not specify the nillable="true" attribute for the instanceId element used by the getProcessInstanceAudit operation.
Issue/Introduction
Error when calling EventCollectorReportService.getProcessInstanceAudit
Environment
All supported operating systems and databases
Resolution
If you have developed client applications that use the BPM public web service API and that call the getProcessInstanceAudit operation, you will need to modify the EventCollectorReportService schema definition used by your application to prevent this error from occurring. To do this, you must manually edit, either:
* your existing XSD (if your application uses the BPM public web service API), or
* the in-line schema in your generated WSDL (if your application uses a WSDL generated from the EventCollectorReportService running on the ActiveMatrix BPM runtime).
Find the following definition of the ProcessInstanceReference:
<xs:complexType name="ProcessInstanceReference"> <xs:annotation> <xs:documentation>An entity representing a reference to a ProcessInstance, using the Process Instance Id</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="instanceId" type="xs:string" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation>The id of this Process Instance Reference </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType>
and add the nillable="true" attribute, as shown below:
<xs:complexType name="ProcessInstanceReference"> <xs:annotation> <xs:documentation>An entity representing a reference to a ProcessInstance, using the Process Instance Id</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="instanceId" type="xs:string" minOccurs="1" maxOccurs="1" nillable="true"> <xs:annotation> <xs:documentation>The id of this Process Instance Reference </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType>