我的问题是:
您将在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()以外,其他字段类型应该用于“由”字段创建。此外,也许应该为"date created“字段使用一些字段类型,而不是一个!dateTimeField()--因为我们实际上不希望用户编辑这些字段--而是只想将从系统中提取的值存储到这些字段中。
然而,到目前为止,我们还没有找到如何捕获数据存储到数据库的点,这样我们就可以简单地将值存储到数据库中,大概是在存储记录的时候通过CDT存储。
发布于 2022-04-07 22:07:21
您不应该从接口写入数据库,如果您这样做,跟踪数据是非常困难的。
建议的解决方案是在提交时传递接口中捕获的值,并将其传递给处理变量,并在流程中的另一个节点执行db更新。
如果您没有经验,请避免使用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)
}
)
}
)
)
)关于日期问题,您可以在接口中显示一个日期,然后将另一个日期插入到数据库中,只需在写入数据库之前创建一个脚本任务,然后将该日期写入数据库。这是其中一项技术。
https://stackoverflow.com/questions/71775893
复制相似问题