如何在 KIE 工作台中完成下拉列表?
How to accomplish drop-down lists in KIE workbench?
我是 JBPM 的新手,正试图全神贯注于一个新项目,最近注意到在尝试定义一些用户任务表单时,我找不到下拉列表的表单选项
在这一点上,我对这项技术的了解还很少,乍一看这似乎是一个奇怪的限制,应该有一个简单的解决方法,但我很难找到一个快速而肮脏的解决方案。
这是我必须在 Eclipse 中编写的代码,还是其他东西?
要创建 select 元素(下拉列表),请在文档的这一部分查找 "Setting a Range Formula":http://docs.jboss.org/jbpm/v6.1/userguide/chap-formmodeler.html#sect-formmodeler-FormulasExpression
@cego 提供的答案对于 "hard-coded" 值是正确的,如果您想加载动态值(例如从数据库中),您可以使用 Select 框字段类型并对其进行配置使用计算组合值的 SelectValuesProvider。
要创建一个 SelectValuesProvider,您应该创建一个具有 mvn 依赖关系的 java 项目:
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-form-modeler-api</artifactId>
</dependency>
完成后,您可以创建实现 org.jbpm.formModeler.core.config.SelectValuesProvider 的 class。该接口提供两种方法:
- String getIdentifier():应该return 一个唯一的字符串来标识这个提供者。此字符串将显示在 Select 框配置弹出窗口中。
- Map getSelectOptions(Field field, String value, FormRenderContext renderContext, Locale locale):此方法必须 return 包含要加载的键和文本的 Map Select 框。接收到的参数是:
- Field字段:要评估的字段的配置。
- String Value: 字段的当前值
- FormRenderContext renderContext:一个 class 包含有关当时呈现的表单的所有信息。
- Locale 语言环境:呈现表单的语言环境。
创建此提供程序后,您必须编译项目并将 jar 放在服务器 classpath 上并重新启动它。这样做之后,您将能够创建一个表单(或编辑现有表单),添加一个 Select 框字段并在 "Data provider" 组合框中选择您的提供商。
希望对您有所帮助,如果您有任何疑问,请提问,我会尝试创建一个示例。
此致,
神父
好的,对于旧版本,您可以使用 RangeProvider 将文本框转换为组合框。这是与前一个解决方案非常相似的解决方案。
首先,您应该创建 java 具有 mvn 依赖项的项目:
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-form-modeler-api</artifactId>
</dependency>
之后,您必须创建实现 org.jbpm.formModeler.api.model.RangeProvider 的 RangeProvider class 并实现它的方法。与前面示例中的 SelectValuesProvider 一样,该接口提供了两个方法:
- String getType():用于标识提供者的唯一字符串
- Map getRangesMap(String namespace):此方法必须 return 包含将要加载到组合框上的键和文本的 Map。它只接收一个字符串参数,它是一个标识符,允许您获取有关正在呈现的表单的所有信息。
您还必须创建一个 META-INF/beans.xml 文件以允许通过 CDI 查找您的提供商(我在上一个示例中错过了这一步,抱歉)。
与前面的示例一样,创建提供程序后,您必须编译项目并将 jar 放在服务器 classpath 上并重新启动它。
当服务器启动时,您必须创建一个新表单(或打开一个现有表单),添加一个 TextBox 字段,编辑它的属性并在"Range value"属性。
保存字段属性,如果一切正常,该字段将呈现为一个组合框,显示由您的提供商 return 编辑的值。
我是 JBPM 的新手,正试图全神贯注于一个新项目,最近注意到在尝试定义一些用户任务表单时,我找不到下拉列表的表单选项
在这一点上,我对这项技术的了解还很少,乍一看这似乎是一个奇怪的限制,应该有一个简单的解决方法,但我很难找到一个快速而肮脏的解决方案。
这是我必须在 Eclipse 中编写的代码,还是其他东西?
要创建 select 元素(下拉列表),请在文档的这一部分查找 "Setting a Range Formula":http://docs.jboss.org/jbpm/v6.1/userguide/chap-formmodeler.html#sect-formmodeler-FormulasExpression
@cego 提供的答案对于 "hard-coded" 值是正确的,如果您想加载动态值(例如从数据库中),您可以使用 Select 框字段类型并对其进行配置使用计算组合值的 SelectValuesProvider。
要创建一个 SelectValuesProvider,您应该创建一个具有 mvn 依赖关系的 java 项目:
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-form-modeler-api</artifactId>
</dependency>
完成后,您可以创建实现 org.jbpm.formModeler.core.config.SelectValuesProvider 的 class。该接口提供两种方法:
- String getIdentifier():应该return 一个唯一的字符串来标识这个提供者。此字符串将显示在 Select 框配置弹出窗口中。
- Map getSelectOptions(Field field, String value, FormRenderContext renderContext, Locale locale):此方法必须 return 包含要加载的键和文本的 Map Select 框。接收到的参数是:
- Field字段:要评估的字段的配置。
- String Value: 字段的当前值
- FormRenderContext renderContext:一个 class 包含有关当时呈现的表单的所有信息。
- Locale 语言环境:呈现表单的语言环境。
创建此提供程序后,您必须编译项目并将 jar 放在服务器 classpath 上并重新启动它。这样做之后,您将能够创建一个表单(或编辑现有表单),添加一个 Select 框字段并在 "Data provider" 组合框中选择您的提供商。
希望对您有所帮助,如果您有任何疑问,请提问,我会尝试创建一个示例。
此致,
神父
好的,对于旧版本,您可以使用 RangeProvider 将文本框转换为组合框。这是与前一个解决方案非常相似的解决方案。
首先,您应该创建 java 具有 mvn 依赖项的项目:
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-form-modeler-api</artifactId>
</dependency>
之后,您必须创建实现 org.jbpm.formModeler.api.model.RangeProvider 的 RangeProvider class 并实现它的方法。与前面示例中的 SelectValuesProvider 一样,该接口提供了两个方法: - String getType():用于标识提供者的唯一字符串 - Map getRangesMap(String namespace):此方法必须 return 包含将要加载到组合框上的键和文本的 Map。它只接收一个字符串参数,它是一个标识符,允许您获取有关正在呈现的表单的所有信息。
您还必须创建一个 META-INF/beans.xml 文件以允许通过 CDI 查找您的提供商(我在上一个示例中错过了这一步,抱歉)。
与前面的示例一样,创建提供程序后,您必须编译项目并将 jar 放在服务器 classpath 上并重新启动它。
当服务器启动时,您必须创建一个新表单(或打开一个现有表单),添加一个 TextBox 字段,编辑它的属性并在"Range value"属性。 保存字段属性,如果一切正常,该字段将呈现为一个组合框,显示由您的提供商 return 编辑的值。