NETBPM如何指定下一流程处理人

本着“软件以应用为本”(潘加宇老师对我的影响在这一点上很深。)的原则,我为ERP搭建了一个用NETBPM作的支持网站,想着能够看着软件得以应用,自是非常高兴。

不过,这个工作流的缺点也是显然的,如何在流程中让上一操作者指定下一个操作者就是一个难点,因为根据预先的组织关系进行的分派很有可能出现流程无法进行下去的危险,这样就会限制软件的应用。想着netbpm脱胎于jbpm,我就想找找答案。当然有很多此类文章,不过,还是没有找到好使的。

于是,只好自己思考了。我觉得有三个解决办法:一是在流程中让用户指定一个actor,不过要增加一些处理的类;二是利用action来进行处理;三是采用decision的方式来判断。

对于第二种思路,我检查代码,发现行不通。原因是我想在事件before-activitystate-assignment触发对actor赋值,但是这两者是分开发生的,无法先行赋值给一个actor,造成了actor的Null值错误。开始还想直接通过数据库进行赋值,通过查询attribute的位置,将值赋好,不过这是绝对违背软件的原则的,而且也行不通。

第三种方法还来不及细想,只好回到第一种方法上来。我想的是直接让用户选择下一个actor。开始想在序列化的时候保存actor.id即可,谁知道总是报错,序列化行不通。只好改在htmlformatter上想办法,竟然成功!非常简单,又容易理解,嘿嘿,看来走了不少弯路。

代码如下:

public String ObjectToHtml(Object valueObject, String parameterName, System.Web.HttpRequest request)
{ System.String temp = "";
IList users=OrganisationUtil.Instance.FindAllUsers();
System.String text = "<select name=\"" + parameterName + "\" >";
foreach(IUser user in users)
{
temp="";
temp="<option value=\""+user.Id+"\">"+user.FirstName+user.LastName+"</option> ";
text+=temp;
}
text+="</select>";
return text;
} public Object ParseHttpParameter(String text, System.Web.HttpRequest request)
{
IUser user=OrganisationUtil.Instance.GetUser(text);
return user;
} 当然,如何取得所有的用户,需要增加一个方法即可。 解决此问题,耗时6个小时,觉得又增加了一些功力一般。挺高兴的。 注意:发现一个group下一个用户只能有一个role,不然无法查找group. 感谢网上许多的文章,让netbpm变得有点用了。

NetBpm如何指定下一流程处理人(8)的更多相关文章

  1. css border-bottom(指定下边线的样式、宽度及颜色)

    border-bottom(指定下边线的样式.宽度及颜色) border-bottom: 值: border-bottom-style:值; border-bottom-color: 值; borde ...

  2. 墨菲定律:当你觉得一个地方可能有bug,那么这个地方就会有bug----顺带了解下Tomcat那少有人注意的localhost.log

    一.问题概述 题目有点长,但应该值得后端java们了解下有点小坑的localhost.log,让我长话短说. 博主是搞java后端的.后台是很简单的spring mvc + spring框架. 今天测 ...

  3. N层电梯只停一层情况下,求所有人爬楼层数最少

    一.题目: 石家庄铁道大学基础教学楼一共有四部电梯,每层都有人上下,电梯在每一层都停.信1201-1班张一东每层都停有点儿不耐烦.如果在上下课高峰时刻电梯从一层上行,但只允许停留在某一层.每个人选择自 ...

  4. code -结合实例总结代码下拉流程

    1.查看手机需要的版本 1)如果手机本来就可以正常工作,可以使用指令 zhangshuli@zhangshuli-MS-:~/Desktop/day_note/plan$ adb shell getr ...

  5. 【Java面试】为什么引入偏向锁、轻量级锁,介绍下升级流程

    Hi,我是Mic 一个工作了7年的粉丝来找我,他说最近被各种锁搞晕了. 比如,共享锁.排它锁.偏向锁.轻量级锁.自旋锁.重量级锁. 间隙锁.临键锁.意向锁.读写锁.乐观锁.悲观锁.表锁.行锁. 然后前 ...

  6. imx6q uboot启动流程牛人的图片(转)

  7. DEBUG模式下屏蔽某些烦人的动态日志信息

    以上就是控制台循环打印的日志信息,总是会刷屏干扰到那些有用的日志信息,所以要把它们屏蔽掉,虽然如果将log级别调成info级别可以不显示了,但是那样的话,别的有用的日志信息就无法显示了. 要有针对性的 ...

  8. android下网络通信流程

    新版本android中进行socket编程有了新的要求和规定,在主线程中不能进行socket的创建和通信.所以一般都在线程中使用socket编程 这样在线程中使用就需要出现子线程与主线程交互的问题. ...

  9. Java学习日记基础篇(三-下)——流程控制之循环控制

    循环控制 for循环 语法: for(循环初值;循环条件;步长) { 语句; //循环体 } 例子: import java.io.*; public class Demo4 { public sta ...

随机推荐

  1. PCL中分割方法的介绍(2)

    (2)关于上一篇博文中提到的欧几里德分割法称之为标准的距离分离,当然接下来介绍其他的与之相关的延伸出来的聚类的方法,我称之为条件欧几里德聚类法,(是我的个人理解),这个条件的设置是可以由我们自定义的, ...

  2. WampServer 常见问题

    Wamp就是Windows 下的Apache Mysql PHP集成环境. 支持phpmyadmin 注意:安装前请先安装VC 2010运行库(vcredist2010.exe ),否则会提示没有找到 ...

  3. Java学习路线图,Java学习计划建议

    怎么学习Java,这是很多新手经常遇到的问题,现在我简单描述下一个Java初学者到就业要学到的一些东西:     首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA).J ...

  4. (笔记)Linux下的CGI和BOA使用期间遇到的问题汇总

    前段时间在做C/S模式下的视频监控,这段时间是B/S模式下的.期间遇到了不少问题,有些问题一卡就是几天,有些问题的解决办法在办法在网上也不是很好找,所以还有些问题虽然得到了临时解决,但是其原理现在我本 ...

  5. 读《像计算机科学家一样思考python》——笔记

    这本书,完全是入门级的,特别简单,一天多就看完. 目录: 第二章 变量.表达式和语句 第三章: 函数调用 第四章: 案例研究:接口设计 第五章 条件与递归 第六章:有返回值的函数 第七章 迭代 第八章 ...

  6. 容易出错的 if 语句

    下面列举几个容易出错的if语句实例,如果后续还有新的发现,还会继续更新! 出错一:在括起控制表达式的括号后面加分号 ; ); printf("值为正"); 初次运行,感觉一切正常, ...

  7. [转]android ANR产生原因和解决办法

    ANR (Application Not Responding) ANR定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(AN ...

  8. JUnit规则

    在本节中,我们学习和了解JUnit中叫做规则的新功能,它允许非常灵活在测试类重新定义每个测试方法的行为.为了这个目的,@Rule注解被使用来标出测试类的公共字段.这些字段类型为MethodRule,这 ...

  9. char* 与 char[] 的区别

    "Hello world"作为静态字符串实际上存储在数据区,但写程序的人不知道这个地址,而程序本身知道.当某一函数以{ char p[] = "Hello world&q ...

  10. winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...