businessBinding。businessBinding。businessBinding.statusField 回写低代码业务表流程状态。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
git diff --check
flowable:collection / flowable:elementVariable 的问题;缺失集合时兜底写出 loopCardinality,避免 Flowable 部署报 flowable-multi-instance-missing-collection。purchase_countersign 会签节点往返转换后继续保留 ${countersignUserList} 和 assignee。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js \
src/components/flow-designer/canvas/__tests__/EdgePath.spec.js \
src/components/flow-designer/converter/__tests__/user-task-parser-multi-instance.spec.js \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/roundtrip.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
node --input-type=module <inline-check-script>
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
BusinessFlowBindingPanel.vue 增加业务记录绑定配置区。businessBinding。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
git diff --check
PUT /ai/business/flow/binding/{objectCode},无 Controller 路径变更。nodeForms 保存、归一化和回显。GET /ai/business/flow/form-assets/{objectCode},从业务对象 formDesignerSchema 读取低代码表单资产和字段目录。BusinessFlowBindingPanel.vue 增加“节点表单策略”,支持低代码表单资产下拉、代码适配器表单编码、外部表单 URL 和节点字段可见/可编辑/必填配置。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
BusinessFlowController 新增 GET/PUT /ai/business/flow/task-form-context。BusinessFlowService 支持通过流程实例关联或 businessKey 解析业务记录、读取节点 nodeForms、输出低代码表单字段权限和保存可编辑字段。business-app.js 增加待办业务表单上下文 API。todo.vue 在待办审批详情中渲染低代码业务表单,审批“同意”前校验并保存节点授权字段,快捷同意遇到业务可写字段时提示进入详情办理。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
FlowClient 增加任务详情查询能力,业务待办表单上下文按 taskId 校验任务状态、当前办理人、流程实例、业务 Key 和节点 Key。BusinessTaskFormContextQueryDTO、BusinessTaskFormSaveDTO、BusinessTaskFormContextVO 补充 taskId,保存业务字段和重提必须由当前已签收办理人执行。BusinessCodeFormProvider、BusinessCodeFormProviderRegistry,代码优先复杂业务可通过 Spring Bean 注册代码表单资产、上下文和保存逻辑。BUSINESS_CODE_FORM 待办上下文支持 Provider 委派;未注册 Provider 时返回明确 warning,并支持从待办打开业务页处理。POST /ai/business/flow/resubmit,复杂业务页保存主数据后可复用原流程实例完成修改节点重提。todo.vue 对代码表单和存在可写业务字段的任务禁止快捷同意,要求进入详情或业务页办理。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
FlowTaskEventListener#handleProcessCompleted 发布完成事件前合并当前执行变量、运行时变量和历史变量,避免 PROCESS_COMPLETED 事件缺失最后一次审批提交变量。FlowTaskEventListener#handleTaskCompleted 读取任务变量失败时继续通过流程实例和历史变量兜底。FlowInstanceServiceImpl#getProcessVariables 支持流程结束后按历史变量读取。FlowMonitorServiceImpl#getProcessVariables 与监控 Controller 行为对齐,运行时优先、历史变量兜底。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-flow -am compile -DskipTests
cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-flow -Dtest=FlowTaskEventListenerTest -DskipTests=false -Dmaven.test.skip=false test
git diff --check
@FlowCallback 样例,留待统一验证。FlowEventSubscriber 仍是 Redis Pub/Sub 即时消费,业务回调异常后只记录日志;本轮先消除变量缺失导致的回调失败,持久化事件重试/死信队列需单独设计。sample_purchase_order,用于验证手写业务模块接入流程。/business/purchase-order-test,同一个组件支持列表工作台和 Flow 外置待办审批表单。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-business/forge-business-core,forge-flow/forge-flow-client -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js \
src/components/flow-designer/canvas/__tests__/NodeRenderer.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
DingFlowDesigner 组件单测,锁定“添加分支按钮居中、默认标签避开按钮”的布局约束。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js \
src/components/flow-designer/canvas/__tests__/AddNodeButton.spec.js \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
Number 导致精度丢失,进而 POST /business/sample-purchase-order/getById 查不到采购单的问题。businessKey 查询入口,待办表单优先通过 businessKey 定位记录,只有缺失业务键时才用字符串形式的 id 兜底。businessKey。Long,避免用户 ID 精度风险。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-business/forge-business-core,forge-flow/forge-flow-client -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
rg -n "Number\((props|row|record|detail|currentSubmitRow|.*Id)|Number\(.*\.id|Number\(.*recordId|Number\(.*businessKey|Number\(.*purchaseOrderId" \
forge-admin-ui/src/views/business/purchase-order-test.vue \
forge-admin-ui/src/api/business/purchase-order-test.js
FlowTaskController 新增 GET /api/flow/task/form,用于已办、抄送、历史查看等无运行中任务场景读取只读表单信息。FlowTaskMapper/FlowTaskServiceImpl 增加 selectByIdOrTaskId 兜底,已办页传 Flowable taskId 或 sys_flow_task.id 都能解析到对应历史任务和节点表单策略。BusinessFlowController 新增 GET /ai/business/flow/task-form-context/readonly,用于已办页读取业务对象/代码表单只读上下文,不触发待办办理人校验和保存能力。${approvalResult == 'reject'},已有该表达式的分支标签回显为“驳回修改”。cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/panel/__tests__/ConditionConfig.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js
git diff --check
CarbonCopyConfig.vue 把抄送人从手工输入用户 ID 改为复用 UserSelectPicker 选择用户。NodePropertiesPanel.vue 的服务任务可勾选“作为抄送节点”,并通过用户选择弹窗配置抄送人。flowable:type="cc"、flowable:candidateUsers、flowable:candidateUserNames,未配置自定义实现时自动挂 flowable:delegateExpression="${flowCcNodeDelegate}"。FlowCcNodeDelegate,流程流转到抄送 serviceTask 时按节点配置发送抄送。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/bpmn-to-json-multi.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js
cd forge-server
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-flow -am compile -DskipTests
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home \
PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH \
mvn -pl forge-flow/forge-flow-server -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
flowable-moddle.json 补充 flowable:type、flowable:ccReceiverType、flowable:ccExpressionTarget 等属性,保证普通 BPMN 设计器序列化稳定。${ccUserIds}、${ccRoleKeys}、${user_123} 和复杂 Flowable 表达式,并把角色解析为用户。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint \
src/components/flow-designer/panel/CarbonCopyConfig.vue \
src/components/bpmn/NodePropertiesPanel.vue \
src/components/flow-designer/converter/json-to-bpmn.js \
src/components/flow-designer/converter/bpmn-to-json.js
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/bpmn-to-json-multi.spec.js
cd forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) \
PATH="$JAVA_HOME/bin:$PATH" \
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-flow -am compile -DskipTests
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check
n-radio-group 强行 grid 布局,改为自定义三段按钮。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint \
src/components/flow-designer/panel/CarbonCopyConfig.vue \
src/components/bpmn/NodePropertiesPanel.vue
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
git diff --check