在 Appian 接口中使用什么样的字段用于系统更新字段来存储数据而不需要用户获得字段的焦点

What kind of field to use in an Appian interface for a system updated field to store data without needing users to gain focus of the field

我的问题是:

您会在 Appian 界面中使用哪种字段来显示 [但不允许编辑] 您想要显示但不允许用户编辑的字段,例如“创建者”和“创建日期” - 这样来自这些字段的数据实际上存储在数据库中。

问题详情:

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

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

界面 [大部分] 有效 - 因为它允许您在数据库中添加和编辑行 table。

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

“创建者” “创建日期”

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

我的同事已经能够使用 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”字段记录的方法被执行。

因此,用户必须手动单击这些字段中的每一个,然后再次单击它们以使值进入对象,然后将其存储到数据库中。如果不这样做,那么即使表格看起来保存了记录,它实际上根本不保存任何数据。

我在想也许除了 a!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)
          }
        )
      }
    )
  )
)

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