Using Correlations in JBPM-BPEL
dhanushgopinath Jun 3, 2008 5:34 AMHi,
I assume I can post queries regarding JBPM-BPEL here.
I am using jBPM-BPEL 1.1.GA with JBOSS 4.2.0.GA. I am having correlation sets in my process. But I am not able to deploy the process. Deployment throws a hibernate exception
org.jbpm.JbpmException: problem closing services {persistence=org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.ibm.wsdl.MessageImpl} org.jbpm.svc.Services.close(Services.java:245) org.jbpm.JbpmContext.close(JbpmContext.java:139) org.jbpm.bpel.web.DeploymentServlet.deployProcessDefinition(DeploymentServlet.java:195) root cause org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.ibm.wsdl.MessageImpl org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:219)
This happens only when I use correlation sets. If I remove the reference to the correlation sets, it works fine and gets deployed. Any idea how to solve this? has anyone come across such an error? I googled and didn't find many answers
I am attaching the bpel and wsdl files here
process file:
<?xml version="1.0" encoding="UTF-8"?> <bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:corr="http://www.example.org/HTCorrelations/" xmlns:data="http://www.example.org/HTDataSchema/" xmlns:ns1="http://www.example.org/HTCreateAssembly/" xmlns:ns2="http://www.example.org/HTAssignUsersPT/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="HTCreateAssembly" suppressJoinFailure="yes" targetNamespace="http://HTCreateAssembly"> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="HTCreateAssembly.wsdl" namespace="http://www.example.org/HTCreateAssembly/"/> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="HTAssignUsersPT.wsdl" namespace="http://www.example.org/HTAssignUsersPT/"/> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="HTCorrelations.wsdl" namespace="http://www.example.org/HTCorrelations/"/> <bpel:partnerLinks> <bpel:partnerLink myRole="StartAssemblyServiceODE" name="StartAssemblyPL" partnerLinkType="ns1:StartAssemblyLT"/> <bpel:partnerLink myRole="AssignUserServiceResponseODE" name="AssignUserServicePL" partnerLinkType="ns2:AssignUserServiceLT" partnerRole="AssignUserServiceODE"/> </bpel:partnerLinks> <bpel:variables> <bpel:variable name="inputUser" messageType="ns1:StartAssemblyRequest"/> <bpel:variable name="assignUserResponse" messageType="ns2:AssignUsersResponse"/> <bpel:variable name="assignedUser" messageType="ns2:AssignUsersRequest"/> </bpel:variables> <bpel:correlationSets> <bpel:correlationSet name="CS1" properties="corr:UserID"/> </bpel:correlationSets> <bpel:sequence> <bpel:receive createInstance="yes" name="Start" operation="StartAssembly" partnerLink="StartAssemblyPL" variable="inputUser"> </bpel:receive> <bpel:invoke inputVariable="assignedUser" name="InvokeAssignUsers" operation="AssignUsers" partnerLink="AssignUserServicePL"> <bpel:correlations> <bpel:correlation initiate="yes" pattern="request" set="CS1"/> </bpel:correlations> </bpel:invoke> <bpel:receive name="ReceiveResponse" operation="GetAssignUsersResponse" partnerLink="AssignUserServicePL" variable="assignUserResponse"> <bpel:correlations> <bpel:correlation initiate="no" set="CS1"/> </bpel:correlations> </bpel:receive> <bpel:assign> <bpel:copy> <bpel:from> <bpel:literal> <sref:service-ref xmlns:sref="http://docs.oasis-open.org/wsbpel/2.0/serviceref"> <soap:address location="http://localhost:8090/AssignUsersWSODE2/AssignUserServiceODE"/> </sref:service-ref> </bpel:literal> </bpel:from> <bpel:to partnerLink="AssignUserServicePL"/> </bpel:copy> </bpel:assign> <bpel:assign> <bpel:copy> <bpel:from> <bpel:literal> <data:AssignUsers> <data:userid>A3</data:userid> </data:AssignUsers> </bpel:literal> </bpel:from> <bpel:to>$assignedUser.assinguserIP</bpel:to> </bpel:copy> </bpel:assign> <bpel:assign> <bpel:copy> <bpel:from>$assignedUser.assinguserIP</bpel:from> <bpel:to>$assignUserResponse.assinguserRespIP</bpel:to> </bpel:copy> </bpel:assign> </bpel:sequence> </bpel:process>
wsdl files:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:tns="http://www.example.org/HTCreateAssembly/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HTCreateAssembly" xmlns:data="http://www.example.org/HTDataSchema/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://www.example.org/HTCreateAssembly/"> <plnk:partnerLinkType name="StartAssemblyLT" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"> <plnk:role name="StartAssemblyServiceODE" portType="tns:StartAssemblyPT" /> </plnk:partnerLinkType> <wsdl:types> <xsd:schema> <xsd:import namespace="http://www.example.org/HTDataSchema/" schemaLocation="HTDataSchema.xsd"> </xsd:import> </xsd:schema> </wsdl:types> <wsdl:message name="StartAssemblyRequest"> <wsdl:part element="data:AssignUsersReq" name="startAssemblyIP" /> </wsdl:message> <wsdl:portType name="StartAssemblyPT"> <wsdl:operation name="StartAssembly"> <wsdl:input message="tns:StartAssemblyRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="StartAssemblyBinding" type="tns:StartAssemblyPT"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="StartAssembly"> <soap:operation soapAction="http://www.example.org/HTCreateAssembly/StartAssembly" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="StartAssemblyServiceODE"> <wsdl:port name="StartAssemblyPort" binding="tns:StartAssemblyBinding"> <soap:address location="http://localhost:8080/ode/processes/StartAssembly"/> </wsdl:port> </wsdl:service> </wsdl:definitions> ______________________________________ <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:tns="http://www.example.org/HTAssignUsersPT/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HTAssignUsersPT" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" targetNamespace="http://www.example.org/HTAssignUsersPT/" xmlns:data="http://www.example.org/HTDataSchema/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <plnk:partnerLinkType name="AssignUserServiceLT" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype"> <plnk:role name="AssignUserServiceODE" portType="tns:AssignUserPT" /> <plnk:role name="AssignUserServiceResponseODE" portType="tns:AssignUserResponsePT" /> </plnk:partnerLinkType> <wsdl:types> <xsd:schema> <xsd:import namespace="http://www.example.org/HTDataSchema/" schemaLocation="HTDataSchema.xsd"> </xsd:import> </xsd:schema> </wsdl:types> <wsdl:message name="AssignUsersRequest"> <wsdl:part element="data:AssignUsersReq" name="assinguserIP" /> </wsdl:message> <wsdl:message name="AssignUsersResponse"> <wsdl:part element="data:AssignUsersReply" name="assinguserRespIP" /> </wsdl:message> <wsdl:portType name="AssignUserPT"> <wsdl:operation name="AssignUsers"> <wsdl:input message="tns:AssignUsersRequest" /> </wsdl:operation> </wsdl:portType> <wsdl:portType name="AssignUserResponsePT"> <wsdl:operation name="GetAssignUsersResponse"> <wsdl:input message="tns:AssignUsersResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="AssignUserBinding" type="tns:AssignUserPT"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="AssignUsers"> <soap:operation soapAction="http://www.example.org/HTAssignUsersPT/AssignUsers" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:binding name="AssignUserResponseBinding" type="tns:AssignUserResponsePT"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="GetAssignUsersResponse"> <soap:operation soapAction="http://www.example.org/HTAssignUsersPT/GetAssignUsersResponse" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="AssignUserServiceODE"> <wsdl:port name="AssignUserServicePort" binding="tns:AssignUserBinding"> <soap:address location="http://localhost:8090/AssignUserWsODE/AssignUserServiceODE"></soap:address> </wsdl:port> <wsdl:port name="AssignUserResponseServicePort" binding="tns:AssignUserResponseBinding"> <soap:address location="http://localhost:8080/ode/processes/AssignUserResponse"></soap:address> </wsdl:port> </wsdl:service> </wsdl:definitions>
Correlation WSDL:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:tns="http://www.example.org/HTCorrelations/" xmlns:usrmsg="http://www.example.org/HTAssignUsersPT/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="HTCorrelations" xmlns:data="http://www.example.org/HTDataSchema/" xmlns:vprop="http://docs.oasis-open.org/wsbpel/2.0/varprop" targetNamespace="http://www.example.org/HTCorrelations/"> <wsdl:import location="HTAssignUsersPT.wsdl" namespace="http://www.example.org/HTAssignUsersPT/"/> <wsdl:types> <xsd:schema> <xsd:import namespace="http://www.example.org/HTDataSchema/" schemaLocation="HTDataSchema.xsd"> </xsd:import> </xsd:schema> </wsdl:types> <vprop:property name="UserID" type="xsd:string"/> <vprop:propertyAlias messageType="usrmsg:AssignUsersRequest" part="assinguserIP" propertyName="tns:UserID"> <vprop:query>/data:AssignUsersReq/data:userid</vprop:query> </vprop:propertyAlias> <vprop:propertyAlias messageType="usrmsg:AssignUsersResponse" part="assinguserRespIP" propertyName="tns:UserID"> <vprop:query>/data:AssignUsersReply/data:userid</vprop:query> </vprop:propertyAlias> </wsdl:definitions>
Is there any document explaining the usage of correlation sets in Jboss jbpm bpel?
Thanks
Dhanush Gopinath