最近Jerry在做一个微信和SAP Commerce Cloud集成的项目,需要在微信里调用后者的Restful API进行订单创建和读取.以前Jerry对SAP Commerce Cloud知之甚少,这次趁机学习了一下,过程中得到了SAP成都研究院Commerce开发团队的Jonathan,Kevin和Kate等几位同学的大力帮助,这里表示感谢. 在SAP官网help.sap.com上根据关键字commerce搜索,结果列表里会显示出好几个产品,这难免会让像Jerry这种刚接触commerce…
需求:我在SAP Commerce Cloud的backoffice里给某product维护了一些图片: 分别位于Normal,Thumbnails和Others等字段: 现在我想通过Restful API的方式,给定一个product code,读出这个product维护的image数据. api endpoint: https:///rest/v2/electronics/products/I042416?fields=FULL 返回的response里包含图片数据: format为prod…
从SAP官网上找到api的说明: https://api.sap.com/api/commerce_services/resource api endpoint: /rest/v2/electronics/products/I042416/references 其中referenceType参数的值从枚举类ProductReferenceTypeEnum里获得: 下图是Hybris commerce On-Premises里对应的代码,当然也可以查询SAP帮助文档找到这些枚举值: 这种refer…
Recently Jerry is working on an integration project about creating orders in Wechat platform by consuming SAP Commerce Cloud Restful API. Consultants who didn't touch SAP Commerce before(such as Jerry ) might get confused once they saw the search res…
去年 5 月,软件巨头 Adobe 以 16.8 亿美元的价格,受过了 Magento .在经历了十个月的业务整合后,该公司终于推出了全新的 Commerce Cloud 商务云服务.据悉,其本质上是一个基于完全托管在云端的 Magento 平台版本,与 Adobe 的其它工具做好了全面的集成,比如分析云.营销云和广告云. 通过此次发布,Adobe 还为平台仪表板添加了新的扩展功能,密切关注企业的电子商务战略,并首次引入了 Amazon Marketplace,用户可可在其中直接管理 Comme…
Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://sandbox.api.sap.com/ml 本文介绍一个部署在SAP Cloud Platform CloudFoundry环境下的应用,如何消费SAP Leonardo上的机器学习API. 登录SAP Cloud Platform Cockpit,进入CloudFoundry环境的Service…
去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,需要在Web应用里做同样的事情. 因为有了前一篇文章的铺垫,避免了很多重复的工作量.本文还是选择使用SAP Leonardo里的一个Product Image Classification API,即给定一张产品的图片,该API能识别出此产品的类别. 再回顾下这个API的功能:该API的模型是由SAP基于大约5万张Icecat图片训练而成,能区分29种不同的类别,这些…
一个消费者组可以消费多个topic,以前写过一篇一个消费者消费一个topic的,这次的是一个消费者组通过直连方式消费多个topic,做了小测试,结果是正确的,通过查看zookeeper的客户端,zookeeper记录了偏移量 package day04 /*消费多个topic */import kafka.common.TopicAndPartitionimport kafka.message.MessageAndMetadataimport kafka.serializer.StringDec…
RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性. Authentication vs. Authorization Authentication指的是确定这个用户的身份,Authorization是确定该用户拥有什么操作权限. 认证方式一般有三种 Basic Authentication 这种方式是直接将用户名和密码放到Header中,使用 Authorization: B…
Struts2的起源与背景 在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量. 其他MVC框架都无 法与其相比,作为一一款优秀的MVC框架.虽然Struts1可以很好地实现将控制与业务逻辑相分离, 但是其自身也存在一定的缺陷,这些缺陷体 现在以下几方面. 1.表现层支持单 Struts1框架只支持JSP作为其表现层使用,而很多的Java应用,在表现层技术选择时并不一定只使用JSP-种技术,如FreeMarker. Veloc…
SAP Cloud for Customer(C4C)和SAP其他传统产品进行数据同步的方式,如下图所示,可以使用SAP Netweaver Process Integration或者SAP HANA Cloud Integration(HCI). 在C4C系统,工作中心Administrator, 视图General Settings, 在Integration里维护数据同步远端信息. 下图意思是我期望将当前C4C系统的Opportunity数据同步到远端CRM系统,ID为Q2C. 使用PI进…
注意的是,访问API的方式为:localhost/api/customers,在实际中将要根据情况替换合适的端口,默认所有的WEB API都是通过/api根目录的方式访问的 创建自定义JSON格式化器 在通过浏览器去访问WEB API时,默认的显示方式是XML.Web API框架会自动根据访问客户端的不同从而返回不同的格式的数据.…
在上文已经讲述了基础介绍,这篇文章详细讲解API密钥方式. 利用何种加密方式呢? 经过上面加密算法的理解,单向加密不仅性能高,而且有压缩性,即长度一致,有效减少网络传输过程中的字节大小.适合我们这种调用服务API的方式.所以我们使用不可逆的加密算法,选择SHA. 因为服务API是供所有企业/个人使用,一个企业/个人可理解为一个租户.如果都使用SHA来加密日期+AccessKeyId的话,不安全.所以需要用密钥生成,就需要用到HMAC算法.HMAC即利用密钥来生成固定长度的hash加密值,提高安全…
前言 现在越来越多的公司以 API 的形式对外提供服务,这些 API 接口大多暴露在公网上,所以安全性就变的很重要了.最直接的风险如下: 非法使用 API 服务.(收费接口非法调用) 恶意攻击和破坏.(数据篡改.DOS) 因此需要设计一些接口安全保护的方式来增强接口安全,在运输层可添加 SSL 证书,上 HTTPS,在应用层主要是通过一些加密逻辑来实现.目前主流的两种是在 HTTP Header 里加认证信息和 API 签名. HTTP 简单身份认证 在 HTTP 请求的 Header 中添加认…
出于工作需要,Jerry写了这篇文章,给某些Partner做参考. 以前Jerry曾经介绍过SAP C/4HANA的五朵云到底包含哪些具体产品,其实在SAP官网上有更权威的中文解释: https://www.sap.com/china/products/crm-commerce/c4-hana-cx-suite.html 其中明确提到销售云包含SAP Cloud for Customer(C4C),SAP Revenue Cloud和Callidus Cloud. 有Partner询问有没有更详…
关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了.国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了. 直入主题,最近我正在做一个原型开发:通过SAP云平台和SAP Cloud Connector把On-Premise系统上的ABAP function module STFC_CONNECTION 暴露出来,给微信消费. 这个function module的逻辑很简单,直接把输入参数REQUTEXT的内容不加任何处理,拷贝到输出参数ECHOTE…
要想提取图片的特征向量,首先得知道特征向量是什么. 我们假设这样一个服务场景,技师上门维修某设备,发现上面某零件损坏了,假设这位技师由于种种原因,没能根据自己的经验识别出这个零件的型号.此时技师掏出自己的手机,给零件拍摄一张图片,这张图片通过手机上安装的SAP某智能解决方案,传送到SAP Leonardo平台,通过那里的人工智能服务,自动识别出这张图片上面零件的准确型号,返回给技师. SAP Leonardo上的人工智能服务,在接收到技师上传的图片后,通过某种算法将该图片的特征向量提取出来,然后…
我们可以使用SAP Marketing Cloud提供的Contact create OData API在第三方应用里创建Contact主数据. API地址:/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts 示例代码只有100多行: import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URI; import o…
SAP MM 按采购订单查询付款信息的报表? 上午给P3项目采购部门用户做了一个采购相关的报表的培训.培训过程中,客户的采购部门经理提出了一个问题:有没有报表能查询到各个采购订单的付款情况,显示采购订单号,已付多少,未付多少,未付金额系统建议的付款期又是哪一天等等.并且对方说,业务现在使用的Ariba系统里就有这种报表. 笔者从没有用过与见过传说中的Ariba,也木有玩过SAP FICO模块.所以对于用户的这个问题,笔者当即答复客户说,容我回去查查然后给答复. 笔者了解到FI模块有个报表FBL1…
Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调.本文尝试根据自己的理解总结一下目前常见的四种API设计风格以及设计考虑点. RPC 这是最常见的方式,RPC说的是本地调用远程的方法,面向的是过程. RPC形式的API组织形态是类和方法,或者说领域和行为. 因此API的命名往往是一个动词,比如GetUserInfo,CreateUser. 因为URI会非常多而且…
技术背景 前面我们通过Ribbon或Feign实现了微服务之间的调用和负载均衡,那我们的各种微服务又要如何提供给外部应用调用呢. 当然,因为是REST API接口,外部客户端直接调用各个微服务是没有问题的,但出于种种原因,这并不是一个好的选择. 让客户端直接与各个微服务通讯,会有以下几个问题: 客户端会多次请求不同的微服务,增加了客户端的复杂性. 存在跨域请求,在一定场景下处理会变得相对比较复杂. 实现认证复杂,每个微服务都需要独立认证. 难以重构,项目迭代可能导致微服务重新划分.如果客户端直接…
API设计风格(RRC.REST.GraphQL.服务端驱动) Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调.本文尝试根据自己的理解总结一下目前常见的四种API设计风格以及设计考虑点. RPC 这是最常见的方式,RPC说的是本地调用远程的方法,面向的是过程. RPC形式的API组织形态是类和方法,或者说领域和行为. 因此API的命名往往是一个动词,比如Get…
Grace的前两篇文章: SAP Marketing Cloud功能简述(一) : Contacts和Profiles SAP Marketing Cloud功能简述(二) : Target Group 本文作为这个系列的第三篇,将会给大家介绍SAP Marketing Cloud里的营销活动内容设计和产品推荐这两大模块的功能. 营销负责人员通过第二篇文章介绍的步骤确定了Target Group之后,下一步就是设计活动的内容.这部分工作在Content Studio中完成. 我们可以创建不同类型…
这个系列的第一篇文章 SAP Marketing Cloud功能简述(一) : Contacts和Profiles,我向大家介绍了SAP Marketing Cloud里的Contacts和Profiles,本文继续介绍SAP Marketing Cloud里围绕Target Group这个概念的一些相关场景和功能. (1) 根据标签细分用户:Segmentation Modeling 在Segmentation Modeling中支持以各种标签细分用户群,如商品ID.交互方式.地区.性别.生日…
Dong Grace是Jerry的同事,目前是SAP成都研究院数字创新空间团队的一名实习生,明年7月才毕业.这篇文章是Grace对SAP Marketing Cloud功能梳理的一篇学习笔记,因为篇幅较长(总共有1万多字),所以分成几部分发表出来. Jerry加入SAP的第一个工作岗位,是负责SAP Business by Design里SCM(供应链)模块的Form开发,工作了一年多,对SCM业务知识还停留在"帮助文档里每个单词都认识,但串成一句话就不知道在说什么"的阶段.和Jerr…
SAP很多系统的主数据都支持从外部系统导入,SAP Marketing Cloud也是如此,contact主数据可以来自Hybris Commerce,CRM,ERP或者Twitter,Facebook等社交媒体.来自不同渠道的contact可能对应的是真实世界里同一个人,那么就存在一个过程,该过程的逻辑是将不同渠道的contact数据进行整合,拼凑出一个包含完整信息的contact主数据存储到Marketing Cloud系统里,这个拼凑的过程称之为合并(merge),拼凑后形成的完整Cont…
在 ASP.NET Core Web API中使用 Polly 构建弹性容错的微服务 https://procodeguide.com/programming/polly-in-aspnet-core/​ 在本文中,我们将了解如何在微服务中实现容错,即在 ASP.NET Core 中使用 Polly 构建弹性微服务(Web API).通过在微服务中实现容错,我们确保在其中一项服务发生任何故障时,整个系统不会受到影响. 在本文中,我不会介绍如何在 ASP.NET Core 中构建微服务,因为我已经…
通过注解方式注入并使用其他EJB或者服务 真实项目EJB对象很多,EJB之间也可以互相调用, 在项目HelloWorld下新建接口Other在cn.hqu.ejb3下: public interface Other { public abstract String sayMe(); } 新建实现类OtherBean在cn.hqu.ejb3下: public class OtherBean implements Other { @Override public String sayMe() { r…
SAP MM 根据采购订单反查采购申请? 前日微信上某同行发来一个message,说是想知道如何通过采购订单号查询到其前端的采购申请号. 笔者首先想到去检查采购订单相关的常用报表ME2L/ME2M/ME2N/ME80FN等,居然没有哪个报表能支持这个查询需求的. 然后笔者从采购申请的相关报表着手,比如ME5A, 发现它是可以满足需求的. 比如如下的采购订单, 该订单是由采购申请1167639361转过来的. 如果想通过这个采购订单找到对应的采购申请,在ME5A里可以查询到, 同时勾选‘Close…
转载]SAP囚徒 - 通过销售订单领用到成本中心,FI替代   原文地址:SAP囚徒 - 通过销售订单领用到成本中心,FI替代实现不同成本中心记账科目不同作者:SAP囚徒 物品领用通常是库存管理的范畴,直接移动类型201计入成本中心即可:但是也有通过销售订单直接领用到成本中心,记费用科目,比如:给客户送少量的样品可以使用销售订单的成本中心来是实现(公司直接送东西给客户有偷税的嫌疑,这里忽略不计): 系统操作步骤如下: 1.VA01创建可以录入成本中心的免费订单 2.VL01N.VL02N对销售订…