flowable 怎么获取指定节点flowable:property
时间: 2024-05-31 19:06:43 浏览: 155
Flowable是一个轻量级的开源工作流引擎,支持BPMN 2.0标准。在Flowable中,每个流程实例都由多个节点组成,而节点是可以自定义的。如果您想要获取指定节点的Flowable属性,可以通过以下步骤实现:
1. 首先需要获取当前节点的实例对象,您可以使用Flowable提供的API获取:
```
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
FlowNode flowNode = (FlowNode) ((ExecutionEntity) processInstance).getActivity();
```
其中,processInstanceId是流程实例的ID,runtimeService是流程运行时服务对象。
2. 获取节点的属性,可以通过以下代码实现:
```
String value = flowNode.getProperty("name");
```
其中,name是您需要获取的属性名称,value是该属性的值。
相关问题
flowable自选人节点
在 Flowable 中,可以使用自定义的 Java 类来实现自选人节点,以便在流程中动态选择任务的执行人。
以下是实现自选人节点的一般步骤:
1. 创建自定义的 Java 类,继承 `org.flowable.engine.impl.bpmn.behavior.UserTaskActivityBehavior` 类,并重写 `execute` 方法。
2. 在 `execute` 方法中,通过 `delegateTask.getTaskDefinition()` 方法获取任务定义,再通过 `taskDefinition.getTaskFormHandler()` 方法获取表单处理器。
3. 在表单处理器中,可以设置自定义的表单属性,以便在表单中显示自定义的控件。
4. 在表单中,可以使用自定义的控件来选择任务执行人,例如下拉列表、多选框、文本输入框等。
5. 在流程中,当执行到自选人节点时,系统会调用自定义的 Java 类,弹出自定义的表单界面,以便选择任务执行人。
6. 在表单提交后,系统将从自定义表单控件中获取任务的执行人,并将其设置为任务的候选人或者直接分配给执行人。
以下是一个示例代码:
```java
public class CustomUserTaskActivityBehavior extends UserTaskActivityBehavior {
@Override
public void execute(final DelegateExecution execution) {
final TaskDefinition taskDefinition = this.taskDefinition;
final TaskFormHandler taskFormHandler = taskDefinition.getTaskFormHandler();
// 设置自定义表单属性
final FormPropertyImpl customFormProperty = new FormPropertyImpl();
customFormProperty.setId("customProperty");
customFormProperty.setName("Custom Property");
customFormProperty.setType(new StringFormType());
customFormProperty.setWritable(true);
customFormProperty.setReadable(true);
customFormProperty.setRequired(false);
taskFormHandler.getFormProperties().add(customFormProperty);
// 打开自定义表单界面
final String formKey = taskFormHandler.getFormKey(execution);
final FormService formService = Context.getProcessEngineConfiguration().getFormService();
final Object customFormValue = formService.getRenderedTaskForm(taskDefinition.getKey(), formKey, "en", execution);
// 处理表单提交
final String customProperty = (String) execution.getVariable("customProperty");
taskService.setVariable(taskId, "customProperty", customProperty);
// 将任务分配给执行人
final String assignee = (String) execution.getVariable("assignee");
if (StringUtils.isNotBlank(assignee)) {
taskService.setAssignee(taskId, assignee);
} else {
final List<String> candidateUsers = new ArrayList<>();
candidateUsers.add("user1");
candidateUsers.add("user2");
taskService.addCandidateUsers(taskId, candidateUsers);
}
}
}
```
在这个示例代码中,我们继承了 `UserTaskActivityBehavior` 类,并重写了 `execute` 方法。在 `execute` 方法中,我们设置了一个自定义的表单属性,并打开了自定义的表单界面。在表单提交后,我们将任务分配给任务执行人。需要注意的是,在实际应用中,我们需要根据具体的场景进行修改和定制。
flowable 没有ACT_HI_FORM_PROPERTY表
非常抱歉,我之前的回答有误。在Flowable中,表单的数据存储位置和方式与Activiti类似,但表格结构和字段可能会有所不同。
当使用Flowable提供的表单功能时,表单数据会存储在以下两个表格中:
1. ACT_HI_FORMINST表格:用于存储表单实例数据,包括表单的ID、名称、提交时间、表单数据的JSON格式等。
2. ACT_HI_DETAIL表格:用于存储表单字段的详细信息,包括表单字段的ID、所属表单的ID、字段名称、字段值等。
在启动流程实例时,如果表单中有输入数据,则表单数据会被存储在ACT_HI_DETAIL表格中。当流程执行到需要展示表单的任务节点时,Flowable会从ACT_HI_DETAIL表格中读取相应的表单数据,并在前端展示出来。
需要注意的是,Flowable的表单功能与Activiti的表单功能在实现方式和存储位置上是相似的,但具体的表格结构和字段可能会有所不同。如果需要深入了解Flowable的表单功能和表格结构,可以参考官方文档或源代码。
阅读全文