Java Based Apps on SAP Cloud_4_JAM与文档管理

SAP JAM

ESPM中,使用master branch。启用SAP JAM服务


进入管理员界面,点击外部应用程序

点击添加应用程序,创建ESPM应用
创建完后,点击管理记录类型,添加记录类型

添加Product 记录类型
外部类型:https://espmxxxxxxxtrial.hanatrial.ondemand.com/espm-cloud-web/espm.svc/$metadata#Products
注释URL:https://espmxxxxxxxtrial.hanatrial.ondemand.com/espm-cloud-web/webshop/reviews_annotations.xml

同样添加CustomerReviews记录类型
外部类型:https://espmxxxxxxxtrial.hanatrial.ondemand.com/espm-cloud-web/espm.svc/$metadata#CustomerReviews
注释URL:https://espmxxxxxxxtrial.hanatrial.ondemand.com/espm-cloud-web/webshop/reviews_annotations.xml

在CustomerReviews记录类型中,添加2个过滤器,分别过滤Rating eq 5和Rating eq 1


在产品设置-群组模板中,我们可以上传模板,模板下载地址https://sapjamsamplecode.github.io/GroupTemplates/ESPM_Reviews-Products.zip

在主页的业务记录,可以看到ESPM应用

点击进去可以查看详细

针对单条记录,我们可以创建群组,模板选择上传的 ESPM Review-Product 模块

查看创建的群组,点击面板上的编辑,可以编辑组件内容

删除原来的小部件,点击添加小部件按钮,可以添加相关业务记录的内容,编辑完成后,点击发布,更新应用

点击相关的条目,可以再次添加评论

文档管理

HCP通过CMIS服务来管理文档


文档管理步骤
1 Create a new repository:创建一个RepositoryOptions,设置唯一的Name与Key,创建InitialContext并调用lookup("java:comp/env/EcmService")方法创建EcmService

RepositoryOptions options = new RepositoryOptions();
options.setUniqueName("com.foo.MyRepository");
options.setRepositoryKey("my_super_secret_key_123"); // (min. 10 chars)
options.setVisibility(Visibility.PROTECTED);
//optionally enable virus scanning on upload: options.setVirusScannerEnabled(true);
InitialContext ctx = new InitialContext();
EcmService ecmService = (EcmService) ctx.lookup("java:comp/env/EcmService");
ecmService.createRepository(options);

2 Connect and fetch the root folder:通过Name与Key连到EcmService,可以获取RootFolder

openCmisSession = ecmService.connect(”com.foo.MyRepository”, ”my_super_secret_key_123”);
Folder root = openCmisSession.getRootFolder();

3 Get all children of root folder:通过root folder可以获取子文件夹

ItemIterable<CmisObject> children = root.getChildren();
for (CmisObject o : children) { ... }

4 Create a new document:创建新的文档,定义文档的类型与名称,再定义内容,文档内容转成InputStream

// define manadatory properties
Map<String, Object> properties = new HashMap<String, Object>();
properties.put(PropertyIds.OBJECT_TYPE_ID, "cmis:document");
properties.put(PropertyIds.NAME, "HelloWorld.txt");
// define the content
byte[] helloContent = "Hello World!".getBytes("UTF-8");
InputStream stream = new ByteArrayInputStream(helloContent);
ContentStream contentStream = openCmisSession.getObjectFactory().createContentStream("HelloWorld.txt",
helloContent.length, "text/plain; charset=UTF-8", stream);
// create the document below the root node
root.createDocument(properties, contentStream, VersioningState.NONE);

在SalesOrderProcessor.java文件的getSalesOrderById方法调用InvoiceBuilder生成PDF文档

// if the sales order are fetched successfully, generate the pdf report data.
try {
    if (CMISSessionHelper.getInstance().getSession() != null) {
        InvoiceBuilder builder = new InvoiceBuilder();
        String reportPath = builder.generateInvoice(soiList);
        updateSalesOrderHeader(reportPath, soiList, em);
    }

ESPM中的文档管理
InvoiceBuilder中,通过Folder root = CMISSessionHelper.getInstance().getSession().getRootFolder();调用公共类CMISSessionHelper中的方法获取API,CMISSessionHelper公共方法中,定义了获取文档的Session等内容。
网页访问时,点击下载按钮调用CmisRead这个Servlet,首先在init方法中获取CmisSession

    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        try {
            openCmisSession = CMISSessionHelper.getInstance().getSession();
        } catch (Exception | NoClassDefFoundError e1) {
            LOGGER.error(e1.getMessage());
        }
    }

在doGet方法中,获取文档流,并输出

        final String objectId = request.getParameter("objectId");
        try {
            if (openCmisSession != null) {
                Document doc = (Document) openCmisSession.getObject(objectId);
                ContentStream content = doc.getContentStream();
                String type = content.getMimeType();
                String name = content.getFileName();
                int length = (int) content.getLength();
                InputStream stream = content.getStream();
                response.setContentType(type);
                response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + name);
                response.setContentLength(length);
                ioCopy(stream, response.getOutputStream());
            } else {
                response.setStatus(501);
            }

        } catch (Exception exception) {
            exception.printStackTrace();
        }

Twitter APP

CheckOut Twitter Branch
TwitterUpdateWs.java文件中,修改final String statusMessage = "@openSAP test connection";,TwitterUpdate.java文件中,记录Key与Secret。

    static String consumerKeyStr = twitterDetails.get("consumerApplicationKey");
    static String consumerSecretStr = twitterDetails.get("consumerApplicationSecret");

config.properities文件中,确定DestinationName

#Twitter Application Keys
OAuthDestinationName=twitterOauth

apps.twitter
登陆https://apps.twitter.com,创建APP,其中Callback URL 填写webshop的URL,Permission改为Read, write, and direct messages,获取Consumer Key (API Key)与Consumer Secret (API Secret)


HCP Destination
HCP中创建链接,名称为OAuthDestinationName的内容,添加属性,key为代码中consumerApplicationKey与consumerApplicationSecret,value为Twitter API中的值

测试APP
登陆https://espmc5228335trial.hanatrial.ondemand.com/espm-cloud-web,首次登陆会有Twitter授权页面

创建Order并CheckOut
查看Twitter发布的消息,即为statusMessage中的内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,833评论 25 707
  • 一 今天南京下了鹅毛大雪,今年南京的雪以往来得更早一些。坐在窗前码字,偶尔抬头,就能看见窗外的雪花洋洋洒洒从天上降...
    玖月成长记阅读 280评论 4 2
  • 随着社会节奏的加快,我们变得越来越浮躁,进而产生一种心态:求快。 在这种心态的支配下,我们常常幻想,通过短期的努力...
    胡豆豆joyce阅读 688评论 0 0
  • 看所有好的育儿书和心理学书,每天练习百词斩,流利说和叽里呱啦提升自己英语能力,提升口语能力,18年初报双语家庭,学...
    可乐mama阅读 206评论 0 0