使用NWDS 开发和测试PI Function Library

在本文中,我将讨论使用Netweaver Developer Studio(NWDS)开发、调试和测试PI函数库的基础知识。这包括在PI中创建函数、导出代码、将代码导入NWDS、创建测试类及实现支持类,并在本地执行和调试代码。

创建函数

创建新的函数库。

  •  创建一个执行类型为“上下文的所有值”的函数。
  •  创建签名变量。                

导出源代码。

  •  点击“Export Source Text”图标

                          

将代码导入NWDS

  •  File - New - Java Project

  • 在项目文件夹中,右键点击 src - New - Package
  •  包的名称应基于函数库的命名空间

                        

将代码添加到创建的包中

  •  将从函数库中提取的Java文件拖入你创建的包中

                     

  修复引用错误   

  •    将源文件拖入你的包之后,系统会提示缺少必要的库。

  •   要添加所需的库,请按照以下步骤操作:右键点击项目根目录  Build Path - Libraries - XPI Libraries - XPI Mapping Libraries。

                          

                         

编写代码

  •   现在,你可以开始在NWDS内部编写代码,并利用其所有特性(如代码补全、代码模板、自动格式化等),这些特性使得代码编写过程更加容易。

                       

                

public void replaceBlankValue(String[] var1, String var2, ResultList result, Container container) throws StreamTransformationException{
 //Function for replacing a blank value in var1 with another 
 //specified value in var2.
   
 for (int i = 0; i < var1.length; i++) {
  if (!var1[i].equals(ResultList.CC)) {
   if(!var1[i].equals(ResultList.SUPPRESS)){
    if(var1[i].equals("")){
     result.addValue(var2);
    }
    else{
     result.addValue(var1[i]);
    }
   }
   else{
    result.addSuppress();
   }
  }
  else{
   result.addContextChange();
  }
 }
 
  }

测试函数

  •   创建测试类

  • Package - New - Class
  • 选中“public static void main”选项

                

  • 创建Container和ResultList的实现

  • 由于函数的签名引用了ResultList和Container类,因此我们必须为这些类编写我们自己的实现。
  • ResultList的实现:
package sap.myfunctions.co.za.samples;

import com.sap.aii.mappingtool.tf7.rt.*;
import java.util.ArrayList;

public class ResultListImpl extends ArrayList implements ResultList{

 public static final String SUPPRESS = "_sUpPresSeD_";
 public static final String CC = "__cC_";
 public static final String XSI_NIL = "_!xSi#NiL$_";
 public static ArrayList al = new ArrayList();
 
 public void addValue(Object obj){
  al.add(obj);
 }

    public void addContextChange(){
     al.add(CC);
    }

    public void addSuppress(){
     al.add(SUPPRESS);
    }

    public String toString(){
     return al.toString();
    }
    
    public void clear(){
     al.clear();
    } 
}
  • Container 实现:
package sap.myfunctions.co.za.samples;

import com.sap.aii.mappingtool.tf7.rt.*;
import com.sap.aii.mapping.api.*;
import java.util.Map;

public class ContainerImpl implements Container{
 public Object getParameter(String s){
  return new Object();
 }

    public void setParameter(String s, Object obj){
     
    }

    public AbstractTrace getTrace(){
     return (AbstractTrace) new Object();
    }

    public GlobalContainer getGlobalContainer(){
     return (GlobalContainer) new Object();
    }

    public InputHeader getInputHeader(){
     return (InputHeader) new Object();
    }

    public InputParameters getInputParameters(){
     return (InputParameters) new Object();
    }

    public OutputHeader getOutputHeader(){
     return (OutputHeader) new Object();
    }

    public OutputParameters getOutputParameters(){
     return (OutputParameters) new Object();
    }
    
    public Map getTransformationParameters(){
     return (Map) new Object();
    }
}
  • 为测试类编写代码

  • 现在你可以引用ResultList和Container类,并编写代码来测试你的函数。

      

package sap.myfunctions.co.za.samples;

import com.sap.aii.mappingtool.tf7.rt.Container;
import com.sap.aii.mappingtool.tf7.rt.ResultList;

public class Test_PI_Utils {

 public static void main(String[] args) {
  
  ResultList result = new ResultListImpl();
  Container container = new ContainerImpl();
  
  PI_Utils pi_utils = new PI_Utils();
  
  String[] var1 = {"111",ResultList.CC,"222",ResultList.CC,"",ResultList.CC,"333"};
  String var2 = "0";
  
  try {
   pi_utils.replaceBlankValue(var1, var2, result, container);
  } catch (Exception e) {
   System.out.println(e.toString());
  }
  
  System.out.println(result.toString());
 }
}
  • 通过执行main方法来测试你的函数。
  • Run - run as Java Applicaiton
  • 我们可以看到方法的输出是正确的,因为它将空格转换成了"0"。

                       

在PI上部署代码

  • 将代码复制到函数库 

  •   如果测试成功,你可以将代码复制回PI中的函数库。最安全的做法是将   NWDS中的每个方法的代码逐一复制到函数库中的每个函数。

                     

  • 在PI中测试函数

  • 现在我们可以在映射中测试这个函数了。

                      

                        

、     

                         

                        

                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值