当前位置: 首页 > news >正文

网站怎么用办一个购物网站要多少钱

网站怎么用,办一个购物网站要多少钱,网络营销的12种手段,网页制作方法视频教程前言在用 RuntimeService 接口启动流程实例时,总是分不清楚不同 startProcessInstanceXXX 接口之间的区别,这篇文章基于 Activiti 7.0.0.GA 版本,对这一类接口进行一个梳理和归类。详解接口列表RuntimeService 接口中以 startProcessInstance…

前言

在用 RuntimeService 接口启动流程实例时,总是分不清楚不同 startProcessInstanceXXX 接口之间的区别,这篇文章基于 Activiti 7.0.0.GA 版本,对这一类接口进行一个梳理和归类。

详解

接口列表

RuntimeService 接口中以 startProcessInstance 开头的所有方法如下,共计 20 个。

ProcessInstance startProcessInstanceByKey(String processDefinitionKey);ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String businessKey);ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> variables);ProcessInstance startProcessInstanceByKey(String processDefinitionKey, String businessKey, Map<String, Object> variables);ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String tenantId);ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, String tenantId);ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, Map<String, Object> variables, String tenantId);ProcessInstance startProcessInstanceByKeyAndTenantId(String processDefinitionKey, String businessKey, Map<String, Object> variables, String tenantId);ProcessInstance startProcessInstanceById(String processDefinitionId);ProcessInstance startProcessInstanceById(String processDefinitionId, String businessKey);ProcessInstance startProcessInstanceById(String processDefinitionId, Map<String, Object> variables);ProcessInstance startProcessInstanceById(String processDefinitionId, String businessKey, Map<String, Object> variables);ProcessInstance startProcessInstanceByMessage(String messageName);ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String tenantId);ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey);ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, String tenantId);ProcessInstance startProcessInstanceByMessage(String messageName, Map<String, Object> processVariables);ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, Map<String, Object> processVariables, String tenantId);ProcessInstance startProcessInstanceByMessage(String messageName, String businessKey, Map<String, Object> processVariables);ProcessInstance startProcessInstanceByMessageAndTenantId(String messageName, String businessKey, Map<String, Object> processVariables, String tenantId);

分类

分析以上接口,虽接口种类繁多,但总体可按以下几种方式划分归类。

按启动类型分类

按启动类型分类,可分为三类,分别是:

按可传变量

按接口是否可传变量划分,可分为两类,分别是:

按接口名称

按相同接口名称分类(含重载),可分为 5 类 ,分别是:

按内外业务键

按内外业务键划分,可分为两类,分别是:

按租户类型

按租户类型划分,分为单租户和多租户两类,分别是:

知识点

processDefinitionKey 和 processDefinitionId 有什么区别?
processDefinitionKey 是我们在创建流程模型时定义的,而 processDefinitionId 是在流程后得到的。
假设定义一个 multi-product-manage.bpmn20.xml 流程模型文件,processDefinitionKey 是 multi-product-manage-k, 对这个流程模型文件部署三次,得到的 processDefinitionId 分别是:
  1. multi-product-manage-k:1:805003
  2. multi-product-manage-k:2:815003
  3. multi-product-manage-k:3:825003
在同一个 bpmn20.xml 文件被部署多个版本的情况下,如果以 processDefinitionKey(在这里取值 multi-product-manage-k)启动流程实例,Activiti 会选择最新部署的版本来启动流程实例,也就是会以 product-manage-k:3:825003 的这个版本来启动流程实例,不会去采用 multi-product-manage-k:1:805003 或者 multi-product-manage-k:2:815003 启动流程。如果以 processDefinitionId 来启动,传入 multi-product-manage-k:1:805003,Activiti 就会按照我们指定的版本来启动流程实例。
这个就是 processDefinitionKey 和 processDefinitionId 的最大区别。
举例
processDefinitionKey 举例。打开 Activiti Editor 流程模型编辑页面,创建一个流程模型,需要我们输入 model name 和 model key,以及 description。其中的 model key 就是 processDefinitionKey。
processDefinitionId 举例。processDefinitionId 由 processDefinitionKey + 部署次数 + 数字组成,格式为:
processDefinitionKey:部署次数:数字
对生成的 multi-product-manage.bpmn20.xml 流程模型文件进行部署。
第一次部署,得到的 processDefinitionId 如下
第二次部署,得到的 processDefinitionId 如下
仔细观察可发现,部署次数会随着同一个 bpmn20.xml 文件的部署而递增。由此 部署次数 数字就可以看出某个 bpmn20.xml 文件被部署了多少次。
startProcessInstance 中 bussinessKey 的应用场景
提示:应用场景由 deepseek 生成
businessKey在Activiti工作流引擎中是一个重要的概念,它用于将业务流程实例与业务数据关联起来。以下是两个典型的应用示例:
示例1:订单审批流程
假设我们有一个订单审批流程,需要将工作流与具体的订单关联:
// 启动流程时关联业务键
Order order = orderService.createOrder(); // 创建订单业务对象
String businessKey = "ORDER_" + order.getId(); // 构建业务键// 启动流程实例并关联业务键
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("orderApprovalProcess", businessKey,variables
);// 通过业务键查询流程实例
ProcessInstance instance = runtimeService.createProcessInstanceQuery().processInstanceBusinessKey(businessKey).singleResult();// 在用户任务中获取业务键
Task task = taskService.createTaskQuery().processInstanceBusinessKey(businessKey).singleResult();
这样,在流程的任何环节,我们都能通过订单ID(业务键)快速找到对应的流程实例,实现业务数据与流程的关联。
示例2:请假申请流程
另一个常见场景是员工请假申请流程:
// 员工提交请假申请
LeaveApplication leave = new LeaveApplication();
leave.setEmployeeId("EMP1001");
leave.setDays(3);
leave.setReason("家庭事务");
leaveApplicationService.save(leave);// 使用请假单ID作为业务键启动流程
String businessKey = "LEAVE_" + leave.getId();
Map<String, Object> variables = new HashMap<>();
variables.put("applicant", leave.getEmployeeId());
variables.put("days", leave.getDays());runtimeService.startProcessInstanceByKey("leaveApprovalProcess", businessKey, variables
);// 经理审批时通过业务键获取请假单信息
List<Task> tasks = taskService.createTaskQuery().taskAssignee("manager1").list();for (Task task : tasks) {String bk = task.getBusinessKey();String leaveId = bk.replace("LEAVE_", "");LeaveApplication application = leaveApplicationService.findById(leaveId);// 显示审批页面...
}
通过businessKey,审批人可以快速获取关联的请假单详细信息,审批完成后也能方便地更新业务数据状态。
businessKey的主要作用:
  1. 建立业务流程与业务数据的关联
  2. 方便通过业务ID查询流程状态
  3. 在流程处理中快速定位业务数据
  4. 实现业务数据和流程数据的松耦合关联
在实际应用中,businessKey通常采用"业务类型_业务ID"的格式,如"ORDER_123"、"LEAVE_456"等,以确保唯一性和可读性。
http://www.dtcms.com/a/421419.html

相关文章:

  • 如何做公司培训网站山东专业网站建设哪家便宜
  • 游戏币网站怎么做wordpress建一个网站
  • 网站界面用什么做的邵阳建设银行网站是多少
  • 什么网站可以找人做系统长沙现在可以自由进出吗
  • 大连企业网站wordpress 微博图床
  • 用网站模板给人做网站挣钱吗潍坊响应式网站建设要多久
  • 做intor的网站企业网站分析案例
  • 远涛网站建设江阴规划建设局网站
  • 长沙做网站开发多少钱中国经济网人事
  • 给个能看的网站公司图标大全
  • 更换dns能上国外网站吗做网站建设工资高吗
  • 美食网站开发的目的和意义重庆网站建设沛宣
  • 民治做网站哪家便宜珠海网站关键词推广
  • wordpress更新之后字体发生变化四川游戏seo整站优化
  • 建立诊断的步骤河南网站优化建设
  • 行业协会网站建设方案书用php做的博客网站有哪些
  • 海口网站建设方案有视频接口怎么做网站
  • 网站只做优化南通网站制作公司
  • 做网站对服务器什么要求高网站新备案不能访问
  • 织梦网站图片不显示怎么查看什么公司做的网站
  • 百度地图添加到网站推广渠道方式
  • 做彩票网站黑龙江省建设官方网站
  • 网站建设 工业 青岛各类网站排行
  • 深圳网站建设机构住房和城乡建设部网站造价
  • 建设房产网站上海公司注销
  • 网站改版建设情况的汇报怎么查询网站的点击量
  • 电商网站前端开发响应式网站 手机站
  • wordpress打开网站打不开网站模板素材怎么用
  • 赵朴初网站建设长安营销型网站建设
  • 移动端网站一般宽做多大备案网站名称与实际网站名称不一致