activiti创建子流程_OA流程图绘制指南

OA流程图绘制指南

必填与非必填参数

fe13460dca4b572a24ad78b086e1aa3f.png

5c514c514efd0a7cb7d9c8614eff287b.png

自下而上查询时是否允许下级查看

7900e01eacb18daae8d39684fdb39644.png

当前流程属于哪个部门 可不填默认使用添加人部门

业务流程除了审核分组不用填其余都是必填项

指定流程申请人或部门

点击空白处 → 右下角 就会出现如下

596919c93c6ec3b852f3e38e21a3385a.png

分别用于设置部门和用户都可以设置多个

指定任务审核人

把任务节点设置为用户节点 右侧便会出现如下 可设置审核人和部门都可以设置多个

7b552f48212602303e1440731b1f5fe6.png

节点

会签配置

14b80f6fa4e1c6cb6a0a04add67b9f2c.png

isSequential=false时,表示的并行执行,即该节点下的多条任务可以同时执行。

activiti:collection:执行该会签环节的参与人,此处是使用的一个名叫publicityList的流程变量

activiti:elementVariable:表示的是每一个分支都有一个名叫publicity的流程变量,和上方的activiti:assignee结合

a31e0d809053dc60ea57634ef0a157ab.png

0b123ebef769d36c9e08ef1386f9691e.png

根据规范的要求,每个上级流程为每个实例创建分支时都要提供如下变量:

nrOfInstances:实例总数 会签人数

nrOfActiveInstances:当前活动的,比如,还没完成的,实例数量。 对于顺序执行的多实例,值一直为1。

nrOfCompletedInstances:已经完成实例的数目。

设置会签受理人

5160f0f7d0cc50e1504cd2e84d15072e.png

7c9cfb18e4ef01cc4e5e2bc27197842f.png

需要注意的是当流程的变量名称不能重名否则会被覆盖

回调

d7080726a166d9d725bad04a92f160fc.png

d479afb0f006377893df2ea54f5a9124.png


注意一下:提供给oa模块获取业务申请数据的控制器和提供给oa模块做审核完成后回调的控制器 类的命名和接口uri都用上图中的那种
AppInfoController @RequestMapping("/api/v1/app_info")
ProcessCallBackController @RequestMapping("/api/v1/process_call_back")

接口uri调用实现接口里面的 path常量就行了

添加对应流程的路由

8ce144468f10dda4c4816edec0bd945d.png

添加新类型审核

添加常量

增加流程前缀在OA的接口项目中BusinessProcessKey常量类 增加模块名在 ModuleName常量类如我要给用户配置一个审核如下

8baba156b288d590eddc702c915efcf6.png

c8f3750a9a2771443095166f2e92ba78.png

之后再按上面添加相应的用户流程

在OA创建相应的接口

764c4682be3b379105fa72d34e301b0b.png

命名统一加上模块名前缀 后缀统一使用AppInfoClient,CallbackClient

再到OA的ProcessHandle类中的 getApi方法增加对应的case即可

6317408626f369dd7cf667307f54047f.png

启动自动完成流程注意事项

  1. 启动自动完成流程时会执行回调 但是调用方启动流程方法还没执行完 使用了事务话那么会导致数据没有提交 会导致执行回调查询时查不到数据,
  2. 保存数据需要放在启动申请之前 防止自动流程申请时回调查询不到数据以及申请时就流程结束了触发的回调

正确做法如下:把执行保存的代码再放到一个方法中 再在上面加上事务 不要直接与逻辑代码写在一起加事务

a9652cb41df875ea797f47f36dca3687.png

启动和回调的事务处理

回调Callback接口

实现回调接口 如果回调执行异常则直接抛出异常即可,OA这边会捕获异常记录后

抛出进行回滚

7a81aae766b8f1e4fd9a30be8578584c.png

启动流程

启动流程中如果出现了异常OA则会回滚抛出 因此只需要捕获是否有异常如果没有异常则正常提交

8846ffc772c0cb965574a798943bdff8.png

如果是批量启动则不会抛出异常 需通过isSuccessfulStartup字段进行判断是否启动成功

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activiti 是一个流程引擎框架,可以帮助开发者快速实现工作流相关的应用。下面是使用 Activiti 创建流程引擎的步骤: 1. 创建 maven 项目,添加 Activiti 依赖。 在项目的 pom.xml 文件中添加以下依赖: ``` <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> <version>5.22.0</version> </dependency> ``` 2. 创建流程引擎配置类。 在项目中创建一个 Java 类,用于配置流程引擎。可以在该类中指定数据库连接信息、流程图文件路径等信息。以下是一个示例配置类: ``` import java.io.IOException; import java.io.InputStream; import java.util.Properties; import org.activiti.engine.ProcessEngine; import org.activiti.engine.ProcessEngineConfiguration; import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration; public class ActivitiConfig { public ProcessEngine getProcessEngine() throws IOException { // 读取配置文件 InputStream inputStream = getClass().getResourceAsStream("/activiti.properties"); Properties properties = new Properties(); properties.load(inputStream); // 配置流程引擎 ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() .setJdbcUrl(properties.getProperty("jdbc.url")) .setJdbcUsername(properties.getProperty("jdbc.username")) .setJdbcPassword(properties.getProperty("jdbc.password")) .setJdbcDriver(properties.getProperty("jdbc.driver")) .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE); // 创建流程引擎 ProcessEngine processEngine = cfg.buildProcessEngine(); return processEngine; } } ``` 在该配置类中,我们读取一个名为 activiti.properties 的配置文件,该文件包含了数据库连接信息。在实际开发中,我们可以将这些信息存储在外部配置文件中,以便于修改和管理。 3. 创建流程图文件。 使用 Activiti Modeler 工具创建流程图文件,或者手动编写 BPMN 2.0 标准的 XML 文件。将该文件放置在项目的 classpath 下,以便于程序能够读取。 4. 启动流程引擎。 在程序中使用上述配置类创建流程引擎实例,并启动该实例。以下是一个示例代码: ``` public static void main(String[] args) throws IOException { // 创建流程引擎配置类 ActivitiConfig config = new ActivitiConfig(); // 获取流程引擎实例 ProcessEngine processEngine = config.getProcessEngine(); // 输出流程引擎信息 String name = processEngine.getName(); String version = ProcessEngine.VERSION; System.out.println("流程引擎名称:" + name); System.out.println("流程引擎版本:" + version); // 关闭流程引擎 processEngine.close(); } ``` 在上述示例代码中,我们创建了一个 ActivitiConfig 实例,并使用该实例获取了流程引擎。获取流程引擎后,我们可以输出其名称和版本信息,并在程序结束时关闭该引擎。 以上就是使用 Activiti 创建流程引擎的步骤。开发者可以根据自己的需求对流程引擎进行配置和使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值