Menu

#935 (Задача 97) Проблема с экспортом (как на сервер так и в файл) процесса с композициями

v4.2
closed-fixed
None
5
2015-04-27
2015-01-29
vromav
No

(Наверное как-то связана с #931)

Не получается экспортировать процесс в файл и на сервер.

Создал 4 композиции, и 3 элемента подпроцесса, делал подключение композиций в подпроцесах, а затем неиспользуемую композицию удалил. Закрыл процесс, затем попробовал открыть и экспортировать, получил ошибку:

java.lang.RuntimeException: No file found for 4 (sub4)

3 Attachments

Discussion

  • vromav

    vromav - 2015-01-29

    Зависимость пока не выявил

     
  • Dofs

    Dofs - 2015-01-29

    C 931 не связана, т.к. там изменения затронули только серверную часть.

     
  • vromav

    vromav - 2015-01-29

    Не могу повторить, но процесс у меня остался в редакторе. Если какие-то данные из него могут помочь, сообщи.

     
  • Dofs

    Dofs - 2015-01-30

    Просьба заархивировать папку с файлами БП и выложить сюда.

     
  • vromav

    vromav - 2015-02-04

    Сценарий воспроизведения

    • Создать процесс с композицией
    • Сохранить процесс
    • Выделить на графе элемент подпроцесс и создать новую композицию, откроется новое окно с композицией
    • Закрываем основной процесс, на предложение сохранить – отказываем, закрываем и вкладку с подпроцессом
    • Открываем главный процесс, при попытке экспорта возникает ошибка
     

    Last edit: vromav 2015-02-04
  • vromav

    vromav - 2015-02-04

    UPD: но если переоткрыть редактор, то ошибка в данном процессе больше не возникает.

     
  • Andrei Mikheev

    Andrei Mikheev - 2015-02-12
    • summary: Проблема с экспортом (как на сервер так и в файл) процесса с композициями --> (Задача 97) Проблема с экспортом (как на сервер так и в файл) процесса с композициями
    • assigned_to: Dofs --> mexanix
     
  • Andrei Mikheev

    Andrei Mikheev - 2015-02-20
    • assigned_to: mexanix --> Dofs
     
  • Natkinnat

    Natkinnat - 2015-03-05
    • assigned_to: Dofs --> Natkinnat
     
  • Natkinnat

    Natkinnat - 2015-03-23
    • assigned_to: Natkinnat --> Dofs
     
  • Andrei Mikheev

    Andrei Mikheev - 2015-04-06
    • assigned_to: Dofs --> Alexeev Vitaly
     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-20

    Непосредственная причина падения:

    ru.runa.gpd.ProcessCache.getProcessDefinitionFile(ProcessDefinition processDefinition);
    

    Поиск второго, не сохраненного процесса композиции выполняется по условию:

    if (Objects.equal(processDefinition, entry.getValue()))
    

    Что равносильно сравнению по хэшу, т.к. БП-дифинишн не имеет перегрузки equals.

    На этот момент файл в кэше имеется, но БП-дифинишн уже другого экземпляра, пересозданного при открытии БП, поэтому хэш инстансов не совпадает и сравнение заканчивается фейлом.

    Перегружать equals стремно, опять что-нибудь где-нибудь поломается, что этот equals косвенно использует. Можно перегрузить hashCode, но тоже стремно.
    Наверное лучше всего выполнять дополнительное сравнение в этом месте ProcessCache по другим критериям.

     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-20

    [r6231] - бранч для работ по тикету

     

    Related

    Commit: [r6231]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-20

    [r6232] - реализация уникальных хэшкодов БП в пределах воркспейса на относительном пути к файлу

     

    Related

    Commit: [r6232]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-20
    • status: open --> pending-fixed
     
  • vromav

    vromav - 2015-04-27

    Несколько изменил сценарий, и получил случай, когда экспорт на сервер процесса с композицией не работает
    (возможно прямо не связан с текущими изменениями по данному тикету)

    Сценарий воспроизведения:

    • Создать процесс: начало – композиция - окончание, выбрать роль для "Начало"
    • Сохранить процесс
    • Создать композицию
    • Композицию оставляем пустую, никакие элементы не добавляем
    • Закрываем основной процесс, не соглашаемся на изменения
    • Закрываем пустую композицию
    • Открываем главный процесс, видим замечание “Выберите подпроцесс”,

    • выбираем существующую пустую композицию

    • Открывается пустая композиция,
    • Кидаем элемент Начало и Завершение потока в композицию, сохраняем,
    • Закрываем композицию, сохраняем основной процесс, видим что ошибок и замечаний нет
    • Вызываем экспорт процесса
    • Получаем ошибку при экспорте: “Процесс должен иметь начальное состояние”, хотя подпроцесс имеет элемент Начало

    Опять же, после перезапуска DevStudio, проблема не наблюдается.

     
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-27

      Несмотря на ошибку “Процесс должен иметь начальное состояние” в файл такой процесс экспортируется, на сервер отказывается, в целом все воспроизводится.

      Наверное как-то связано с тем, что БП, либо композиция не апдейтит состояние, сохраненное в кэше.

       
    • Alexeev Vitaly

      Alexeev Vitaly - 2015-04-27

      Проблема не связана с кешированием БП, и ее причина в корне отличается от причины ошибки данного тикета. Точная причина вообще пока не понятна - каким-то мифическим способом один и тот же валидатор одного и того же файла при сохранении данных в файл композиции возвращает положительный результат валидации, а при попытке экспорта - ошибку, как будто данные на самом деле не сохранились.
      Разбор перенес в [#1024]

       

      Related

      Bugs: #1024

  • vromav

    vromav - 2015-04-27
    • status: pending-fixed --> open
     
  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-27

    [r6261]

    • удаление композиций из кэша при удалении БП
    • мелкие правки компарации БП по хэшкоду
     

    Related

    Commit: [r6261]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-27

    [r6262]
    удаление отладочного кода

     

    Related

    Commit: [r6262]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-27
     

    Related

    Commit: [r6262]
    Commit: [r6263]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-27

    [r6264] - удаление девелоперского бранча

     

    Related

    Commit: [r6264]

  • Alexeev Vitaly

    Alexeev Vitaly - 2015-04-27
    • status: open --> closed-fixed
     
MongoDB Logo MongoDB