簡體   English   中英

帶有 SpringBoot 的 Camunda:JSON 在 64 KB 后被切斷

[英]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)進行加密,如果這有什么不同的話。

一些要點也相關:

  • 在本地(運行 Windows 10 或在 CentOS 上的 VM 中)它可以正常工作
  • 當嘗試通過 Camunda 任務列表啟動進程時,它也僅在沒有附加大於 64kb 的文件時才有效,沒有文件,進程開始就好了
  • 出現問題的服務器是來自 Strato 的 VM,運行 Ubuntu,使用 openJDK 13.0.1 和 PostgreSQL 數據庫
  • 通常我們也連接到我們的 AzureAD(這就是我們需要 SSL 的原因),但是為了測試而關閉了它,所以這應該不是問題。 提一下以防萬一

有沒有人遇到過這樣的事情?


這是有問題的異常的最上面部分:

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 完成此操作:

https://github.com/camunda-consulting/code/blob/4a62d4b44efb126b50f22a6f17273c7c98f8b6da/snippets/rest-service-task-spring/src/main/java/org/camunda/example/service/RestDelegate.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM