动态字段是OTRS中一种特殊种类的字段,创建来扩展信息,存储在工单或信件中。这些字段不是固定在系统中的,它们可能仅在特定的屏幕中出现,它们可以是必填的或可选的,它们在屏幕中的呈现方式取决于创建时根据该字段存储的数据定义的字段类型。例如,存储一行文本、一个日期、一个选择项等等的动态字段。
动态字段是由TicketFreeText(工单自定义文本)、TicketFreeKey(工单自定义键)、TicketFreeTime(工单自定义时间)、ArticleFreeText(信件自定义文本)和ArticleFreeKey(信件自定义键)字段(一般在OTRS 3.0之前中使用)演变而来。这些“自定义字段”的限制是:一个工单最多定义16个(文本或下拉)字段和6个时间字段,每个信件3个(文本或下拉)字段,不能更多。
现在使用动态字段后每个工单或信件的这种字段数量限制被移除了,你可以为工单或信件创建想要的任意数量的动态字段。除此之外,动态字段背后的框架已经准备好处理其它对象的定制字段了,而不仅仅是工单和信件。
这个新的处理动态字段的框架使用了模块化方法来构建,每种动态字段可以被看作是这个框架的插件模块。这意味着通过公共的OTRS模块、OTRS功能插件、OTRS定制开发和其它定制开发,可以轻易扩展大量的动态字段。
这个版本包括了下列动态字段类型:
文本(一行文本)
多行文本(多行文本)
复选框
下拉列表框(单个选择,多个值)
多选框(多个选择,多个值)
日期
日期 / 时间
默认情况下,OTRS的干净安装带有两个预安装的内部动态字段,无法删除。 如果你打算在工单、信件、客户用户或客户单位中使用这些字段,则需要创建新的自定义动态字段。
请注意,客户用户和公司的动态字段需要在CustomerUser和CustomerCompany映射中进行相应配置,通常在OTRS安装的Kernel/Config.pm
中找到。
可以在Kernel/Config/Defaults.pm
中找到这些配置的示例。
动态字段的配置分为两个部分,通过系统管理页面的“动态字段”链接添加一个新的动态字段或管理已有的动态字段。要在一个屏幕中显示、强制显示或隐藏一个动态字段,你需要在系统配置屏幕中修改OTRS设置。
点击导航栏中的“系统管理”按钮,然后点击“动态字段”链接(位于屏幕中下的工单设置框中),就会显示动态字段概览,如下图所示:
注意:这个屏幕的内容会随着你添加更多的动态字段而改变,如果系统是从老版本的OTRS升级而来可能已经有一些动态字段。
屏幕左侧边栏中的操作描述了四种可能性:信件、工单、客户用户和客户单位,每个都有自己的动态字段下拉列表选择框。
随着安装的OTRS软件包还会有更多的对象出现在操作栏中。
创建一个动态字段的一般流程是:
在操作栏点击期望的动态字段下拉列表框。
点击你想从列表中添加的动态字段类型。
填写相关配置信息。
保存。
动态字段配置对话框分为两个部分,上部分是所有动态字段的通用设置,下部分则根据动态字段类型可能不同。
动态字段常规设置:
名称:强制、唯一,只允许字母和数字。
这是动态字段的内部名称,用于在一个屏幕中显示或隐藏一个动态字段。对一个动态字段名称的任何修改(不推荐)都需要手动更新使用了该字段的系统配置。
标签:强制。
这是显示在屏幕中的动态字段名称,它可以翻译。
标签的翻译必须手动添加到语言翻译文件中。
字段顺序:强制。
定义动态字段显示在屏幕的相对顺序,每个新字段默认都在最后的位置,这个设置会影响其它已创建的动态字段顺序。
有效性:强制。
一个无效的动态字段不能在任何屏幕中显示,不管它是否配置为显示。
字段类型:强制,只读。
显示当前选择的动态字段类型。
对象类型:强制,只读。
显示动态字段所属的模块范围。
为了描述每个特定的动态字段类型的设置,我们的例子中包含了几个不同的字段。这些新字段在后面部分详细描述。
下面的例子创建的所有动态字段的类型属于工单对象。如果你需要创建一个信件对象的动态字段,只需从信件下拉列表中选择你要的动态字段类型即可。
表 4.6. 下列字段将被添加到系统中:
名称 | 标签 | 类型 |
Field1 | My Field 1 | 文本 |
Field2 | My Field 2 | 文本块 |
Field3 | My Field 3 | 复选框 |
Field4 | My Field 4 | 下拉选项框 |
Field5 | My Field 5 | 多选框 |
Field6 | My Field 6 | 日期 |
Field7 | My Field 7 | 日期 / 时间 |
文本动态字段用于存储一个单行字符串。
文本动态字段设置:
默认值:可选。
这是在编辑屏幕(如新建电话工单或工单编写)显示的默认值。
显示链接:可选。
如果设置了,这个字段的值会在显示屏幕(如工单详情屏幕或工单概览屏幕)被转化成一个可点击的链接。
例如,如果“显示链接”设置为“http://www.otrs.com”,点击这个字段填充的值会让你的浏览器打开OTRS网站。
在设置链接的值中使用[% Data.NameX | uri %](NameX是字段的名称),会将字段的值添加到链接引用中作为其一部分。
多行文本动态字段用于存储一个多行的字符串。
多行文本动态字段设置:
行数:可选,整数。
用于定义该字段在编辑屏幕(如新建电话工单或工单编写)高度。
列数:可选,整数。
这个值用于定义该字段在编辑屏幕中的宽度。
默认值:可选。
这是在编辑屏幕显示的默认值(可以是多行文本)。
复选框动态字段用于存储‘真’或‘假’值,代表一个选中或未选中的复选框。
复选框动态字段设置:
默认值:强制。
这是在编辑屏幕(如新建电话工单或工单编写)显示的默认值,该字段的默认值只能是选中或未选中。
下拉列表框动态字段用于存储从一个固定列表中选择的单个值。
下拉列表框动态字段设置:
可能的值:强制。
选择值的列表。如果使用了,一个新值需要指定键(内部值)和值(显示值)。
默认值:可选。
这是在编辑屏幕(如新建电话工单或工单编写)显示的默认值,默认值只能从定义的可能值中选择。
添加empty值:强制,(是/否)。
如果激活了这个选项,在可能的值之外会定义一个额外的值,显示为“-”,这个特殊值在内部是empty。
可翻译的值:强制,(是/否)。
这个设置用来标记这个动态字段可能的值是否可以翻译。只有显示的值才能翻译,内部值不受影响,值的翻译需要手动添加到语言文件。
显示链接:可选。
如果设置了,这个字段的值会在显示屏幕(如工单详情屏幕或工单概览屏幕)被转化成一个可点击的链接。
例如,如果“显示链接”设置为“http://www.otrs.com”,点击这个字段填充的值会让你的浏览器打开OTRS网站。
在设置链接的值中使用[% Data.NameX | uri %](NameX是字段的名称),会将字段的值添加到链接引用中作为其一部分。
多选动态字段用来存储一个固定列表中的多个值。
多选动态字段设置:
可能的值:强制。
从中选择值的列表。当添加附件的列表项目时,需要指定键(内部值)和值(显示值)
默认值:可选。
这是在编辑屏幕(如新建电话工单或工单编写)显示的默认值,默认值只能从定义的可能值中选择。
添加empty值:强制,(是/否)。
如果激活了这个选项,在可能的值之外会定义一个额外的值,显示为“-”,这个特殊值在内部是empty。
可翻译的值:强制,(是/否)。
这个设置用来标记这个动态字段可能的值是否可以翻译。只有显示的值才能翻译,内部值不受影响,值的翻译需要手动添加到语言文件。
日期动态字段用来存储一个日期值(年、月、日)。
日期动态字段设置:
默认日期差:可选,整数。
在编辑屏幕(如新建电话工单或工单编写)默认显示的时间与当前时间之间相差的秒数(正或负)。
定义年份周期:强制,(是/否)。
用来设置在选择这个字段的年份时,是否限定可以选择使用的年份。如果设置为‘是’,则下列选项可用:
过去的几年:可选,正整数。
在编辑屏幕选择这个动态字段的年份时,能选择从当天算过去的几年。
未来的几年:可选,正整数。
在编辑屏幕选择这个动态字段的年份时,能选择从当天算未来的几年。
显示链接:可选。
如果设置了,这个字段的值会在显示屏幕(如工单详情屏幕或工单概览屏幕)被转化成一个可点击的链接。
例如,如果‘显示链接’设置为“http://www.otrs.com”,点击这个字段填充的值会让你的浏览器打开OTRS网站。
在设置链接的值中使用[% Data.NameX | uri %](NameX是字段的名称),会将字段的值添加到链接引用中作为其一部分。
日期/时间动态字段用来存储一个日期时间值(年、月、日、时、分和秒)。
日期/时间动态字段设置:
默认日期差:可选,整数。
在编辑屏幕(如新建电话工单或工单编写)默认显示的时间与当前时间之间相差的秒数(正或负)。
定义年份周期:强制,(是/否)。
用来设置在选择这个字段的年份时,是否限定可以选择使用的年份。如果设置为‘是’,则下列选项可用:
过去的几年:可选,正整数。
在编辑屏幕选择这个动态字段的年份时,能选择从当天算过去的几年。
未来的几年:可选,正整数。
在编辑屏幕选择这个动态字段的年份时,能选择从当天算未来的几年。
显示链接:可选。
如果设置了,这个字段的值会在显示屏幕(如工单详情屏幕或工单概览屏幕)被转化成一个可点击的链接。
例如,如果‘显示链接’设置为“http://www.otrs.com”,点击这个字段填充的值会让你的浏览器打开OTRS网站。
在设置链接的值中使用[% Data.NameX | uri %](NameX是字段的名称),会将字段的值添加到链接引用中作为其一部分。
一个(用前面的例子)填满动态字段概览屏幕像这个样子:
要修改或编辑一个动态字段,你必须至少定义了一个动态字段,从动态字段概览屏幕选择一个已经添加的字段然后更新它的设置。
不是所有的动态字段设置都可以修改的,字段类型和对象类型是从选择字段时就固定了的,它们都无法被修改。
不推荐去修改字段的内部名称,但可以随时修改标签。如果修改了内部名称,所有系统配置中使用了该字段的设置都需要更新,同时还有用户偏好设置(如果定义了该动态字段)。
要在一个特定的屏幕显示一个动态字段,有两个强制条件:
动态字段必须有效。
在这个屏幕的配置中动态字段必须设置为1或2。
按照下列步骤在一个屏幕中显示一个动态字段
确保动态字段设置为有效,你可以从动态字段概览屏幕查看这个字段的有效性。如需要可以通过编辑该字段设置为有效。
打开系统配置并从屏幕左侧操作栏的下拉列表框中选择“Ticket(工单)”。
你还可以在上面的搜索框中搜索“DynamicField”或准确的系统配置项(如果你已经知道)。
定位你要查找的屏幕设置所在的子组然后点击它。例如“Frontend::Agent::Ticket::ViewPhoneNew”。
搜索以“###DynamicField”结尾的设置,例如“Ticket::Frontend::AgentTicketPhone###DynamicField”。
如果这个设置为空或者没有需要的动态字段名称,点击“+”按钮来添加一个新的条目。例如,键:Field1,值:1。
如果这个设置已经列出了这个动态字段的名称,确保对应值设置为1-设置这个字段或2-显示为强制(必填)。
通过点击屏幕正文的“更新”按钮来保存配置,然后导航到你要显示这个字段的屏幕。
一个工单事件(如工单创建)可以触发设置某个字段的值(如果该字段还没有一个值)。
通过使用这个方法,在编辑屏幕(例如新建电话工单)无法看到这个默认值,因为它是在工单创建之后设置的。
要激活这个功能,需要启用下列的设置:“Ticket::EventModulePost###TicketDynamicFieldDefault”。
例 4.28. 在工单创建事件激活Field1。
主组:Ticket
子组:Core::TicketDynamicFieldDefault
设置:Ticket::TicketDynamicFieldDefault###Element1
这个配置可以在16个Ticket::TicketDynamicFieldDefault###Element设置中的任意一个里面设置。
如果超过16个动态字段,需要设置一个定制的XML文件并放于目录$OTRS_HOME/Kernel/Config/files下来扩展这个功能。
值:
键 | 值 |
事件 | 工单创建 |
名称 | Field1 |
值 | 一个新值 |
动态字段默认值可以被用户定义在偏好设置中的值覆盖。
使用这个方法,这个动态字段将在所有激活了它的屏幕显示这个默认值(如果该字段没有一个不同的值)。
系统配置中的“PreferencesGroups###DynamicField”设置位于子组“Frontend::Agent::Preferences”。这个设置是一个例子,关于如何为一个选定的用户在用户偏好设置屏幕创建一个条目来设置一个独有的动态字段默认值。这个设置的限制是它只允许使用一个动态字段。如果2个或更多的字段需要使用这个功能,需要创建一个定制的XML配置文件来添加多个类似于这个的设置。
记住:如果在一个新的XML文件中添加更多的设置,每个设置的名称需要是系统唯一的,且不能是“PreferencesGroups###DynamicField”。例如:PreferencesGroups###101-DynamicField-Field1、PreferencesGroups###102-DynamicField-Field2、PreferencesGroups###My-Field1、 PreferencesGroups###My-Field2等等。
例 4.29. 在用户‘偏好设置’中激活Field1。
主组:Ticket
子组:Frontend::Agent::Preferences
设置:PreferencesGroups###101-DynamicField-Field1
值:
键 | 值 |
事件 | 工单创建 |
Active(活动的) | 1 |
Block(块) | Input(输入) |
Column(列) | 其它设置 |
Data:(数据:) | [% Env("UserDynamicField_Field1") %] |
Key:(键:) | My Field 1 |
Label:(标签:) | Default value for: My Field 1(Field1的默认值) |
Module:(模块:) | Kernel::Output::HTML::PreferencesGeneric |
PrefKey: | UserDynamicField_Field1 |
Prio: | 7000 |