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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-08-19
  • 2022-12-23
  • 2022-12-23
  • 2021-10-07
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-08-23
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案