流程版本
平台支持流程版本,流程版本包含:
- 草稿版本: 仅作用于开发调试,一个流程有且只有一个草稿版本
- 历史版本:作用于生产环境中已经启动的流程实例,在一个时刻,一个流程可以有多个历史版本
- 主版本:作用于生产环境,表示此时启动流程实例时使用的版本,在一个时刻,一个流程有且仅有一个主版本
流程版本的生成:
- 草稿版本:在 IDE 中,可以设计流程的草稿版本;在流程定义中,可以创建一个流程的草稿版本
- 历史版本及主版本:
- 自动升级主版本:应用发布、可部署模板更新或流程定义中的“发布”功能,可以基于草稿版本生成新的主版本,之前的主版本变成历史版本
- 不自动升级主版本:应用发布、可部署模板更新或流程定义中的“发布”功能,可以基于草稿版本生成新的历史版本,主版本不变
主版本自动升级的设置
在流程定义功能中支持了“关闭自动升级主版本”或“开启自动升级主版本”的设置,默认是处于开启状态的。如下图:
关闭自动升级主版本后,如果要切换主版本,可以在流程定义中的版本管理中操作,如下:
关闭自动升级主版本的功能是每个流程单独控制的,关闭后还可以再开启,开启后就会恢复为自动升级。
修改流程版本
正式门户运行启动流程时,使用的是当前时刻的主版本,当有新的主版本生成后,运行中流程实例要修改流程版本为新的主版本时,可以通过下面的两种方案设置,推荐使用方案一,具体如下:
方案一:到流程监控功能中修改流程版本
打开流程监控功能
在流程列表中勾选要切换版本的流程实例任务,然后点击“切换流程版本”按钮
在选择流程版本对话框中,通过单选选择需要切换的流程版本,然后点“确定”按钮即可,然后此流程实例的任务再流转就是按选择的流程版本运行
方案二:到数据库中手动修改表中数据
流程版本的记录是在工作流应用的数据库表 sa_process 中存储的。
sIsDefaultVersion 为1是目前正式有效的主版本
sIsDefaultVersion 为0是无效的流程历史版本
sIsDefaultVersion 为-1是草稿版的
流程启动后会在工作流应用的数据库表 sa_task 中生成对应的流程实例和流程任务数据,每一个流程实例中都会记录此流程实例使用的流程版本,即 sprocessversion 字段的值。
当流程版本更新后,要通过数据库修改之前的流程实例为新的主版本时,可以通过下面的两种方式,推荐使用方式一:
- 方式一:修改 sa_task 中具体流程实例上 sprocessversion 字段的值为新版本的版本值
sa_process 中一个流程定义有多个版本,sIsDefaultVersion 为1的就是目前使用的主版本,如果开发者没有调整过,默认就是最新的版本
- 方式二:修改 sa_process 表中老的流程版本记录上 scontent 字段中的值
修改 scontent 的方案,是把新的流程版本的内容拷贝到老的流程版本内容中,拷贝覆盖前可先把老的内容备份一下,如果有问题可以再还原回去
流程定义功能中更新草稿版本
流程定义功能中默认的草稿版本如下:
- 在“我的开发”中添加的应用,在流程定义中看到的流程功能的草稿版本是 ide 设计时最新的流程图
- 在“应用/服务管理”列表中通过应用模版添加的应用,在流程定义看到的流程功能草稿是此应用模版中最原始的草稿流程图
在流程定义中默认只能修改草稿状态的流程图,某些情况下可能要修改其他发布版本的流转版本,可以通过更新操作版本实现
- 在流程定义列表中,找到需要修改草稿版本的流程,点击列表中的更新操作
- 在更新列表中找到需要设置为草稿状态的流程版本,点击行上的单选选中,然后点击确定按钮
- 返回列表后,再点击流程名称,此时看到的就是选择的流程版本对应的流程图以及相关的流程信息
根据流程版本号查看流程图
运行时流程组件上提供的“显示流程图”操作是直接查看当前流程实例运行时的流程图信息,运行时要根据不同的流程版本号查看对应的流程图,通过下面两种方式实现:
方式一:调用流程组件 API 弹出查看
流程组件提供的 showChart 方法,可以通过参数设置根据流程版本号查看对应的流程图,如下:
let wfmui = this.comp("wfmui");//获取工作流组件
let processVersion = this.comp("processVersionData").getValue("processVersion");
wfmui.showChart({
process:"/SA/wf/default/orderApply",//在流程表单页面不传默认就是当前processcode,如果传值要用全路径
content: "track",//查看流程图
processVersion: processVersion|| "",//要查的流程版本号,查看主版本传main,不传开发调试运行默认是草稿,正式运行默认是主版本
hideBar: "true",//隐藏运行时流程图顶部的图例
task:"",//在流程表单页面调用时不查当前任务流程图需要传""
data:"",//在流程表单页面调用时不查当前任务流程图需要传""
});
方式二:拼接 url 用 iframe 展现
iframe 的定义如下: <iframe bind:src="getUrl()" />
getUrl 方法中拼接按流程版本号显示流程图的 url 地址,代码如下:
let processVersion = processVersionData.getValue("processVersion") || "";
if(processVersion){
return window.location.origin+"/wf/x5/UI2/SA/wf/dialog/chart.w?process=/SA/wf/default/orderApply&content=track&hideBar=true&processVersion="+processVersion;
}else
return window.location.origin+"/wf/x5/UI2/SA/wf/dialog/chart.w?process=/SA/wf/default/orderApply&content=track&hideBar=true";