CMIS:日期选择列表包含不适合更新文档的值

CMIS: Choice List of Dates contains values which are not suitable to update a Document

此问题是 Alfresco Community 中问题的副本。

在我们公司,我们使用 Alfresco,我们在其中添加了新的 TestModel 和 ListDate 属性。

接下来我们使用 CMIS Apache Chemistry 连接器,returns 选择列表:

When one of these values is chosen for update, error appears.例如,如果我们选择第一个(2001 年 1 月 2001-01-05 == 5)

HTTP Status 409 - constraint
Constraint violation: 0418520046 Found 1 integrity violations:
Invalid property value: 
Node: workspace://SpacesStore/eaf740b4-d22a-415a-9ca7-f58a8e115dbb
Name: vzv_diff
Type: {TestModel}DiffProperties
Property: {TestModel}ListDate
Constraint: 0418520045 The value is not an allowed value: 1/5/01 12:00 AM

详细第一个值:

java.util.GregorianCalendar[
time=978681600000,
areFieldsSet=true,
areAllFieldsSet=true,
lenient=true,
zone=sun.util.calendar.ZoneInfo[id="GMT-08:00",offset=-28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],
firstDayOfWeek=1,
minimalDaysInFirstWeek=1,
ERA=1,
YEAR=2001,
MONTH=0,
WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,
DAY_OF_MONTH=5,DAY_OF_YEAR=5,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,
AM_PM=0,
HOUR=0,HOUR_OF_DAY=0,
MINUTE=0,
SECOND=0,
MILLISECOND=0,
ZONE_OFFSET=-28800000,DST_OFFSET=0]

值得注意的是 "Client machine" 时间调整为 utc +3, 而在 "Server (where Alfresco is actually installed)" - utc -8.

我们的假设是,Alfresco 预计 0:00 上午或 0:00 下午,并且 12 点是从 UTC 尺度总结的。 尽管这种情况已经很奇怪了,但在更新之前以任何方式调整该值的时间都没有任何帮助。 比方说,设置小时

calendar.add(Calendar.HOUR_OF_DAY, 12);

结果

HTTP Status 409 - constraint
Constraint violation: 0418520818 Found 1 integrity violations:
Invalid property value: 
   Node: workspace://SpacesStore/eaf740b4-d22a-415a-9ca7-f58a8e115dbb
   Name: vzv_diff
   Type: {TestModel}DiffProperties
   Property: {TestModel}ListDate
   Constraint: 0418520817 The value is not an allowed value: 1/5/01 12:00 PM

Apache Workbench 的行为方式相同(但它别无选择): None 种变体适用于此。

我们已经为这个问题苦苦挣扎了好几天都没有成功。

请帮忙。 谢谢。

属性 对 values.You 列表的约束有错误的理解 constraints.If 您正在添加列表约束,您将无法添加以下值未列出。

因此,除了您列出的值之外,您将无法添加日期值。您需要删除约束,只需要 select 数据类型为日期。

在 d:date 类型中添加约束会挑衅地给出 error.Below 是相同的原因。

更新:

首先,它会在保存值时检查值列表,如果您将 2001-01-05 作为值传递,则在约束的情况下将允许,但由于它是字符串值,因此不允许保存在 d:date。第二件事,如果你传递 java 的日期对象,那么应用约束的相等比较将 fail.So 在这种情况下你有 2 个选项。

  1. 将 d:date 更改为 d:text
  2. 移除约束。