• eas-dep客户/服务业务



    上下文methodCtx
    方法上下文存放了方法的相关信息
    方法上下文存放了方法的相关信息,包括方法参数和方法返回值,方法上下文提供如下:
    例:
    删除主表记录也删除对应表的记录

    //服务端更新单据状态
    var imp=JavaImporter();
    imp.importPackage(Packages.com.kingdee.eas.util.app)
    with(imp){
    var ctx=pluginCtx.getContext();
    var billId=methodCtx.getParamValue(0);//获取参数
    var isDone=methodCtx.getResultValue();//获取方法返回值是否成功执行
    var status=11;
    var sql="delete T_SD_SALEORDER WHERE FBillID='"+billId+"'";
    if(isDone){
    DbUitl.execute(ctx,sql);
    }
    methodCtx.setResultValue(java.lang.Boolean.TRUE);//设置方法返回值
    }

    获取方法参数:
    methodCtx.getParaValue(0)获取单据pk

    获取方法返回值
    在后置脚本中使用,通过状态方法是否成功执行来判断是否需要删除对于表的记录
    methodCtx.getResultValue();

    设置方法返回值
    必须通过methodCtx.setResultValue(value)来设置,不可以用类似方法返回值的方式写
    (return value)

    获取方法名 String getName()
    获取方法别名 String getAlias()
    获取方法参数类型 String[] getParamTypes()
    获取方法某个参数的类型 String getParamType(int index)
    获取方法参数值 Object[] getParamValues()
    获取方法某个参数值 Object getParamValue(int index)
    获取方法返回值类型 String getResultType()
    获取方法返回值 Object getResultValue()
    设置方法返回值 void setResultValue(Object value)

    客户端调用业务方法方式
    com.kingdee.bos.framwork.BOSClientTool.callCmethod(pk,methodSignature,args)
    元数据pk(IMetaDataPK pk)
    方法名称(String methodSignature)
    参数对象数组(Object[] args)
    其中元数据pk为实体的全名称,可从元数据检查获得
    元数据路径:在元数据信息中alias节点中可以获取

    //客户端调用服务端方法
    var easNames=JavaImporter();
    easNames.importPackage(Packages.com.kingdee.bos.ctrl.extendcontrols);
    easNames.importPackage(Packages.com.kingdee.bos.util);
    easNames.importPackage(Packages.com.kingdee.bos.metadata);
    easNames.importPackage(Packages.com.kingdee.bos.framework);
    with(easNames){
    //定义所需参数
    //元数据pk
    var pk=new MetaDataPK("com.kingdee.eas.basedata.assistant.Termsofapply");
    //方法名称从该业务方法的扩展点的描述信息中拷贝获得,否则容易出错
    //如果方法没有返回值,注意名称前有空格,不要删除...
    var name="java.lang.Boolean updateStatus(com.kingdee.bos.util.BOSUuid billId)";//业务方法描述中拷贝过来
    //参数以数组形式保存,js数组定义格式请参见附录数组
    //下面示例中为一个参数BOSUuid
    var params = [BOSUuid.read("2s5eatuISSqb7TuLMfibSMSKQjo=")];

    //使用客户端方法业务调用
    var result=BOClientTool.callCmethod(pk,name,params);
    MsgBox.showInfo("Result is"+result);
    com.kingdee.eas.util.SysUtil.abort();
    }

    ----
    服务器端调用业务方法方式
    com.kingdee.bos.framework.BOProxy.getProxy(plugin.getContext(),pk).callCmethod(methodSignature,args)
    服务端上下文 Context ctx
    元数据PK IMetaDataPK pk
    方法名称 String methodSignature
    参数对象数组(Object args)
    参数获取方式参数客户端业务方法调用

    客户端调用新增,修改,查询等动作,首先需要一个远程接口,通过:
    var bizInterface=com.kingdee.bos.BOSObjectFactory.createRemoteCommonBOSObject(
    new com.kingdee.bos.metadata.MetaDataPK(entityPK))
    其中entityPK为自定义基础资料的路径+app+包名(实体的全名)
    var opk=new com.kingdee.bos.dao.ormapping.ObjectUuidPK(
    com.kingdee.bos.util.BOSUuid.read(id)
    ----
    //创建值对象
    funciton createNewData(entityPK){
    var ObjectValue=new com.kingdee.eas.ep.DataBaseCustomInfo();
    var entityBosType="这里是我的bostype" //bostype在元数据信息中可以得到
    objectValue.setBOSType(new com.kingdee.bos.util.BOSObjectType(entityBosType));
    //实体的PK,可通过元数据检查得
    ObjectValue.setPK(new com.kingdee.bos.metadata.MetaDataPK(entityPK));
    return objectValue;
    }
    var entityPK="com.kingdee.eas.basedata.assistant.app.Termsofapply";
    var object=crateNewData(entityPK);
    //通过实体PK获取自定义基础资料或单据接口,所需参数为实体pk
    var bizInterface=com.kingdee.bos.BOSObjectFactory.createRemoteCommonBOSObject(
    new com.kingdee.bos.metadata.MetaDataPK(entityPK));
    bizInterface.addNew(object);//新增
    ((com.kingdee.eas.ep.DataBaseCustomInfo)object).setName(“TestName”);
    object.setId(opk.getKeyValue("id"));
    object.setName("myName");
    bisInterface.update(opk,object);

    //更新值对象
    var fid = "87aUzEo7QWiREPo/LfoyDp3Uhts="
    var entityPK = "com.kingdee.eas.basedata.assistant.app.Termsofapply";
    var bizInterface=com.kingdee.bos.BOSObjectFactory.createRemoteCommonBOSObject(
    new com.kingdee.bos.metadata.MetaDataPK(entityPK)
    )
    var opk=new com.kingdee.bos.dao.ormapping.ObjectUuidPK(com.kingdee.bos.util.BOSUuid.read(id))
    //取得原值对象
    var object=bizInterface.getValue(opk);
    //更改值对象某些属性
    object.setName("......");
    //更新
    bizInterface.update(opk,object);

    //删除值对象
    var fid = "87aUzEo7QWiREPo/LfoyDp3Uhts="
    var entityPK = "com.kingdee.eas.basedata.assistant.app.Termsofapply";
    var bizInterface=com.kingdee.bos.BOSObjectFactory.createRemoteCommonBOSObject(
    new com.kingdee.bos.metadata.MetaDataPK(entityPK)
    )
    var opk=new com.kingdee.bos.dao.ormapping.ObjectUuidPK(com.kingdee.bos.util.BOSUuid.read(id))
    bizInterface.deleteBatchData([opk])
    值对象创建必须设置一个实体的bosType和PK,引擎是通过这两项进行ORMMapping的。删除、更新、查看等动作由于值对象都存在id,所以其可以自动解析获得,不需要手工设置bosType和PK。对于删除操作,需要用deleteBatchData,参数为ObjectUuidPK数组。

  • 相关阅读:
    mac本地如何搭建IPv6环境测试你的APP
    消息通知机制(NSNotification和NSNotificationCenter)
    Xcode 6制作动态及静态Framework
    html格式化输出JSON( 测试接口)
    UIContainerView纯代码实现及原理介绍
    CocoaPods 详解之----更新篇
    使用Cocoapods创建私有podspec
    ios高效开发-正确的使用枚举(Enum)
    在Xcode6中搭建Python开发环境
    用Swift语言做App开发之单元测试
  • 原文地址:https://www.cnblogs.com/luojiabao/p/11091486.html
Copyright © 2020-2023  润新知