AJAX : 在 GET 请求中传递 null 参数

AJAX : Passing null parameter in GET request

我找不到任何东西,所以我在这里寻求一点帮助!我确信这非常简单,但我还是卡住了。

我创建了一个 MVC 应用程序,以便通过 Camunda 的 REST api 从 Camunda 收集数据(在 AJAX 中)。 属性 我需要得到的东西(任务,更准确地说)是 "assignee"。该值通常填写用户名,但也可以为空(在这种情况下,填写 "null")。

但问题是:我无法收集具有此值的任务(事实上,我想显示给定用户的每个任务,包括未分配给任何人的任务,因此他们可以如果他们愿意,可以将它们据为己有)。我在AJAX中使用的url是这样的:

http://localhost:8080/engine-rest/task?assignee=peter

我已经尝试了这些参数但没有成功(根本没有显示任何任务;甚至是 Peter 的,很明显):

task?assignee=peter%2Cundefined
task?assignee=peter%00
task?assignee=peter%2Cnull

有什么想法吗?

我不认为这完全可以通过 Camunda REST 实现 API。如果我没记错的话,无法指定条件 assignee = peter OR assignee is null.

我能想到两个方案:

1。进行两次查询

一个 task?assignee=peter,另一个 task?unassigned=true 并加入列表(它们应该是分离的)。有关参数的说明,请参阅 http://docs.camunda.org/latest/api-references/rest/#task-get-tasks

2。使用 Java API

进行本机查询

本机查询允许您表达任意条件,但是只能使用 Java API 执行。有关本机查询的详细信息,请参阅 http://docs.camunda.org/latest/guides/user-guide/#process-engine-process-engine-api-native-queries

在此示例中,代码为

List<Task> tasks = taskService.createNativeTaskQuery()
  .sql("SELECT count(*) FROM " + managementService.getTableName(Task.class) + " T WHERE T.ASSIGNEE_ = #{assignee} OR T.ASSIGNEE_ IS NULL")
  .parameter("assignee", "peter")
  .list();

如果您想在 REST API 中公开它,在自定义 JAX-RS 应用程序中嵌入和扩展其资源可能是一种可行的方法,请参阅 http://docs.camunda.org/latest/api-references/rest/#overview-embedding-the-api