SAP BAS中Fiori开发的高阶功能(storyboard, navigation, guided development, variant)

1. 前言

在之前的几篇文章中,我介绍了SAP BAS的一些基本功能,包括账户申请,创建工作区,git的使用以及如何step-by-step去创建出你的第一个Fiori项目等等。在本篇中,我将进一步介绍一些在开发Fiori应用程序时会用到的高阶功能。

2. 功能点

2.1 SAP Fiori View

在SAP Fiori视图活动中,我们可以访问应用程序建模器(Application Modeler)以及一些 通用的SAP帮助文档和消息发布。

我们可以通过Application Modeler来显示、修改已有的应用程序界面,也可以在此为应用程序添加新页面。

2.1.1 Page Map

在page map页面可以更改应用程序的页面结构,也可更改应用程序的设置例如如标题,描述或灵活列布局(Flexible Column Layout)。这些改动都会被保持至manifest.json配置文件中。

当然,通过page map可以为应用新增页面。

2.1.2 Page Editor

在Page Edior中,可以展示出每个Page元素,并在Properties面板上更改它的设置。
通过Page Editor对页面进行的调整会保存至manifest.json文件中或保存为SAPUI5 Flexibility Change。

2.2 Service Modeler

SAP BAS中的服务建模器Service Modeler支持基于.xml /.edmx 文件的OData V2/V4服务模型的可视化。打开Service Modeler的两种方式:

  • 通过命令面板,输入命令:Fiori: Open Service Modeler
  • 右键metadata.xml文件,然后选择Override Annotations

通过service modeler我们可以:

  • 轻松浏览复杂的服务,并查看服务的实体集、实体和属性
  • 查看与服务的实体和属性相关联的注释annotations
  • 管理SAP Fiori元素应用程序所需的服务,例如向项目添加新服务或同步已经存在的服务
  • 管理与SAP Fiori元素项目的不同OData服务相关联的本地注释文件(local annotation)
  • 在本地覆盖annotations(通过使用复制annotation按钮)

2.3 Manifest Manager

Manifest Manager包含两部分功能:Service Manager服务管理器和Annotation File Manager注解文件管理器。

邮件manifest.json文件,可以选择打开哪种管理器:

2.3.1 Service Manager

通过Service Manager服务管理器可以为项目添加新服务(仅适用于Overview floorplan和Freestyle应用程序),以及从服务器刷新服务,进而重新生成本地的metadata.xml和annotation XMLL。

2.3.2 Annotation File Manager

通过Annotation File Manager注解文件管理,则可以:

  • 列出项目中所有的annotations文件
  • 创建新的本地annotation文件
  • 更改注解文件的顺序
  • 激活/取消激活/删除注解文件

2.4 Storyboard

打开Storyboard的方式,命令面板 中输入命令 Open Storyboard 。通过故事版storyboard可以用图形化编辑器和向导的方式开发应用程序。

故事板提供了应用程序的数据模型、外部数据模型、服务和应用程序的UI前端的图形视图,以及它们之间的连接关系。这种可视化的表现形式让开发人员可以快速理解应用程序的结构和组件。

Storyboard也可以显示为树状结构。

2.5 Service Diagram

在Storyboard中有一个隐藏功能,那就是service diagram。在storyboard上点击service name, 然后选择View Diagram可以打开对应服务的Service Diagram。

在service diagram中可以显示metadata.xml文件的不同可视化模式:

  • 通用(General):实体及其属性的列表
  • 图表 (Diagram):可视化实体及其关系
  • 元数据 (Metadata):显示纯XML文件

注意,单独打开metadata.xml文件时,其仅会显示为元数据的格式。仅在service diagram中,可以显示成图表的方式。

2.6 Guided Development

通过有Guided Development,可以查看如何在SAP Fiori元素应用程序中实现某些功能的指南和教程。可以使用命令面板的 Fiori: open Guided Development 命令,或邮件webapp文件夹打开此功能。

选定功能后,可以直接通过Guided Development一步一步实现选定的扩展功能。

2.7 App-to-App Navigation (应用间导航)

如果两个应用程序位于相同的workspace工作空间中,则可以用预览功能,来测试从一个应用程序到另一个应用程序的导航。

使用命令面板并选择 Fiori: Enable App-to-App Navigation Preview 命令启动此功能

  1.  选择源项目-配置将被添加到该项目
  2.  选择目标项目-想要导航的位置

该命令生成一个新的配置 appconfig/fioriSandboxConfig.json 到源应用程序文件夹,并更新ui5.yaml 文件。可以向同一个源应用程序添加多个目标导航。

2.8 在外部的Fiori Launchpad上运行Fiori应用程序

SAP BAS为用户提供测试应用程序运行的能力,而无需在外部Fiori Launchpad上重新部署应用程序。打开命令面板, 输入命令Fiori: Add FLP Embedded Configuration:

然后完成以下步骤:

  1. 以小写输入已部署应用程序的BSP(BSP容器是SAP系统中的一个存储位置,用于存放Web应用程序的所有文件,每个BSP容器都有一个唯一的名称,可以通过这个名称在SAP系统中访问到对应的Web应用程序)
  2. 输入含后端配置的YAML(通常是_ui5.yaml_文件)
  3. 输入到SAP Fiori Launchpad的相对链接,例如sap/bc/ui5_ui5/ui2/ushell/shells/abap/Fiorilaunchpad.html (将根据后端服务解析)
  4. 构建应用程序
  5. 使用新的start-embedded脚本运行应用程序

完成任何更改后,应用程序不会立即刷新,需要通过执行npm _run build_ _来重新构建应用,进而查看UI上的变化。一旦构建执行完成,在外部启动台上运行的应用程序就会自动刷新。

2.9 创建开发者变式

通过SAP Fiori工具提供的variant creation,开发人员可以为应用程序或单个表创建variant,这些variant变式可以与应用程序一起交付给用户。这些variant将会作为SAPUI5 flexibility changes存储在项目的webapp/changes文件夹中,并在构建Build步骤中与应用程序一起打包。

执行NPM脚本 start-variables-management。也可以使用NPM脚本start-control-property-edito,它会以UI自适应模式打开应用程序,并封装在属性编辑器页面中。

如果这个脚本不存在,可以通过命令面板的 Fiori: Add Configuration for Variants Creation 命令来配置此功能。

对于每个新变体,在项目的webapp/changes文件夹中会创建一个或多个SAPUI5更改文件。


2.10 在本地运行单元测试

您可以在本地运行单元测试。使用预配置的NPM脚本,创建一个运行配置(run configuration)或从终端(terminal)启动它。

fiori run --open webapp/test/unitTests.opa.html

3 小结

在本文中,介绍了开发Fiori应用过程中会用到的一些高阶功能,但限于篇幅限制,对于特别复杂的功能仅是做了初步的介绍,并未完全展开。有需求的同学,可以进一步在此基础上学习和探索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/769613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA学习笔记19(面向对象编程)

1.面向对象编程 1.1 类与对象 1.类与对象的概念 ​ *对象[属性]/[行为] ​ *语法 class cat {String name;int age; }main() {//cat1就是一个对象//创建一只猫Cat cat1 new Cat();//给猫的属性赋值cat1.name "123";cat1.age 10; }​ *类是抽象的,…

前端使用正则表达式进行校验

一、定义 设计思想是用一种描述性的语言定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。 在 JavaScript中,正则表达式也是对象,构建正则表达式有两种方式&#x…

【可用Claude Opus模型】Claude3国内镜像站,亲测完全超越GPT-4(可用Claude Opus,官网价值20刀)

#今天在知乎看到一个问题:“平民不参与内测的话没有账号还有机会使用Claude 3吗?” 从去年GPT大火到现在,关于GPT的消息铺天盖地,真要有心想要去用,途径很多,别的不说,国内GPT的镜像站到处都是…

如何实现一个自己的脚手架工具

如何实现一个自己的脚手架工具 创建自定义全局命令获取命令行的交互参数终端交互下载远程项目代码 创建自定义全局命令 在项目文件夹中创建一个bin文件夹,再去npm init 初始化项目,生成的package.json 里面就有一个bin的选项参数指定了命令和执行文件路…

有效的括号字符串

只想用一个栈解决,可惜一直解决不了,因为 * 的问题无法解决 看到标答用了两个栈,一个栈存储 ( 另一个栈储存 * 思路:当s[k] 为 ( 或 * 进栈 , 当s[k] 为 ) 时 , 优先左括号出栈(因为*有…

探索LLaMA模型:架构创新与Transformer模型的进化之路

引言 在人工智能和自然语言处理领域,预训练语言模型的发展一直在引领着前沿科技的进步。Meta AI(前身为Facebook)在2023年2月推出的LLaMA(Large Language Model Meta AI)模型引起了广泛关注。LLaMA模型以其独特的架构…

视频批量爬虫下载工具|可导出视频分享链接|抖音视频提取软件

便捷的视频批量爬虫软件操作指南 抖音视频下载界面图解 主要功能: 关键词批量提取视频和单独视频提取,提取后下载功能。 功能解析: 1. 关键词批量采集视频的解析 对特定关键词进行搜索和视频提取,例如输入“汽车配件”&#x…

2024年洗地机综合实力排行榜:谁才是真正的洗地神器?

近年来,洗地机在行业里,它集合了扫地和拖地以及自动清洁和除菌的功能,备受人们的喜爱,尤其是平时忙于工作并没有多少时间清洁家务的用户,但是对于第一次接触洗地机的用户来说,怎么选购洗地机也是个问题&…

【P1303】 A*B Problem

A*B Problem 题目背景 高精度乘法模板题。 题目描述 给出两个非负整数,求它们的乘积。 输入格式 输入共两行,每行一个非负整数。 输出格式 输出一个非负整数表示乘积。 样例 #1 样例输入 #1 1 2样例输出 #1 2提示 每个非负整数不超过 1 0…

初识React(一)从井字棋游戏开始

写在前面: 磨磨唧唧了好久终于下定决心开始学react,刚刚接触感觉有点无从下脚...新的语法新的格式跟vue就像两种物种...倒是很好奇路由和store是怎么实现的了~v~,一点一点来吧!!! (一)创建项目 使用vite…

【58. 最后一个单词的长度】

58. 最后一个单词的长度 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 class Solution { public: int lengthOfLastWord(string s) …

蓝桥杯算法 - DP

上一篇:[[蓝桥杯算法-排序、递归、全排列]] 动态规划(dp) dp即动态规划,常用于:数学,计算机科学,管理学,经济和生物信息学。 dp在生活中也很常见,如:你今天…

2023第十四届蓝桥杯C++B组题目解析

起因 24年蓝桥杯将至&#xff0c;把去年题复习一遍。emmm&#xff0c;其实是有一个很厉害的学妹说“要被圈钱杯把钱圈光了”。 现在只是初稿&#xff0c;如果有需要细写解析的可以在下面评论&#xff0c;欢迎留言。 日期统计 #include<bits/stdc.h> typedef long lon…

Java中的面向对象编程有三个重要的属性:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)

封装&#xff08;Encapsulation&#xff09;&#xff1a;封装是面向对象编程的一个基本理念&#xff0c;它将数据和对数据的操作封装在一个类中&#xff0c;并通过类的访问修饰符来控制对数据的访问。封装的目的是隐藏实现细节&#xff0c;使得类的使用者无需关心内部的具体实现…

VUE pc端+移动端上传录音并上传(recorder-core)

首先安装 npm install recorder-core 以下录音组件完整代码可复用 <template><div><div><imgv-if"!isSound"src"/assets/images/mobile/mobileDoWork/answer_question_voice_icon.png"alt""click"recStart"/>…

今天聊聊Docker

在数字化时代&#xff0c;软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术&#xff0c;正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景&#xff0c;帮…

1.4.2 练习

一、颠倒三角形 题目&#xff1a;修改顶点着色器让三角形上下颠倒 更改顶点着色器代码如下&#xff1a; #version 330 corelayout (location 0) in vec3 aPos; //位置变量的属性位置值为0 layout (location 1) in vec3 aColor; //颜色变量的属性位置值为1out vec3 ourColo…

项目配置之道:优化Scrapy参数提升爬虫效率

前言 在当今信息时代&#xff0c;数据是无处不在且无比重要的资源。为了获取有效数据&#xff0c;网络爬虫成为了一项至关重要的技术。Scrapy作为Python中最强大的网络爬虫框架之一&#xff0c;提供了丰富的功能和灵活的操作&#xff0c;让数据采集变得高效而简单。本文将以爬…

线程和进程有什么区别?

1、典型回答 进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中两个重要的概念&#xff0c;都是用来执行任务的&#xff0c;它们的定义如下&#xff1a; 进程是指计算机中正在运行的程序的实例。每个进程都有自己的地址空间、内存、文件…

生成词云...

import wordcloud import jieba import PIL import numpy as np import matplotlib.pyplot as plt import jieba.analyse image_background PIL.Image.open(/home/back/pythonclass/11.jpg) #遮罩 MASK np.array(image_background) txtopen("/home/back/pythoncla…