Java8新特性之—-Stream
Stream的操作:操作流程比较简单
Stream的操作:操作流程比较简单
工作流中的主流程和子流程审核实践
职工申请一个采购申请,然后部门经理审核,审核通过后总经理审核
该表主要记录附件的历史数据,核心字段包括:
ID_:附件唯一标识
REV_:版本号
USER_ID_:上传附件的用户 ID(如部门经理、总经理的用户标识)
NAME_:附件名称(如 “部门经理同意单.jpg”“总经理审批单.png”)
DESCRIPTION_:附件描述(可记录附件相关说明,如 “2024 年 X 月采购申请部门经理手写同意单”)
TYPE_:附件类型(如 “image/jpg”“application/pdf”)
TASK_ID_:关联的任务 ID(即该附件是在哪个审核任务中上传的,如部门经理审核任务 ID、总经理审核任务 ID)
PROC_INST_ID_:关联的流程实例 ID(整个采购申请流程的唯一标识)
URL_:附件存储路径(可以是服务器本地路径,如 “/attachments/purchase/202405/manager_agree.jpg”,也可以是云存储的 URL)
CONTENT_ID_:附件内容 ID(若附件内容存储在 ACT_GE_BYTEARRAY 表中,该字段关联对应记录的 ID)
TIME_:附件上传时间
1 职工提交采购申请:职工发起采购申请流程,此时流程进入 “部门经理审核” 环节,暂未产生附件记录。
部门经理审核并上传同意单:
2 部门经理查看采购申请内容,审核通过后,在系统中上传手写同意单。
系统通过 Activiti 的 API 调用附件相关服务,生成附件记录并插入 ACT_HI_ATTACHMENT 表。
关键参数设置:USER_ID_ 设为部门经理的用户 ID,TASK_ID_ 设为当前 “部门经理审核” 任务的 ID,PROC_INST_ID_ 设为当前采购申请流程实例 ID,URL_ 设为同意单的存储路径,TIME_ 设为上传时刻的时间。
3 流程流转至总经理审核:部门经理审核通过后,流程进入 “总经理审核” 环节。
4 总经理审核并上传相关附件(可选):
总经理若有额外审批附件(如更详细的审批说明文件),可类似部门经理的操作上传。
系统同样在 ACT_HI_ATTACHMENT 表中新增一条记录,关联当前 “总经理审核” 任务 ID 和相同的流程实例 ID。
5 流程结束:所有审核环节完成后,ACT_HI_ATTACHMENT 表中保留了该采购申请流程中所有审核环节上传的附件历史记录,便于后续查询和追溯。
// 假设已获取到当前任务ID(taskId)、流程实例ID(procInstId)、上传用户ID(userId)
// 附件信息
String attachmentName = "部门经理同意单.jpg";
String attachmentDesc = "2024年5月采购申请部门经理手写同意单";
String attachmentType = "image/jpg";
String attachmentUrl = "/attachments/purchase/202405/manager_agree.jpg";
// 通过Activiti的HistoryService创建附件记录
Attachment attachment = historyService.createAttachmentQuery()
.taskId(taskId)
.singleResult();
if (attachment == null) {
attachment = historyService.createAttachment(
attachmentType,
taskId,
procInstId,
attachmentName,
attachmentDesc,
attachmentUrl
);
// 若附件内容存储在ACT_GE_BYTEARRAY表,可设置contentId
// attachment.setContentId(contentId);
// 上传时间由系统自动记录为当前时间
}
// 根据流程实例ID查询该流程相关的所有历史附件
List<Attachment> attachments = historyService.createAttachmentQuery()
.processInstanceId(procInstId)
.list();
// 遍历附件信息
for (Attachment attachment : attachments) {
System.out.println("附件名称:" + attachment.getName());
System.out.println("上传用户:" + attachment.getUserId());
System.out.println("上传时间:" + attachment.getTime());
System.out.println("附件路径:" + attachment.getUrl());
// 其他附件信息...
}
java语言函数
背景
在B端场景下,有的时候我们的客户并不具备自己开发软件的能力,那么SaaS平台应运而生,客户只需要在我们的平台上开通服务,就可以为客户生成出相应的产品。
在网页端很容易,例如淘宝店铺,用户只需要在淘宝网页注册卖家,简单装修一番,也可以做一些简单的二次开发就完成开店,而不需要自己去从0开发,去买服务器,建数据库等等。那么如果想要做一款微信小程序的SaaS平台呢,那么本篇文章主要介绍如何构建微信小程序的SaaS平台,希望对做这块业务的人有所帮助。
微信小程序
微信小程序我理解是一个运行在微信app上的一个webview,一个小程序页面由4个文件组成,分别是:js(页面逻辑)、wxml(页面结构)、json(页面配置)、wxss(页面样式)。和网页的组成一模一样,wxml->html,wxss->css。
构建SaaS平台
微信开放平台提供了第三方平台的功能,可以让企业去构建自己的SaaS功能,第三方平台是什么,他提供了我们代用户实现小程序的能力,这也为我们开发SaaS平台打下了基础。接下来介绍比较重要的步骤。
既然是SaaS平台,我们就要开发一个通用的模板代码(默认的),可以是多套供用户选择,并且在一定程度上可以让用户定制化页面,比如调整位置、修改图片等等。开发完成后可上传至微信小程序模板库
获取预授权码,并在web页面设置入口,引导用户进入授权界面,将小程序的开发、发布等权限授权给我们,以便我们来代用户实现小程序功能。
由于微信接口都是需要令牌的,所以我们需要保存用户授权后的信息,比如小程序id,后续调用接口需要用到。这里不同于个人小程序,第三方平台获取令牌的时候不需要scret,需要第三方平台自己的id、第三方平台的令牌、授权方小程序的id。就可获取令牌调用接口
其他的功能就不赘述,这里只说比较重要的功能。
第一、类目管理 这个是小程序能不能过审的关键信息,类目需要和小程序提供的内容匹配。不然过不了审核。
第二、代码管理 主要分为代码上传、提交审核、接收小程序审核结果推送、发布小程序、线上可见等功能。(1)代码上传,第三方平台从模板库中选择模板上传代码 (2)提交审核,第三方平台替客户提交小程序至微信审核 (3)接收小程序审核结果推送,成功则可以继续下边的流程,如果失败,则需要根据失败原因做相应调整,再提交审核,(4)对审核通过的小程序进行发布 (5)发布成功后修改线上可见。至此整个代码提交发布的流程就结束了。其他功能:如灰度发布、版本回退、审核撤回等功能请参展第三方平台文档。
整体流程图如下:
java变量就是可变的值