在系统更新字段的Appian界面中使用什么类型的字段来存储数据,而不需要用户关注该字段



我的问题是:

你会在Appian界面中使用什么类型的字段来显示[但不允许编辑]像";由";以及";创建日期";您希望显示但不允许用户编辑的字段,以便这些字段中的数据实际存储到数据库中。

问题详细信息:

我和我的同事对appian开发还很陌生,正在研究一个问题。

她创建了一个界面,允许我们添加和编辑特定引用表中的行。

interfae[主要]起作用,因为它允许您在数据库表中添加和编辑行。

然而,我们遇到的问题是,有些字段不应该由用户直接编辑。例如:

"由";"创建日期";

我们不希望用户为这些字段添加值,而是希望系统通过检索当前登录的用户和系统日期来自动设置这些值。

我的同事已经能够使用loggedInUser((函数和now((函数将字段值设置为其初始状态。

a!textField(
label: "Created by",
labelPosition: "ABOVE",
value: if(ri!RefDataTable.referenceId, ri!RefDataTable.createdby , loggedInUser()),
saveInto: a!save(ri!RefDataTable.createdby, upper(save!value)),
characterLimit: 255,
)

a!localVariables(
local!storedValue1:now(),
a!dateTimeField(
label: "Created Date and Time",
value: if(ri!RefDataTable.referenceId, ri!RefDataTable.createddate, local!storedValue1),
saveInto:{
a!save(ri!RefDataTable.createddate, local!storedValue1)
},
)
)

然而,这些值似乎不会被转移到数据库中,除非字段的失焦事件被触发,这导致方法记录在";saveInto";要执行的字段。

因此,用户有必要手动单击这些字段中的每一个,然后再次从中取出,以便值进入对象,然后存储到数据库中。如果不这样做,那么即使表单显示为保存记录,它实际上也不会保存任何数据。

我在想,也许是某个字段类型不是!textField((应该用于";由";字段。此外,可能是a以外的某些字段类型!dateTimeField((应该用于";创建日期";字段——因为我们实际上并不希望用户编辑这些字段——而是只想将从系统中提取的值存储到这些字段中。

然而,到目前为止,我们还无法弄清楚如何捕捉数据存储到数据库的点,以便我们可以[简单地]在记录存储时[可能通过CDT]将值存储到数据库中。

你不应该从一个接口写入数据库——如果你这样做,很难跟踪数据。

建议的解决方案是在提交时传递接口中捕获的值,并将其传递给流程变量,并在流程中的另一个节点中执行数据库更新。

如果您没有经验,请避免使用a!writeToDataStoreEntity()

a!localVariables(
local!currentUser: loggedInUser(),
a!formLayout(
contents: {
a!columnsLayout(
columns: {
a!columnLayout(
contents: {
a!textField(
label: "Customer",
value: ri!customer,
saveInto: ri!customer,
readOnly: false
),
a!textField(
label: "User",
value: local!currentUser,
readOnly: true
)
}
)
}
)
},
buttons: a!buttonLayout(
primaryButtons: {
a!buttonWidget(
label: "Submit",
submit: true,
saveInto: {
a!save(ri!currentUsser, local!currentUser)
}
)
}
)
)
)

关于日期问题,您可以在界面中显示一个日期,并将另一个日期插入数据库,只需在写入数据库之前创建一个脚本任务,然后写入该日期即可。这是其他技术中的一种。

最新更新