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. python计算机视觉项目实践

    这是一个贝叶斯模型的计算机视觉小项目.希望大家通过这个简单的项目知道一般的计算机视觉项目是怎样操作的. 我先讲题目放在这里希望有兴趣的童鞋花一周的时间思考并用python实现.一周以后我来发布我的详细 ...

  2. jsp标准动作

    JSP标准动作元素的使用格式为:<jsp:标记名>,它採用严格的xml标签语法来表示.这些jsp标签动作元素是在用户请求阶段运行的,这些标准动作元素是内置在jsp文件里的,所以能够直接使用 ...

  3. Android studio导入eclipse项目遇到的错误解决方案

    Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the c ...

  4. 解决Android 7.0 App内切换语言不生效的问题

    Android7.0及以前版本,Configuration中的语言相当于是App的全局设置: public static void changeAppLanguage(Context context, ...

  5. linux中怎么查看ip地址

    命令 ifconfig 可以查看当前主机的ip地址: 如果要手动更改ip地址. 可以输入命令cd /etc/sysconfig/network 在这个目录下会有 类似于ifcfg-@@的文件. 可以用 ...

  6. modelsim 出现此错误怎么办

    笔者的电脑装成了win8的系统,然后像平常一样打开modelsim,这时跳出如下图的界面: 笔者的modelsim之前是安装过的,所以这个界面已经说明,当前的许可证没有安装好.解决上述问题的办法是重新 ...

  7. 关于Unity点击New创建新项目没反应的解决方案

    1.登出Unity 2.再登录Unity 3.再次点击New,可以

  8. Generalization and Equilibrium in Generative Adversarial Nets

    Paper link: https://arxiv.org/abs/1703.00573 Blog link: http://www.offconvex.org/2017/03/30/GANs2/ G ...

  9. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  10. e861. 在两个组件之间共享输入映射和事件映射

    By sharing an InputMap or ActionMap, any change to the shared InputMap or ActionMap will affect all ...