sotower1.5-LS_工作流容易出错的地方
流程代码如下:
1>LeiSheng.WorkFlow.FlowInfo fInfo = new LeiSheng.WorkFlow.FlowInfo();
2>string nextNodeId = flowProxy1.getNextNodeIdStr("0", flowProxy1.FlowId);
3>bool isOk = PFlowReceive.SelectReceiveUser(flowProxy1.FlowNodeId, nextNodeId, ref fInfo);
4>if (!isOk) return;
5>flowProxy1.startFlow(flowProxy1.FlowId, PSystemInfo.CurrentUserID, "##PPK:" + textEdit2.Text, fInfo, "");
MessageBox.Show("申请成功!");
报错1:未将对象引用到对象的实例;
报错代码: 2>string nextNodeId = flowProxy1.getNextNodeIdStr("0", flowProxy1.FlowId);
经调试发现 flowProxy1.FlowId 为“”;
解决方法为:流程控件 flowProxy1 的属性 DbConnStr未正确设置,且值“ Data Source=LS_192_168_20_192;User ID=kgcoa;Password=cskgcoa;”前面有“ ”空格,但不知是不是有关系,所有我也将连接串前加了空格。
第二步:修改app配置文件,应该添加工作流的web服务。
完整的文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="LASTLOGINUSER" value=""/>
<add key="INPUTLANGUAGE" value=""/>
<add key="DEBUG" value="1"/>
<add key="SKINNAME" value="Blue"/>
<add key="WsUrl" value=">
<add key="WsName" value="Service"></add>
</appSettings>
</configuration>
并修改服务的数据连接为该项目的数据库。
当做完这步的时候会继续报错。没关系,我们再添加一个刷新流程的语句。
//刷新流程
flowProxy1.RefreshAllTmpltEmlt();
将这段代码放在启动流程的最前面,也就是第一行,实例化一个流程信息类的前面。
flowProxy1.RefreshAllTmpltEmlt();
1>LeiSheng.WorkFlow.FlowInfo fInfo = new LeiSheng.WorkFlow.FlowInfo();
然后我们再删除一个程序集文件。
bin\Debug\flowproxy.dll
然后动行项目,继续启动流程。当第一次启动的时候会继续上次的错误,其实这是在启动并生成dll的时候,程序没有调用到flowproxy.dll,这时个我们在报错之后停电调试,再次启动流程,这次就不要删除程序集文件了。
我们会发现可以刷新流程,flowProxy1.FlowId也会有模版值。nextNodeId 值 为“”,可以继续往下运行,当到了startFlow的时候又报错了“模版ID未装入内存”。
分析:
因为在画流程图保存的时候会生成一个流程模版,这时候模版的别名是1。(模版别名是唯一标识,当一个模版修改了多次后,会有多个别名,但只有一个模版ID)
而启动流程时根据模版ID找不到当前的模版。
我们在后台将数据库的模版别名改为和模版ID一致就可以了。表workflow_template_info
启动项目
仍然在startFlow时报错。创建主键失败!!!!
因为启动流程会生成一条新的数据在业务数据库里,而生成主键的序列在业务数据库中没有,所以我们要在业务数据库中添加一个序列COMM_INSTID,
具体的序列属性我们可以在92服务器中的gzl用户中找到这个序列。
启动流程就可以成功流转了。
【注】原文创建于百度日期2012-03-21,现在不用百度了
sotower1.5-LS_工作流容易出错的地方的更多相关文章
- python序列元素引用容易出错的地方
python序列分列表和元组,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可.举个简单的例子,a1是一个元组,a2是一个列表 ...
- 使用Storyboard拖线容易出错的地方
使用Storyboard拖线容易出错的地方: 在Storyboard中,选中某个控件,按住ctrl键进行拖线,建立Outlet和Action后,不能手动再去修改自动生成的代码,然后再次进行连线,这样会 ...
- 如果$.ajax函数迟迟得不到响应,那么最有可能出错的地方是请求参数写错了
如下的$.ajax函数 $.ajax({ url: url,// 请求的地址 data:{id:id,pieceId:pieceId,pieceDesc:pieceDesc,actualStock:a ...
- Java向前引用容易出错的地方
所谓向前引用,就是在定义类.接口.方法.变量之前使用它们,例如, class MyClass { void method() { System.out.println(myvar); } String ...
- c语言几个松散的地方(不足的地方,不严谨的地方,它容易出错的地方)。
c语言是面向过程的语言,是弱类型语言,c语言的源代码基本就是无数个函数的堆砌.即很多函数就组成c语言源代码了,也即它的源代码基本就是函数构成的. C语言里面的test()和test(void)是不一样 ...
- delphi中 dataset容易出错的地方
最近写delphi项目,用到的数据集中的dataset,一直修改exception啊,写下过程. 在对数据集进行任何操作之前,首先要打开数据集.要打开数据集,可以把Active属性设为True,例如: ...
- linux 上操作常用的命苦与出错的地方
帮助信息 ./configure -help|grep mysql 出错提示安装libxml2 tar -zxvf libxml2xxxx.tar cd libxml2xxx ./configure ...
- 转: jdbc连接数据库需要注意和出错的地方
* 1.数据库登录模式不能只使用windows登录模式,要采取混合模式登录, * 并记住相应的密码和账户: * 2.连接数据库后一定要记得关闭资源,否则就会造成资源浪费. * 关闭的时候也要注意顺序, ...
- C语言极易出错的地方(更新中)
1 时刻记住C语言风格的字符串是以'\0'结尾,无论是在内存的分配还是字符串的赋值上都需要注意
随机推荐
- SpringMVC静态资源处理[转]
SpringMvc配置DispatchServlet对所有请求进行过滤: <servlet> <servlet-name>mvc-dispatcher</servlet- ...
- JAVA实例,求用户输入的整数是否是偶数
题目:用户能输入一个整数,输入后返回是偶数还是奇数. 偶数规则:除以2能整除的数称之为偶数,否则是奇数 实例: switch版 import java.util.Scanner; public cla ...
- Mac 终端常用命令备忘
Tab 补全 pwd 显示路径 一 .ls ls -lh 查看当前路径详细文件 ls .. 返回上级目录 ls -a 显示隐藏文件 ls -a -l 以详细列表显示 ls ../../ ...
- spring controller中@Value取不到applicationContext.xml中加载配置文件的问题
原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个 ...
- 关于DevExpress的GridView.VisibleIndex的赋值问题
在DevExpress GridControl中,GridView中 如果VisibleIndex=-1,则这列将不会显示(不可见): 如果VisibleIndex>=0,则按照VisibleI ...
- 解决insmod: error inserting 'hello.ko': -1 Invalid module format
编译自己的内核模块后,insmod出现error:error inserting 'hello.ko': -1 Invalid module format 出现这种情况的原因是因为Makefile种使 ...
- Mac 下用 go 开发Android应用环境设置
需要的工具 设置代理 请参考:http://www.cnblogs.com/ghj1976/p/5087049.html Mac 下命令行设置代理: export http_proxy=http:// ...
- cocos2dx跨平台使用自定义字体
首先需要一个ttf文件的字体. 在ios中的方法: 把ttf文件放入资源文件下,然后在你的工程的Info.plist文件中新建一行(Add Row),添加key为:Fonts provided by ...
- (转).net Application.DoEvents()的作用
原文地址:http://blog.csdn.net/weinierbian/article/details/6231589 Application.DoEvents()的作用:处理所有的当前在消息队列 ...
- JDK6的switch支持不是很好
在switch中只支持int或者枚举型值: 不支持其他类型,如String,会报错 Cannot switch on a value of type String for source level b ...