Day06 工作流
理解工作流的基本概念及流程图
工作流就是一条相互衔接、自动流转的任务圈。我们可以将整个过程看做是一个流水作业线,其中作业线上的任务就是需要审核的表单。
根据一系列过程规则、文档、信息或任务在不同的执行者之间进行传递与执行
了解工作流常用的几张基础表单
流程基本信息表(Workflow_Process)
流程实例表(Workflow_PVI) 流程版本实例
流程步骤表(Workflow_Activity)
变迁信息表(Workflow_Transition)
变迁信息配置表(Workflow_Transition_Condition)
工作项表(Workflow_WorkItem):在工作流中将需要活动处理人处理的流程事务称为工作项,可以简单理解为待办事宜。
工作流表:
流程:
流程搭建设计(流程设计器):
步骤:高级工作流--版本--流程设计。会生成Guid,根据这个Guid来启动工作流
流程处理页面配置:asseinfoworkflow.html页面详情页配置到 版本-->流程设计-->批处理--调整配置-->流程处理页面-->选择哪些活动
流程的预览:流程配置-->预览-->流程追踪(查看流程图)
流程材料的配置:
材料属于版本下的,配置之后可以应用到每个活动上
步骤:1. 新增材料:版本-->材料--新增材料-->采购信息表--MIS表
2.应用材料:版本-->流程设计-->批处理-->选择材料-->选择材料的应用活动
设置活动权限(材料配置之后):点击活动-->设置属性-->表单字段权限-->权限设置,注:缺省即默认
控件配置
申请人员:获取当前登录用户且不可修改,页面显示用户姓名,数据库存用户标识。
-
首先把原来存入数据库的值applyuserguid,控件属性设置成mini-hidden隐藏域,然后新加一个列 id=applyusername用于展示
-
后端执行pageload方法,然后第一次加载 通过userSession给他设置数据库的值和返回值,通过addcallback方法返回给前端
-
通过epoint..init方法的回调,接收从后端返回applyusername的值,然后根据id给他赋值 注:必填属性started
日期设置:使用日期控件默认为当前时间(精确到秒),不可修改
-
设置不可修改,从后台处理好时间的字符串然后返回给前台
-
进入后台pageload方法,然后设置new Date(),通过EpointDateUtil工具类处理date类型数据转成字符串,格式化形式为HH:mm:ss
-
通过epoint..init方法的回调,接收从后端返回applytimeoutput的值,然后根据id给他赋值
敏感字符问题:1.把字符换成其他符合条件的其他字符 2.安全配置文件里面修改
预算信息:
-
首先把预算信息控件改为mini-buttonedit,然后添加点击事件onButtonClick=xxx,点击之后触发下面js方法,使用epoint.openDialog()打开子页面,进入子页面地址对应的页面
-
子页面中在
预算名称
使用renderer做了一个a标签的渲染,在这个方法中拼接data,点击之后触发下面的onBudgetNameClick,通过epoint.closeDialog方法将data回传到上一级页面 -
进入回调,使用split分割之后,分别设置存入数据库的值和显示文本值
物品总价:vtype属性 vtype=int。 miniui-Api手册-forms
采购类型:使用mini-radiobuttonlist,单选按钮组控件,后台action对应的方法 代码项属性 修改为单选按钮组,请选择即true,改为false
到货时间:使用日期控件选择,时间不得早于“申请时间”,在后台添加校验逻辑,return false 退出方法,不在继续往下执行;
申请说明:设置成一整列,使用mini-TextArea控件
材料上传:先根据前端api-组件-搜索webupload,查找示例,控件:mini-webuploader,然后action对应自己写的后台方法。
材料上传不成功可能是第一次加载没有给rowguid赋值,在第一次加载时使用rowguid = UUID.randomUUID().toString();
第二次加载也要给申请人员、到货时间进行赋值。注:附件存到了我们的本地库上面去了,附件上传到frame-attach表
材料丢失问题:附件控件比较特殊,在上传附件时会触发页面刷新操作,即会再次执行后台的pageLoad方法。当页面内容未保存时,按照原代码逻辑会导致生成新的业务rowguid,导致附件的rowguid和dataBean中的rowguid不一致,最终导致附件和业务表关联不起来。
我们在pageLoad中添加以下代码,使用addViewData和getViewData(通用隐藏域)保存生成的rowguid。
为什么:commonDTO机制:我们每次发一个附件上传或者点保存的时候,除了走控件对应的方法还要创建action,执行pageload()方法
附件上传数据库:系统附件默认(未配置)存到了我们的本地库上面去了,可以在应用集成--统一附件上进行创建附件数据库,然后选择储存类型,点击启用。
采购申请按钮配置:
新增
改为采购申请
,点击openAdd事件,将中的地址改为工作流启动页面地址,加上processGuid(流程标识),前面固定为工作流启动页面地址,然后根据我们配置的流程guid查找相关信息。
列表标题设置
-
首先在assetinfolist页面删除不需要的列,然后增加title和url列,进入assetinfolistAction后台,找到getdategrid方法。
-
先定义title和url初始值,然后put两个新的字段。用@Autowried 实例化流程版本实例 IWFInstanceAPI9 ,然后根据IWFInstanceAPI9查询是否有待办项,如果有获取工作项标题和流程处理页的url,如果没有默认为title = "采购详情", urlString = "";最后返回给前端,
-
标题使用renderer渲染了一个a标签,然后获取url和titile,然后判断url是否为“ ”,如果为空,则定义url为详情页。点击触发onTitletClick方法,传递url,里面使用epoint.openDialog打开子页面
一个登陆人只有一个处理页面()
定义工作流:配置信息,比如变迁信息
执行工作流:工作项和pvi表是执行工作流时产生的数据(工作流的实例),类似于类(定义)和对象(实例)的关系
待办事宜:生成处理页面
URL上加上了
-
流程版本实例Guid:WorkItemGuid
-
当前工作项Guid:WorkItemGuid