会话参数
会话是用户在可视化中查看混搭时与服务器进行的连接。可以创建会话参数来存储当前用户会话中的临时数据。例如,可使用会话参数存储混搭的首选样式主题的设置。会话参数的值对于连接到服务器的每个用户都具有唯一性,它们会保持存储状态,直到会话结束。当用户在不同混搭之间导航时,也会保留会话参数数据。
当用户关闭应用程序、使用“退出登录”功能退出登录或在服务器上空闲后超时时,会话将结束。平台会话的默认超时时间为 30 分钟。可以使用 SetPlatformSessionTimeout 管理员服务配置默认超时。有关详细信息,请参阅管理员服务
最佳实践
使用数据库或事物来存储多个会话所需的数据。
尽可能使用混搭参数在混搭间传递数据。使用过多的会话参数会影响性能。有关详细信息,请参阅配置混搭参数
对会话参数值使用已更改事件
可在 UserManagementSubsystem 中添加会话参数,然后使用 Mashup Builder 中的“会话”面板来创建与混搭中的小组件、服务或函数的绑定。选择此面板后,将列出可用的会话参数。
“数据属性”面板为每个参数显示了 <Parameter_Name>Changed。仅当客户端会话参数的值发生更改时,才会触发这些事件。使用服务器上的 SetGlobalSessionValues 服务更改参数值时不会触发此事件。要在服务器上的值发生更改时触发事件,请改用用于更新参数的服务的 ServiceInvokeComplete 事件。
添加会话参数
可使用包含一个或多个属性的事物形态实体作为会话参数。要将数据形状添加到 UserManagementSubsystem 实体:
1. 在 Composer 中,单击“浏览”
2. “系统”下,选择“子系统”,然后打开 UserManagementSubsystem 实体。
3. 通过以下方式之一将事物形态添加到子系统:
“服务”选项卡上,执行 AddSessionShape 服务:
a. 找到该服务,然后单击“执行”列下的 执行服务“执行服务”对话框随即打开。
b. “名称”字段中,选择包含会话参数的事物形态,然后单击“执行”
c. 单击“完成”将关闭对话框。
d. 单击“保存”以保存对子系统所做的更改。
“配置”选项卡的“用户会话形态设置”下,单击“添加”。将打开一个对话框。
a. 键入事物形态名称,然后单击“添加”
b. 单击“保存”以保存对子系统所做的更改。
“事物形态”即会添加到子系统中。打开“会话”面板时,数据形状的属性将作为可绑定会话参数列出。
* 
使用具有多行和多列的信息表作为会话参数可能会降低性能。
有关详细信息,请参阅用户管理子系统
访问平台服务器上的会话参数
要检索会话参数值:
1. 在 Composer 中,单击“浏览”
2. “系统”下,选择“资源”,然后打开 CurrentSessionInfo 资源实体。
3. “服务”选项卡上,执行 GetGlobalSessionValues 服务:
a. 在列表中找到该服务,然后在“执行”列下,单击 执行服务“执行服务”对话框随即打开。
b. 单击“执行”。当前会话的参数值将在“输出”窗格中显示。
c. 单击“完成”将关闭对话框。
可用会话参数将在“会话”面板上列出。可使用“数据”面板将 GetGlobalSessionValues 服务添加至混搭,并将其返回值绑定到函数、服务或小组件。
示例:使用会话参数存储文本字段小组件的输入
如果将小组件属性直接绑定至会话参数,则会话属性值会于刷新页面后丢失。要在重新加载页面后保留该值,必须使用 setter 和 getter 服务更新和检索参数值。
1. 可按照“添加会话参数”部分给出的步骤定义会话参数。
2. 创建一个帮助程序事物,其中包含用于设置会话参数值的服务。
3. 将输入参数添加到名为 input_string 的 setter 服务,然后添加以下 JavaScript 代码:
Resources["CurrentSessionInfo"].SetGlobalSessionStringValue({name: "your_session_var", value: input_string});
4. 创建混搭,然后添加文本框小组件、按钮小组件和验证器函数。
5. 使用“数据”面板添加以下服务:
在步骤 2 中创建的 setter 服务。
CurrentSessionInfo 资源中的 GetGlobalSessionValues 服务。
6. 将文本字段小组件的 Text 属性绑定至 setter 服务的 input_string 参数。
7. GetGlobalSessionValues 服务的 All Data 属性下的会话变量绑定至文本字段小组件的 Text 属性。
8. 将按钮小组件的 Clicked 事件绑定至 setter 服务。
9. 将 setter 服务的 ServiceInvokeCompleted 事件绑定至验证器函数的 Evaluate 服务。使用此服务甚至可确保在执行函数前始终更新会话参数的值。
10. 编辑函数并将以下代码添加至表达式:
location.reload()
11. 保存并查看混搭。
在文本框中输入值,然后单击按钮重新载入页面。重新加载页面后,会保留该值。
这对您有帮助吗?