美文网首页
BOS项目第11天

BOS项目第11天

作者: KaveeDJ | 来源:发表于2019-08-21 22:30 被阅读0次

11 BOS项目第11天

今天学习将activiti整合进BOS系统

11.1 查看流程实例列表

  • 前提:使用junit启动一个流程实例
@Autowired
private RuntimeService rs;
@Test
public void test2(){
    //报销
    HashMap<String, Object> info = new HashMap<>();
    info.put("bxyy", "出差-广州到深圳的飞机票");
    info.put("bxje", "3688.00");
    info.put("employeeName", "wangwu");
    rs.startProcessInstanceByKey("bxlc",info);
}
  • 第一步:提供一个流程实例的Action,提供list方法获取数据
@Autowired
private RuntimeService rs;
private List<ProcessInstance> list;

public List<ProcessInstance> getList() {
    return list;
}

public String list(){
    //1.查找流程实例
    ProcessInstanceQuery query = rs.createProcessInstanceQuery();
    query.orderByProcessInstanceId().desc();
    list = query.list();

    return "list";
}
  • 第二步:配置struts.xml
<!--流程实例-->
<action name="processInstanceAction_*" class="com.kdj.bos.web.action.ProcessInstanceAction" method="{1}">
    <result name="list">/WEB-INF/pages/workflow/processinstance.jsp</result>
</action>
  • 第三步:提供processinstance.jsp展示数据
    • 每个格子,动态的发送post请求,绑定div
<td>
    <div id="div${id }"></div>
    <script type="text/javascript">
        //根据流程实例id查询流程变量
        $.post("${pageContext.request.contextPath}/processInstanceAction_findData.action",{"id":'${id}'},function(data){
            $("#div${id}").html(data);
        });
    </script>
    <script type="text/javascript">
        function showPng(id){
            window.showModalDialog("${pageContext.request.contextPath}/processInstanceAction_showPng.action?id="+id);
        }
    </script>
</td>
  • 第四步:提供一个findData方法,查找流程变量数据
public void findData() throws IOException {
    Map<String, Object> data = rs.getVariables(id);
    ServletActionContext.getResponse().setHeader("content-type", "text/html;charset=utf-8");
    ServletActionContext.getResponse().getWriter().write(data.toString());
}

11.2 将运行到哪个任务显示成中文

  • 先运行下任务
@Autowired
private TaskService ts;
@Test
public void test3(){
    ts.complete("507");
}
image.png

11.3 同步bos系统中用户和角色到activiti

  • 删除数据库,把.sql的文件表创建下,导入auth_function表数据
  • 内置一个admin帐号
  • 配置文件中添加下面的代码,能自动创建activiti的表
<!-- 流程引擎配置对象 -->
<bean id="processEngineConfiguration"
      class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource"/>
    <property name="transactionManager" ref="transactionManager"/>
    <!--让activiti框架自动创建表-->
    <property name="databaseSchemaUpdate" value="true"></property>
</bean>
  • 添加角色时,把角色添加到activiti的组中
//2.把角色保存到activiti的组中
Group group = new GroupEntity();
group.setId(role.getName());
group.setName(role.getName());
identityService.saveGroup(group);
image.png
  • 添加用户时,把用户添加到activiti的用户中
//用户拥有角色
//保存到activiti的act_id_user表
org.activiti.engine.identity.User actUser = new UserEntity();
actUser.setId(model.getId()); //uuid
actUser.setFirstName(model.getUsername());
identityService.saveUser(actUser);

//用户拥有角色
for (String roleId : roleIds) {
    Role role = roleDao.findById(roleId);
    //role.setId(roleId);
    model.getRoles().add(role);

    //4.维护activiti的用户跟组的关系
    String userId = actUser.getId();
    String groupId = role.getName();
    identityService.createMembership(userId, groupId);
}

11.4 设计物流配送流程

  • 掌握物流配送流程设计思路

  • 流程定义的ID


    image.png
  • 使用组任务


    image.png
  • 网关


    image.png
  • 任务的id


    image.png

11.5 启动配送流程

  • Action代码
public String start(){
    //启动配送流程
    workordermanageService.start(getModel().getId());

    //返回列表界面
    return list();
}
  • Service代码
@Override
public void start(String id) {
    //启动配送流程
    //1.根据id查找Workordermanage
    Workordermanage wom = workordermanageDao.findById(id);

    //2.把start改成1
    wom.setStart("1");

    //3.启动流程实例transfer
    //流程变量
    Map<String, Object> info = new HashMap<>();
    info.put("orderInfo", wom.toString());

    //工作单的id
    String businessId = wom.getId();
    rs.startProcessInstanceByKey("transfer", businessId, info);
}

11.6 总结

  • 项目SSH
    1.由于老技术,老项目,各个框架都是比较老的版本
    2.Struts2【表现层】,Hibernate3【持久层】,Spring3【桥接】版本
    3.Easyui - 做界面
    4.Poi - 导入导出excel表格
    5.Shiro - 权限 -》【权限表设计-五张表】
    6.Powerdisigner 表设计软件,生成创建表的sql语句
    7.log4j 写日志,工作中一般要把请求数据和异常保存到日志文件中,方便以后排错,把日志写数据库[aop插入日志]
    8.Ehcache:一些常用的,没有什么更新数据,区域、权限
    9.Activiti 流程引擎
    10.actiBPM Activiti流程绘制插件
    11.json的框架,net.sf.json/jackson/gson【谷歌】
    12.Hessian 远程调用框架,cxf,webservice

SSM
SpringMVC,Spring,MyBatis

相关文章

  • BOS项目第11天

    11 BOS项目第11天 今天学习将activiti整合进BOS系统 11.1 查看流程实例列表 前提:使用jun...

  • BOS项目第10天

    10 BOS项目第10天 今天继续学习工作流activity,流程变量 10.1 请假流程存在的问题 缺少请假原因...

  • BOS项目第09天

    9 BOS项目第09天 今天开始学习工作流activity 9.1 工作流概念 类似于流程图,完成业务的自动化 9...

  • BOS项目第08天

    8 BOS项目第08天 对权限涉及的5张表,进行CRUD的操作 8.1 初始化权限数据 权限功能需要一张权限表记录...

  • 如何创建自定义普通基础资料(模组配置)

    [BOS]菜单打开->基础管理->基础资料普通基础资料 [BOS]复制普通基础资料模板;工程项目 [Adminis...

  • 第一天

    《1 项目概述 1.1 项目背景介绍 BOS----Bussiness Operating System 业务操作...

  • 如何在bloks.io上检查您的BOS帐户名称(3)

    第2步: 输入您的EOS用户名,它会显示您的BOS帐户名和其他信息,例如BOS快照时的EOS余额,空投您的BOS数...

  • 百度Bos上传文件工具类-BosUtils(java)

    功能要求 java项目中所有的图片均使用对象存储BOS 准备材料 首先你要又百度bos的账号,找到自己的ak、sk...

  • BOS物流管理项目

    基于itheimaSSH阶段物流管理项目 Kotlin入门也好久了,但好像还是不熟悉,熟悉一个语言还是用起来会熟悉...

  • 币创将于1月17日上线BOS

    尊敬的币创用户: 币创将于1月17日上线BOS: 1月17日21:00 (GMT+8)BOS主网上线后,币创将在第...

网友评论

      本文标题:BOS项目第11天

      本文链接:https://www.haomeiwen.com/subject/idfwsctx.html