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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

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