目 录CONTENT

文章目录

camunda结束的任务不支持查询Variables

Administrator
2025-04-08 / 0 评论 / 0 点赞 / 8807 阅读 / 0 字

在使用camunda7的版本中,发一下一个奇怪的特性,任务在没有结束前是可以查询到Variables信息的,但是在任务结束后,就无法通过API或者函数

查询任务变量的API:Get Task Variables

简单工单举例:

通过查询运行中的任务,可以找到任务ID: aefc0127-142d-11f0-aafd-0242ac194011

任务完整信息:
            {'assignee': 'user1', 'case_definition_id': None, 'case_execution_id': None, 'case_instance_id': None, 'delegation_state': None, 'description': None, 'execution_id': 'aefbda13-142d-11f0-aafd-0242ac194011', 'form_key': None, 'id_': 'aefc0127-142d-11f0-aafd-0242ac194011', 'name': '审批节点', 'owner': None, 'parent_task_id': None, 'priority': 50, 'process_definition_id': 'Process_0pimjiv:2:b00795e0-13b9-11f0-8e74-0242ac194011', 'process_instance_id': 'aefb8bec-142d-11f0-aafd-0242ac194011', 'suspended': False, 'task_definition_key': 'Activity_1r7zu6e', 'created': datetime.datetime(2025, 4, 8, 11, 58, 9, 32000, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800))), 'due': None, 'follow_up': None}
            
            任务ID: aefc0127-142d-11f0-aafd-0242ac194011
            任务名称: 审批节点
            创建时间: 2025-04-08 11:58:09.032000+08:00
            流程实例ID: aefb8bec-142d-11f0-aafd-0242ac194011
            流程定义ID: Process_0pimjiv:2:b00795e0-13b9-11f0-8e74-0242ac194011
            审批人: user1
            
            流程实例详情:
            ProcessInstance(id_='aefb8bec-142d-11f0-aafd-0242ac194011', definition_id='Process_0pimjiv:2:b00795e0-13b9-11f0-8e74-0242ac194011', business_key='order-123', case_instance_id=None, tenant_id=None, suspended=False, links=(), variables=None)

同时查询当前任务的Variables

query_task_variable:73 - {'field1': {'type': 'String', 'value': 'some_value', 'valueInfo': {}}, 'initialField1Value': {'type': 'String', 'value': 'some_value', 'valueInfo': {}}, 'assignee1': {'type': 'String', 'value': 'user1', 'valueInfo': {}}}

之后,将任务结束,再次查询任务里的变量,发现无法通过API接口查询

查询出错: 500 Server Error:  for url: http://camunda.local:8080/engine-rest/task/aefc0127-142d-11f0-aafd-0242ac194011/variables

root@arr:/service/app/integrations/camunda/test# curl http://camunda.local:8080/engine-rest/task/aefc0127-142d-11f0-aafd-0242ac194011/variables
{"type":"NullValueException","message":"task aefc0127-142d-11f0-aafd-0242ac194011 doesn't exist: task is null","code":0}

使用库函数,也无法获取到已完成的任务变量

class LocalVariablesGetList(pycamunda.base.CamundaRequest):

    task_id = PathParameter('id')
    deserialize_values = QueryParameter('deserializeValues')

    def __init__(
        self,
        url: str,
        task_id: str,
        deserialize_values: bool = False
    ):
        """Get local variables of an user task.

        Local variables are variables that do only exist in the context of a task.

        :param url: Camunda Rest engine URL.
        :param task_id: Id of the task.
        :param deserialize_values: Whether serializable variable values are deserialized on server
                                   side.
        """
        super().__init__(url=url + URL_SUFFIX + '/{id}/localVariables')
        self.task_id = task_id
        self.deserialize_values = deserialize_values

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区