application.yaml file
camunda.bpm.client:
base-url: http://localhost:8080/engine-rest # the URL pointing to the Camunda Platform Runtime REST API
lock-duration: 10000 # defines how many milliseconds the External Tasks are locked until they can be fetched again
subscriptions:
eligibilityCheck:
variable-names: name,address # only fetch these two variables
process-definition-key: loanprocess
logging.level.org.camunda.bpm.client: DEBUG
external task
import org.camunda.bpm.client.spring.annotation.ExternalTaskSubscription;
import org.camunda.bpm.client.task.ExternalTaskHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class savedata {
@Autowired
private UserRepository userRepository;
@Bean
@ExternalTaskSubscription("eligibilityCheck")
public ExternalTaskHandler creditScoreCheckerHandler(User user) {
return (externalTask, externalTaskService) -> {
String name = externalTask.getVariable("name");
String address = externalTask.getVariable("address");
System.out.println("name"+name);
System.out.println("address"+address);
userRepository.saveNew(name, address);
externalTaskService.complete(externalTask);
};
}
}
repository class
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
@Query(nativeQuery=true, value= "INSERT INTO EMPLOYEE (id,name,address) VALUES (?,:name,:address)")
void saveNew(@Param("name") String name,@Param("address") String address);
application.properties
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.datasource.schema=schema.sql
spring.datasource.data=schema.sql
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
entity class
@Component
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name="Employee")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private String address;
After starting process in camunda run when i tried to run this it show some error like this.
org.springframework.orm.jpa.JpaSystemException: Mixed parameter strategies - use just one of named, positional or JPA-ordinal strategy; nested exception is org.hibernate.engine.query.ParameterRecognitionException: Mixed parameter strategies - use just one of named, positional or JPA-ordinal strategy
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:331) ~[spring-orm-5.3.23.jar:5.3.23]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233) ~[spring-orm-5.3.23.jar:5.3.23]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23]
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23]
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23]
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) ~[spring-data-jpa-2.7.3.jar:2.7.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5.3.23.jar:5.3.23]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23]
at jdk.proxy2/jdk.proxy2.$Proxy97.saveNew(Unknown Source) ~[na:na]
at com.rutvij.crud.service.savedata.lambda$0(savedata.java:27) ~[classes/:na]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.handleExternalTask(TopicSubscriptionManager.java:152) ~[camunda-external-task-client-7.15.0-alpha5.jar:7.15.0-alpha5]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.lambda$acquire$0(TopicSubscriptionManager.java:108) ~[camunda-external-task-client-7.15.0-alpha5.jar:7.15.0-alpha5]
at java.base/java.util.Arrays$ArrayList.forEach(Arrays.java:4204) ~[na:na]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.acquire(TopicSubscriptionManager.java:103) ~[camunda-external-task-client-7.15.0-alpha5.jar:7.15.0-alpha5]
at org.camunda.bpm.client.topic.impl.TopicSubscriptionManager.run(TopicSubscriptionManager.java:87) ~[camunda-external-task-client-7.15.0-alpha5.jar:7.15.0-alpha5]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]