一、Activiti——idea初步配备

作者: 小疯子 分类: Activiti 发布时间: 2020-03-11 10:07

一. idea配置activiti

1.1 插件_actiBPM安裝

https://blog.csdn.net/weixin_44467567/article/details/103876746
这种办法适合所有idea安装不成功actiBPM插件的情况(自己以为,看完方法你应该可能也许会认可,不敢肯定,就是在这里插入图片描述凭感觉)
我IDEA遇到安装actiBPM插件的时候是压根就搜索不到。

解决办法:
从IDEA官网下载actiBPM.jar包
IDEA官网:https://plugins.jetbrains.com/
官网搜索actiBPM
下载actiBPM.jar包到本地磁盘
打开IDEA File -> Settings -> Plugins
然后就是Restart IDE 重启安装
安装完成~
创建bpmn文件

1.2 中文亂碼

为避免中文乱码在bpmn文件中,将如下文件中增加此行
-Dfile.encoding=UTF-8

还有这个也修改

然后重启idea

1.3 文件格式转换

注: 因为activiti的默认流程图格式是bpmn, 但是idea必须xml格式才能生成图片, 所以改为这样, 后面部署流程的时候才可以部署上去, 否则是存不进数据库.
.bpmn变为.xml和.png文件
右键进行改名,把后缀改为.xml结尾,然后生成png文件方法是右键更改后文件 Diagrams-->Show BPMN 2.0 Designer...
idea actiBPM插件生成png文件 (解决没有Diagrams或Designer选项问题)——https://blog.csdn.net/loveyour_1314/article/details/101686599
安装jboss bpmn插件,idea找不到还是到idea插件官网上找:https://plugins.jetbrains.com/plugin/4612-jboss-jbpm/versions,下载然后引入idea然后重启 (pass掉不好使,要么就是加载uml support,因为目前我的idea版本是社区版,所以不支持diagrams操作,暂时先就这样子啦)
如果有diagrams,则操作如下

点击这个向上的小箭头

选择png图片保存路径

二、Activiti代码初步开发

自己划拉好bpmn文件之后,转为xml格式文件,开始进行代码项目开发

2.1 项目模块中引入依赖:

  
            org.activiti  
            activiti-spring-boot-starter-basic  
            6.0.0  
         

2.2 设置application.yml配置自己应用的相关信息

此时主要是配置数据源:spring、mysql信息

2.3 启动主类自动创建表

(1)主类上

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
public class ServerActivitiApplication {

(2)如果启动的时候因为检测processengine找不到而报错,那么就先在yml中:

spring:
    activiti:  
        check-process-definitions: false

再启动主类就欧克了,就会自动初始化创建那20多个表

ps: bpmn所在的路径最好是在processes下,因为SpringBoot集成activiti默认会从classpath下的processes目录下读取流程定义文件

2.4 流程部署,在ApplicationRunner中执行如下命令

repositoryService.createDeployment().addClasspathResource("processes/vacate.bpmn").deploy();

即将自己划拉的bpmn文件部署到数据库中了

2.5 初始化用户和用户组

在继承实现了ApplicationRunner的勒种中添加上初始用户和用户组
我的文件为:shop\manage-server\server-activiti\src\main\java\com\xiaofeng\shop\serveractiviti\runner\ActivitiInit.java

@Component
@Order(1)   // 如果有多个类实现了ApplicationRunner接口,可以使用此注解指定执行顺序
public class ActivitiInit implements ApplicationRunner {

    @Autowired
    private RepositoryService repositoryService;

    @Autowired
    private IdentityService identityService;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("ActivitiInit执行时启动了~~");
//   todo      repositoryService.createDeployment().addClasspathResource("processes/vacate.bpmn").enableDuplicateFiltering().deploy();

//   todo      initGroupsAndUsers(identityService);
    }

    // 创建用户组及其用户
    private void createGroup(IdentityService identityService, String groupId,
                             String groupName, String groupType, String userId, String userName,
                             String passwd) {
        // 用户组
        Group g1 = identityService.newGroup(groupId);
        g1.setName(groupName);
        g1.setType(groupType);
        identityService.saveGroup(g1);
        // 用户
        User u = identityService.newUser(userId);
        u.setLastName(userName);
        u.setPassword(passwd);
        identityService.saveUser(u);
        identityService.setUserInfo(u.getId(), "age", String.valueOf(30));
        // 绑定关系
        identityService.createMembership(u.getId(), g1.getId());
    }

    // 初始化用户组
    private void initGroupsAndUsers(IdentityService identityService) {
        // 用户组
        createGroup(identityService, "employee", "员工组", "employee", UUID
                .randomUUID().toString(), "员工甲", "123456");
        createGroup(identityService, "manager", "经理组", "manager", UUID
                .randomUUID().toString(), "经理甲 ", "123456");
        createGroup(identityService, "director", "总监组", "director", UUID
                .randomUUID().toString(), "总监甲 ", "123456");
        createGroup(identityService, "hr", "人事组", "hr", UUID.randomUUID()
                .toString(), "人事甲 ", "123456");
        createGroup(identityService, "boss", "老板组", "boss", UUID.randomUUID()
                .toString(), "老板甲 ", "123456");
        createGroup(identityService, "finance", "财务组", "finance", UUID
                .randomUUID().toString(), "财务甲 ", "123456");
    }
}

后期呢这个就不要初始化用户了,会将activiti用户和系统用户,activiti组合系统用户角色表关联起来做到同步,这种扩展是因为后期登录以及其他操作都是系统用户进行的,所以要进行activiti就需要将其关联好

0