今天弄了一下,由于OA是用VB+ASP写的,所以在启动流程的时候需要调用COM,Axapta提供了COM这个类来调用COM,实现起来倒挺容易的,不过在传递数组参数的时候遇到了些麻烦.
工作流的COM提供的启动流程的方法是用字符串数组的形式接收流程相关信息的,开始的时候用如下代码调用:
COM workFLow;
str 100 dataArray[ 1 ];
;
dataArray[ 0 ] = " orderNo = FlowTest " ;
workFLow = new Com( " workFlow " );
workFLow.startProcess(dataArray);
它告诉我:COM(Object),Method called startprocess with invalid parameter.
str 100 dataArray[ 1 ];
;
dataArray[ 0 ] = " orderNo = FlowTest " ;
workFLow = new Com( " workFlow " );
workFLow.startProcess(dataArray);
后来想想也是,Axapta的数组也够怪异的,跟VB的数组肯定不是一回事,后来看了一下还好有一个COMVariant可以用一下,用COMVariant实现一个数组就run起来了.代码如下:
Array arr
=
new
Array(Types::Class);
COMVariant comVar;
;
comVar = new COMVariant();
comVar.bStr(strFmt( " PackNo=FlowTest " );
arr.value( 1 ,comVar);
comVar = new COMVariant();
comVar.safeArray(arr,COMVariantType::VT_VARIANT);
然后把得到的comVar作为参数传进去就OK了.
COMVariant comVar;
;
comVar = new COMVariant();
comVar.bStr(strFmt( " PackNo=FlowTest " );
arr.value( 1 ,comVar);
comVar = new COMVariant();
comVar.safeArray(arr,COMVariantType::VT_VARIANT);