苍穹应用参数开发案例原创
金蝶云社区-新用户123
新用户123
10人赞赏了该文章 2.7万次浏览 未经作者许可,禁止转载编辑于2021年07月30日 17:00:33

应用参数开发案例

标签:

应用参数、系统参数

需求背景:

应用参数的使用场景,如标准产品总账模块:不同的客户对于凭证的参数配置有不同需求,在应用参数处可通过开关做现金流量控制、金额为零校验控制等。

image.png

 

问:那么当客户有个性化参数配置需求时,如何满足?

苍穹支持自定义发布应用参数,然后各业务模块需获取该参数做业务处理,进而达到效果。具体实现方案如下:

 

实现方案:

操作步骤:

1、 新建参数,选择继承相应参数模板,例如 应用参数模板bos_appparametertpl

image.png

image.png


 

2、 添加需要配置的参数的控件,如截图

image.png


3、 然后保存发布到对应应用下

image.png

image.png


4、 在系统菜单【系统云】-【配置工具】-【参数配置】-【系统参数】中进行参数配置;

image.png

 

5.创建一张单据,添加ip、端口、用户名、密码四个字段。注册插件kd.bos.debug.mservice.Test

 


 

 

获取效果:

image.png

image.png

 

 



 

 

 

 

附件:

public void afterCreateNewData(EventObject e) {

        super.afterBindData(e);

       

        //获取应用参数

        //获取当前登录业务单元id

        long orgId = RequestContext.get().getOrgId();

        //从缓存中获取应用信息

        AppInfo ptstDemo = AppMetadataCache.getAppInfo("kded_001");

        //获取应用的主键

        String appId = ptstDemo.getId();

       

       

        AppParam apm = new AppParam();

        apm.setAppId(appId);

        apm.setOrgId(Long.valueOf("100000")); // 参数的组织

        //获取整体应用参数

        Map<String,Object> paramWhole = SystemParamServiceHelper.loadAppParameterFromCache(apm);

 

        //从整个应用参数中获取某个参数属性值

        Object ip = paramWhole.get("kded_ip");

        Object port = paramWhole.get("kded_port");

        Object username = paramWhole.get("kded_username");

        Object password = paramWhole.get("kded_password");

       

 

 

        this.getModel().setValue("kded_ip", ip.toString());

        this.getModel().setValue("kded_port", port.toString());

        this.getModel().setValue("kded_username", username.toString());

        this.getModel().setValue("kded_password", password.toString());

       

   

 

     

   }

 


赞 10