Ошибка активации на свежем воздухе слишком велика для символов разных типов (255) ACT_HI_TASKINST - PullRequest
1 голос
/ 28 марта 2019

У меня есть рабочий процесс Alfresco (5.2.4), который запускается на движке activiti. Когда пользователь отправляет задачу и блок задач пользователя завершается, я получаю эту ошибку:

2019-03-28 10:02:28,024  ERROR [impl.interceptor.CommandContext] [http-bio-8080-exec-17] Error while closing command context
org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.postgresql.util.PSQLException: ERRORE: il valore è troppo lungo per il tipo character varying(255)
### The error may involve org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity.insertHistoricTaskInstance-Inline
### The error occurred while setting parameters
### SQL: insert into ACT_HI_TASKINST (         ID_,         PROC_DEF_ID_,         PROC_INST_ID_,         EXECUTION_ID_,         NAME_,         PARENT_TASK_ID_,         DESCRIPTION_,         OWNER_,         ASSIGNEE_,         START_TIME_,         CLAIM_TIME_,         END_TIME_,         DURATION_,         DELETE_REASON_,         TASK_DEF_KEY_,         FORM_KEY_,         PRIORITY_,         DUE_DATE_,         CATEGORY_,         TENANT_ID_       ) values (         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?,         ?       )
### Cause: org.postgresql.util.PSQLException: ERRORE: il valore è troppo lungo per il tipo character varying(255)
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:172)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:157)
    at org.activiti.engine.impl.db.DbSqlSession.flushRegularInsert(DbSqlSession.java:830)
    at org.activiti.engine.impl.db.DbSqlSession.flushPersistentObjects(DbSqlSession.java:811)
    at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:794)
    at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:615)

Для того, что я нашел до сих пор, я обнаружил, что activiti автоматически сохраняет историю «шагов», которые выполняются внутри рабочего процесса, и из-за этого возникает ошибка.

Я хотел бы знать, есть ли какое-то определение таблицы БД, которое я могу найти, чтобы найти столбец, который превышает общее число в 255 символов.

Если я не могу изменить свой код JavaScript при завершении задачи пользователя, есть ли способ увеличить это число?

Спасибо

P.S .: Я нашел эту документацию для activiti, но в определении БД нет ничего

UPDATE

Мне удалось напрямую подключиться к моей базе данных activiti в поиске свойств соединений внутри alfresco-global.properties. Поэтому я могу видеть эту структуру таблицы и искать поля varchar (255). Их 7:

  • name_
  • owner_
  • assignee_
  • form_key_
  • category_
  • tenant_id_

Кто-нибудь знает, как распечатать точный запрос activiti?

1 Ответ

0 голосов
/ 28 марта 2019

Я нашел причину ошибки запроса activiti внутри определения моего рабочего процесса.Это была неполная активность: собственность правопреемника, которая вызвала проблему.Я написал activiti:assignee="${mywf_assignee}" вместо activiti:assignee="${mywf_assignee.properties.userName}".Таким образом, в основном запрос будет пытаться записать весь nodeRef внутри столбца assignee_, что составляет более 255 символов.

К сожалению, я не нашел способа показать sql-запрос activiti завершенный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...