BOS项目第11天

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,932评论 0 10
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,174评论 1 32
  • 10 BOS项目第10天 今天继续学习工作流activity,流程变量 10.1 请假流程存在的问题 缺少请假原因...
    KaveeDJ阅读 340评论 1 1
  • 终端远程登陆后经常提示You have new mail in /var/spool/mail/root 这个提示...
    Success85阅读 11,245评论 0 2
  • 妈妈的城堡里 有一座神奇的大炮 装满了耐心 小蜗牛起床慢 穿衣慢 吃饭慢 写作业慢 大炮里便发出一个个耐心 耐心等...
    Tim锦上添花阅读 470评论 0 1