Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TaskSchemaType Deserialization defekt #576

Closed
simonhir opened this issue Aug 8, 2023 · 8 comments
Closed

TaskSchemaType Deserialization defekt #576

simonhir opened this issue Aug 8, 2023 · 8 comments
Assignees
Labels
bug Something isn't working digiwf-engine

Comments

@simonhir
Copy link
Member

simonhir commented Aug 8, 2023

Durch die Umbenennung der Namespaces funktioniert die Deserialisierung vom TaskSchemaType bei existierenden Tasks nicht mehr. Problem ist, dass die Ziel-Klasse in Camunda mit io.muenchendigital.digiwf.task.TaskSchemaType hinterlegt ist diese aber mittlerweile de.muenchen.oss.digiwf.task.TaskSchemaType heißt.

Dies führt sowohl beim Anzeigen als auch beim Enrichment zu Fehlern.

Reproduktion

  • Eigene Aufgaben anzeigen
    oder
  • Enrichment ausführen
@simonhir simonhir added bug Something isn't working digiwf-engine labels Aug 8, 2023
@darenegade
Copy link
Member

Lösungsansatz 1:

Enrichment aufbohren, der diesen Change auf allen Tasks übernimmt.

Lösungsansatz 2:

Anzeige und Enrichment resilienter bauen. Dafür müsste man den Fehler genauer verstehen.

Cannot deserialize object in variable 'app_task_schema_type': SPIN/JACKSON-JSON-01007 Cannot construct java type from string 'io.muenchendigital.digiwf.task.TaskSchemaType'

Das Task-Backend kann schon mit beidem umgehen, da es hier nur ein String ist. In Bezug auf Camunda ist es vielleicht möglich dem Deserializer eine Hilfe zu geben.

@darenegade
Copy link
Member

darenegade commented Aug 8, 2023

image.png

image.png

Vielleicht reicht es dem Jackson hier Starthilfe zu geben

@darenegade
Copy link
Member

Die Exception tritt hier erst auf, wenn versucht wird die Variable zu lesen. Das könnten wir auch robuster machen und die Exception fangen und dann den Wert einfach überschreiben über das Enrich.

https://github.com/it-at-m/digiwf-core/blob/dev/digiwf-task/digiwf-polyflow-connector-starter/src/main/java/de/muenchen/oss/digiwf/task/listener/TaskSchemaTypeCreateTaskListener.java#L23

@simonhir Kannst du das mal ausprobieren?

@simonhir
Copy link
Member Author

simonhir commented Aug 10, 2023

Mit @zambrovski abgestimmte Lösung:
Anpassung der Engine DB:

Update act_ru_variable set text2_ = 'de.muenchen.oss.digiwf.task.TaskSchemaType'
where name_ = 'app_task_schema_type' and text2_ = 'io.muenchendigital.digiwf.task.TaskSchemaType';

Update act_ru_variable set text2_ = 'de.muenchen.oss.digiwf.legacy.user.domain.model.User'
where text2_ = 'io.muenchendigital.digiwf.legacy.user.domain.model.User';

commit;

Query zum Auflisten von Class-Variables:

Select v.name_, v.text_, v.text2_, utl_raw.cast_to_varchar2(dbms_lob.substr(b.bytes_)) from act_ru_variable v
join act_ge_bytearray b on b.id_ = v.bytearray_id_
where text2_ not like 'de.muenchen.oss.%' and text2_ is not null and text2_ not like 'java%' and text2_ not like '!%';

@darenegade
Copy link
Member

Damit man es auf Test/Demo testen kann, stellen wir auf den DBs die Daten von Processes-* wieder her

@simonhir
Copy link
Member Author

REQ0537651 für neue Schema und Datenübertragung für digiwf-test und digiwf-demo

@simonhir
Copy link
Member Author

simonhir commented Aug 17, 2023

@zambrovski für io.muenchendigital.digiwf.task.TaskSchemaType und io.muenchendigital.digiwf.legacy.user.domain.model.User hat die obige Query perfekt funktioniert.

Jetzt schlägt das Enrichment aber mit folgender Fehlermeldung auf digiwf-demo mit den Daten von digiwf-processesdemo fehl:

ENGINE-16004 Exception while closing command context: ENGINE-03051 There was an exception while invoking the TaskListener. Message: 'Cannot deserialize object in variable 'Beschreibung_Korrektur_hinweis': SPIN/JACKSON-JSON-01006 Cannot deserialize '{"classNam...' to java type '[simple type, class jdk.nashorn.internal.runtime.Undefined]''

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "className" (class jdk.nashorn.internal.runtime.Undefined), not marked as ignorable (0 known properties: ])
 at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: jdk.nashorn.internal.runtime.Undefined["className"])
	at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)

Bei digiwf-test und den processestest Daten war das kein Problem, da würde ich mal schätzen ist der Task bereits fertig und wird deswegen nicht für das Enrichtment verwendet.

@simonhir
Copy link
Member Author

Lösung für jdk.nashorn.internal.runtime.Undefined: Löschen der Prozess-Instanzen auf Processes-Demo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working digiwf-engine
Projects
None yet
Development

No branches or pull requests

2 participants