首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法序列化Mulesoft中的对象类型Clob

无法序列化Mulesoft中的对象类型Clob
EN

Stack Overflow用户
提问于 2020-04-09 18:18:07
回答 1查看 556关注 0票数 0

我正在尝试从一个具有Clob类型属性a的表中接收信息,这是对象在有效负载中的外观:

代码语言:javascript
复制
TypedValue[value: 'org.mule.runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider@1c11df37', dataType: 'SimpleDataType{type=java.io.InputStream, mimeType='text/plain'}']

它是在以下流程中使用的BGQUEUE_EXEC_STATUS_VALUE和BGQUEUE_EXEC_VALUE属性:

代码语言:javascript
复制
    <flow name="SYS_TBGQUEUEMigrationFlow" doc:id="1302cd81-6b21-424b-9bb8-b097d2ab0c3a" >
        <db:select doc:name="Select SYS_TBGQUEUE from Oracle DB" doc:id="c7b33299-b772-4134-abdd-c7dcb3ad630a" config-ref="MYCAREER_DEV_DB" >
            <db:sql >SELECT * FROM SYS_TBGQUEUE</db:sql>
        </db:select>
        <batch:job jobName="sysLogicBatch_Job" doc:id="08898cbe-62c5-4028-9f4f-dc8be9e6d0d9" >
            <batch:process-records >
                <batch:step name="Batch_Step" doc:id="836a7495-415c-4d5f-945a-03f1f2358cd8" >
                    <batch:aggregator doc:name="Batch Aggregator" doc:id="0425e88e-5e07-4f04-9016-872ccef025bd" streaming="true">
                        <foreach doc:name="For Each" doc:id="a2af7287-961e-4c1e-bd13-993d00e75370">
                            <db:stored-procedure doc:name="Insert into SYS_TBGQUEUE" doc:id="692971ea-d05c-430b-9ae4-3fe8b6d439dc" config-ref="Database_Config">
                                <db:sql>{call InsertIntoBgQueue (:BGQUEUE_CODE, :BGQUEUETYPE_CODE, :IDENTITY_CODE, :BGQUEUE_DATE_INSERT, :BGQUEUE_LOCK_WORKER_ID, 
:BGQUEUE_EXEC_START_DATE, :BGQUEUE_EXEC_EXPIRE_DATE, :BGQUEUE_EXEC_VALUE, :BGQUEUE_EXEC_RETRIES, 
:BGQUEUE_EXEC_HEARTBEAT_DATE, :BGQUEUE_EXEC_END_DATE, :BGQUEUE_EXEC_STATUS_ENUM, :BGQUEUE_EXEC_STATUS_VALUE, :BGQUEUE_STATUS)}</db:sql>
                                <db:input-parameters><![CDATA[#[{
    BGQUEUE_CODE                : payload.bgqueue_code,
    BGQUEUETYPE_CODE            : payload.bgqueuetype_code,
    IDENTITY_CODE               : payload.identity_code,
    BGQUEUE_DATE_INSERT : payload.bgqueue_date_insert,
    BGQUEUE_LOCK_WORKER_ID      : payload.bgqueue_lock_worker_id,
    BGQUEUE_EXEC_START_DATE         : payload.bgqueue_exec_start_date,
    BGQUEUE_EXEC_EXPIRE_DATE            : payload.bgqueue_exec_expire_date,
    BGQUEUE_EXEC_VALUE          : payload.bgqueue_exec_value as String,
    BGQUEUE_EXEC_RETRIES        : payload.bgqueue_exec_retries,
    BGQUEUE_EXEC_HEARTBEAT_DATE : payload.bgqueue_exec_heartbeat_date,
    BGQUEUE_EXEC_END_DATE       : payload.bgqueue_exec_end_date,
    BGQUEUE_EXEC_STATUS_ENUM    : payload.bgqueue_exec_status_enum,
    BGQUEUE_EXEC_STATUS_VALUE   : payload.bgqueue_exec_status_value as String,
    BGQUEUE_STATUS              : payload.bgqueue_status
    }]]]></db:input-parameters>
                            </db:stored-procedure>
                        </foreach>
                    </batch:aggregator>
                </batch:step>
            </batch:process-records>
            <batch:on-complete >
                <logger level="INFO" doc:name="Logger" doc:id="a79350d8-65e9-44ac-a966-8a27036a5477" message="SYS_TBGQUEUE finished data migration." />
            </batch:on-complete>
        </batch:job>
    </flow>

以下是错误消息:

代码语言:javascript
复制
Message               : Could not dispatch records to batch queue BSQ-sysLogicBatch_Job-ab0fcad0-7b15-11ea-9403-3e6fc91c389b due to Serialization Exception
Error type            : MULE:UNKNOWN
Element               : SYS_TBGQUEUEMigrationFlow/processors/1 @ DatabaseConnectorPOC:sysLogic.xml:114
Element XML           : <batch:job jobName="sysLogicBatch_Job" doc:id="08898cbe-62c5-4028-9f4f-dc8be9e6d0d9">
<batch:process-records>
<batch:step name="Batch_Step" doc:id="836a7495-415c-4d5f-945a-03f1f2358cd8">
<batch:aggregator doc:name="Batch Aggregator" doc:id="0425e88e-5e07-4f04-9016-872ccef025bd" streaming="true">
<foreach doc:name="For Each" doc:id="a2af7287-961e-4c1e-bd13-993d00e75370">
<db:stored-procedure doc:name="Insert into SYS_TBGQUEUE" doc:id="692971ea-d05c-430b-9ae4-3fe8b6d439dc" config-ref="Database_Config">
<db:sql>{call InsertIntoBgQueue (:BGQUEUE_CODE, :BGQUEUETYPE_CODE, :IDENTITY_CODE, :BGQUEUE_DATE_INSERT, :BGQUEUE_LOCK_WORKER_ID,:BGQUEUE_EXEC_START_DATE, :BGQUEUE_EXEC_EXPIRE_DATE, :BGQUEUE_EXEC_VALUE, :BGQUEUE_EXEC_RETRIES, 
:BGQUEUE_EXEC_HEARTBEAT_DATE, :BGQUEUE_EXEC_END_DATE, :BGQUEUE_EXEC_STATUS_ENUM, :BGQUEUE_EXEC_STATUS_VALUE, :BGQUEUE_STATUS)}</db:sql>
<db:input-parameters>#[output application/java
---
{
    BGQUEUE_CODE                : payload.bgqueue_code,
    BGQUEUETYPE_CODE            : payload.bgqueuetype_code,
    IDENTITY_CODE               : payload.identity_code,
    BGQUEUE_DATE_INSERT : payload.bgqueue_date_insert,
    BGQUEUE_LOCK_WORKER_ID      : payload.bgqueue_lock_worker_id,
    BGQUEUE_EXEC_START_DATE         : payload.bgqueue_exec_start_date,
    BGQUEUE_EXEC_EXPIRE_DATE            : payload.bgqueue_exec_expire_date,
    BGQUEUE_EXEC_VALUE          : payload.bgqueue_exec_value,
    BGQUEUE_EXEC_RETRIES        : payload.bgqueue_exec_retries,
    BGQUEUE_EXEC_HEARTBEAT_DATE : payload.bgqueue_exec_heartbeat_date,
    BGQUEUE_EXEC_END_DATE       : payload.bgqueue_exec_end_date,
    BGQUEUE_EXEC_STATUS_ENUM    : payload.bgqueue_exec_status_enum,
    BGQUEUE_EXEC_STATUS_VALUE   : payload.bgqueue_exec_status_value,
    BGQUEUE_STATUS              : payload.bgqueue_status
    }]</db:input-parameters>
</db:stored-procedure>
</foreach>
</batch:aggregator>
</batch:step>
</batch:process-records>
<batch:on-complete>
<logger level="INFO" doc:name="Logger" doc:id="a79350d8-65e9-44ac-a966-8a27036a5477" message="SYS_TBGQUEUE finished data migration."></logger>
</batch:on-complete>
</batch:job>

有人知道如何将其转换为字符串吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-04-11 08:10:13

问题看起来是无法序列化Clob来加载批处理作业队列。

在使用如下转换进入批处理作业之前,您可能需要将Clob转换为字符串:

代码语言:javascript
复制
( payload map {
BGQUEUE_CODE                : payload.bgqueue_code,
BGQUEUETYPE_CODE            : payload.bgqueuetype_code,
IDENTITY_CODE               : payload.identity_code,
BGQUEUE_DATE_INSERT : payload.bgqueue_date_insert,
BGQUEUE_LOCK_WORKER_ID      : payload.bgqueue_lock_worker_id,
BGQUEUE_EXEC_START_DATE         : payload.bgqueue_exec_start_date,
BGQUEUE_EXEC_EXPIRE_DATE            : payload.bgqueue_exec_expire_date,
BGQUEUE_EXEC_VALUE          : (payload.bgqueue_exec_value as String) default "",
BGQUEUE_EXEC_RETRIES        : payload.bgqueue_exec_retries,
BGQUEUE_EXEC_HEARTBEAT_DATE : payload.bgqueue_exec_heartbeat_date,
BGQUEUE_EXEC_END_DATE       : payload.bgqueue_exec_end_date,
BGQUEUE_EXEC_STATUS_ENUM    : payload.bgqueue_exec_status_enum,
BGQUEUE_EXEC_STATUS_VALUE   : (payload.bgqueue_exec_status_value as String) default "",
BGQUEUE_STATUS              : payload.bgqueue_status
} ) as Iterator

"as Iterator“只是一个优化,如果你看到一个与之相关的bug (如数据库会话错误),就可以将其删除。

然后,在db:input-parameters中,您只需输入"payload“,因为名称将与您需要的名称相匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61118909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档