[英]Camunda with SpringBoot: JSON gets cut off after 64 KB
我們對 Camunda 比較陌生,目前正在做一個讓我們有些頭疼的項目。
我們有一個帶有 Angular-Frontend 的 SpringBoot 應用程序,它應該獲取數據以啟動一個流程並通過 REST-API 將它們發送到我們的 Camunda 引擎。 除了常規字符串和 integer 值之外,我們還需要文件(主要是 PDF 和 Word),它們在 Angular-Frontend 中是 base64 編碼的,因此可以變得更大一些。
問題是,變量(包括文件)被編碼到 JSON 中,當 JSON 的大小超過 64 KB 時,我們會收到“意外的 VALUE_STRING 輸入結束”異常。 我們的應用程序通過 SSL(openSSL,我們自己通過 certbot 創建證書並將配置添加到 application.yaml)進行加密,如果這有什么不同的話。
一些要點也相關:
有沒有人遇到過這樣的事情?
這是有問題的異常的最上面部分:
Unexpected end-of-input in VALUE_STRING
at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 65] (through reference chain: org.camunda.bpm.engine.rest.dto.PatchVariablesDto[“modifications”]->java.util.LinkedHashMap[“file_b5b5576b_Object”]->org.camunda.bpm.engine.rest.dto.VariableValueDto[“value”])
這里是我們應用程序中的 SSL 部分。yaml
ssl:
key-store-type: PKCS12
key-store: classpath:keystore.p12
key-alias: tomcat
key-store-password: asdfGH12
enabled: true
有人知道什么可能導致我們的問題嗎? 在此先感謝和歡呼!
弗拉德米爾的評論是正確的。 您不應在工作流引擎的審計跟蹤中存儲大量數據,也不應將其用作記錄系統。 而是擁有一個擁有數據的服務,並且只在流程變量中攜帶數據 object 的引用/主鍵(原因包括關注點分離、性能、可維護性、與其他客戶端的可訪問性、數據隱私、加密......) .
但是,如果您確實將 JSON 存儲在流程變量中,請不要將其存儲為字符串,而是存儲為 object 並告訴 Camunda 它是如何反序列化的(SerializationDataFormat)。
此示例向您展示如何使用 JAVA API 完成此操作:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.