cancel
Showing results for 
Search instead for 
Did you mean: 

need help:about runtimeService.startProcessInstanceByKey(key,businessID,map)

liuhuaqing
Champ in-the-making
Champ in-the-making
about the map
my map:
                String str1="test1";
      String str2="test2";
      String str3="test3";
   
      map.put(str1, str1);
      map.put(str2, str2);
      map.put(str3, str3);



1   when i put one parameter in map ,it works fine。
2   when i put one more parameters in map,occur  error 。

thank you inadvance.

the erro :
Error updating database.  Cause: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
### The error may involve org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity.bulkInsertHistoricVariableInstance-Inline
### The error occurred while setting parameters
### SQL: insert into ACT_HI_VARINST (ID_, PROC_INST_ID_, EXECUTION_ID_, TASK_ID_, NAME_, REV_, VAR_TYPE_, BYTEARRAY_ID_, DOUBLE_, LONG_ , TEXT_, TEXT2_, CREATE_TIME_, LAST_UPDATED_TIME_)     values                   (?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?)         ,          (?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?,          ?)
### Cause: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
   at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:147)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:134)
   at org.activiti.engine.impl.db.DbSqlSession.flushBulkInsert(DbSqlSession.java:850)
   at org.activiti.engine.impl.db.DbSqlSession.flushPersistentObjects(DbSqlSession.java:820)
   at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:797)
   at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:618)
   at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:212)
   at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:138)
   at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:66)
   at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:40)
   at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:35)
   at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:84)
   at demo.EngineController.startProcess(EngineController.java:58)
   at demo.Test.testStartProcess(Test.java:52)
   at demo.Test.main(Test.java:30)
Caused by: java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
   at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4412)
   at com.mysql.jdbc.PreparedStatement.setObject(PreparedStatement.java:4083)
   at org.apache.ibatis.type.ObjectTypeHandler.setNonNullParameter(ObjectTypeHandler.java:28)
   at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:46)
   at org.apache.ibatis.type.UnknownTypeHandler.setNonNullParameter(UnknownTypeHandler.java:37)
   at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:46)
   at org.apache.ibatis.executor.parameter.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:91)
   at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:77)
   at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:58)
   at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:71)
   at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:44)
   at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:108)
   at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
   at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:145)
   … 15 more
Caused by: java.io.NotSerializableException: org.activiti.engine.impl.variable.StringType
   at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
   at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
   at com.mysql.jdbc.PreparedStatement.setSerializableObject(PreparedStatement.java:4401)
   … 28 more
11 REPLIES 11

shagufta1
Champ in-the-making
Champ in-the-making
Hi liuhuaqing,

I tried following code and it works fine for me, I don't know why it causing you an error, Might be you are violating the constraint of the database table. Check your DB as well whether there is entry of this variables or not.

Map<String, Object> taskVariables = new HashMap<String, Object>();
  String str1="test1";
  String str2="test2";
  String str3="test3";
 
  taskVariables.put(str1, str1);
  taskVariables.put(str2, str2);
  taskVariables.put(str3, str3);
 
  ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("myProcess","",taskVariables);

Thanks,
Shagufta Shaikh,
Developer,
Tata Consultancy Services
http://www.tcs.com

liuhuaqing
Champ in-the-making
Champ in-the-making
by activiti.cfg.xml

java code :
————————————————————–

engine = ProcessEngines.getDefaultProcessEngine();
…….
runtimeService.startProcessInstanceByKey(processKey, businessID, map);




i tryed other functions that has the map parameter,the result is the same i post


here is activiti.cfg.xml:
————————————————————
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="processEngineConfiguration"
  class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
  <property name="databaseSchemaUpdate" value="true" />
  <property name="jdbcUrl" value="jdbc:mysql://localhost/activitidb" />
  <property name="jdbcDriver" value="com.mysql.jdbc.Driver" />
  <property name="jdbcUsername" value="root" />
  <property name="jdbcPassword" value="root" />
  <property name="jobExecutorActivate" value="true" />
  <!– <property name="activityFontName" value="宋体"/> –>
</bean>
</beans>


here is the dependences in my project:
————————————————————
<dependencies>
  <dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<type>maven-plugin</type>
</dependency>
  <dependency>
   <groupId>org.activiti</groupId>
   <artifactId>activiti-engine</artifactId>
   <version>5.19.0.2</version>
  </dependency>
  <dependency>
   <groupId>org.activiti</groupId>
   <artifactId>activiti-spring</artifactId>
   <version>5.19.0.2</version>
  </dependency>
  <dependency>
   <groupId>org.codehaus.groovy</groupId>
   <artifactId>groovy-all</artifactId>
   <version>2.4.3</version>
  </dependency>
  <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.1.1</version>
  </dependency>
  <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.25</version>
  </dependency>
  <dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <version>1.3.168</version>
  </dependency>
  <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.8.1</version>
  </dependency>
  <dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.10</version>
</dependency>
</dependencies>

shagufta1
Champ in-the-making
Champ in-the-making
I am not using the activiti.cfg.xml, This is how I am communicating with database,

ProcessEngine processEngine = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration()
    .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
    .setJdbcUrl("jdbc:h2:tcp://localhost/activiti;DB_CLOSE_DELAY=1000;")
    .setJdbcUsername("alfresco")
    .setJdbcPassword("alfresco")
    .setAsyncExecutorEnabled(true)
    .setAsyncExecutorActivate(false)
    .setProcessEngineName("MyEngine")
    .buildProcessEngine();

Might you get any idea,

Thanks,
Shagufta Shaikh,
Developer,
Tata Consultancy Services
http://www.tcs.com

liuhuaqing
Champ in-the-making
Champ in-the-making
thank you



i trid the code that you edit.it still not work(i use the mysql db).the porcess worked fine until  arrived endEvent,and the erro comes


————–the process i deployed
startEvent—->userTask—->endEvent


————–the  java code

engine = ProcessEngineConfiguration.createStandaloneProcessEngineConfiguration()
    .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE)
    .setJdbcUrl("jdbc:mysql://localhost/activitidb")   //diferent from your
    .setJdbcUsername("root")
    .setJdbcPassword("root")
    .setAsyncExecutorEnabled(true)
    .setAsyncExecutorActivate(false)
    .setProcessEngineName("MyEngine")
    .buildProcessEngine();

shagufta1
Champ in-the-making
Champ in-the-making
Is the error is same? if not then please provide me that error trace.

liuhuaqing
Champ in-the-making
Champ in-the-making
yes ,the same erro。when the map has just one parameter ,it worked fine。now i am tying to use the h2 db

shagufta1
Champ in-the-making
Champ in-the-making
Do one thing open your db and try enter values manually in that and check wehther it is working or not

liuhuaqing
Champ in-the-making
Champ in-the-making
ha,i tyed the newest mybatis .is is ok now.哈

abbask
Champ on-the-rise
Champ on-the-rise
please post your hashmap/map declaration. try passing direct string values inside put() method e.g. map.put("test2", "test2")
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.