跳到内容
技术文章
作者简介照片Arc万博新体育手机客户端hana Shukla

增强自定义应用程序作为工作流任务UI在云铸造厂

在我之前的博客中(博客1|博客2)我讨论了工作流中最常见的两个问题,并解释了(a)如何从自定义应用程序启动工作流和(b)如何将此自定义应用程序嵌入Fiori Launchpad中的tile。在这篇博客中,我将讨论另一个最常被问到的问题——“如何从现有的自定义UI中创建工作流任务UI”。

工作流中的任务UI可以是Form或SAPUI5组件。对于后者,您有两种选择:

  • 从头构建任务UI或
  • 重用现有的UI5应用程序。

注:仅支持部署在云平台上的基于SAPUI5的应用。

如果您确实希望从头构建UI,而不是重用任何现有的SAPUI5应用程序,那么您可以在Component.jsView.xml文件。这些调整对于升级UI以拥有任务属性(如任务名称、任务主题、任务优先级等)是强制性的。

1 .更新xs-app.json文件

在自定义应用的xs-app-json中添加路由。这个路由器是需要的,因为你将调用工作流api。阅读文章的第3步文档了解更多。

{“源”:“^ / bpmworkflowruntime /(.*)$", " 1美元目标”:“/”、“服务”:“com.sap.bpm。workflow", "endpoint": "workflow_rest_url", "authenticationType": "xsuaa"},

2 .更新Component.js文件

让我们看看需要添加的代码片段Component.js。对于这个我有一个空的Component.js如下图所示。

按照下面的指导逐步更新文件:

  1. 获取任务模型数据。

  1. 使用工作流任务api读取任务上下文。

注1:你必须加上申请编号(如截图所示):sapdemobpmtaskui)到相应的API URL。中解释的应用程序ID结果部分在这里

注2:你会得到404 -未找到如果您没有在任务UI应用程序中添加路由,则会出现错误xs-app.json

  1. 使用任务模型数据更新UI上下文模型。

  1. 创建任务操作按钮来完成任务。
    • 任务完成操作将调用工作流用户任务api。

  1. 在任务界面中添加操作按钮。

注意1:在您增强了现有的自定义UI之后,按钮的动作脚本将被更新以完成任务,并且这些按钮将附加到任务上(如上面的步骤4和5所示)。的页脚,因此需要删除view.xml它们有按钮来完成UI操作,比如OK, Cancel, Confirm等。

注2:你可以找到更新过的Component.js在这里的示例工作流应用程序中详细了解更改。

  1. 添加代码以使用Workflow task api完成任务。在从用户界面调用任何工作流API之前,不要忘记XSRF令牌调用。

3 .调整view.xml文件

调整view.xmlUI5组件的文件,以包含任务信息头并删除页脚。您还可以选择调整代码,使其不显示Task UI的页脚,并使其能够独立使用。

步骤4:在工作流中添加用户任务

在Workflow中添加用户任务,并将其与任务UI相关联。你可以用选择选项用户界面属性,以发现SAPUI5组件。

[可选]另外,还可以访问我的收件箱监测工作流程应用程序,你需要添加相应的瓷砖在现有的Launchpad与给定的应用程序ID和意图导航。只有当您没有配置任何带有工作流应用程序的启动平台时,才需要这样做。

应用程序标题 应用程序ID 意图导航
工作流实例

com.sap.bpm.monitorworkflow

bpmworkflowmonitor-DisplayInstances
我的收件箱 cross.fnd.fiori.inbox WorkflowTask-DisplayMyInbox

最后构建和部署MTA项目,并从驾驶舱打开发射台应用程序。您将看到跟踪工作流实例的新磁贴,并分别使用Task ui查看工作项。

您现在可以使用表单(资本支出请求)启动工作流,然后在我的收件箱中查看任务。注意任务属性页眉和页脚。

通过几个简单的步骤,您可以将自己的UI作为Task UI重用。如果你想从头开始构建Task UI,那么你必须完全设计你的component.js和view.xml文件。

我已经上传了示例代码在GitHub您可以在构建自己的应用程序时将其用作参考。

在本系列的最后一章中,我将向您展示如何在Task UI中调用外部api。

相关资源新万博苹果版

指定的标签

      50个评论
      你一定是登录评论:评论或回复帖子
      作者个人资料照片吉万博新体育手机客户端米·阿诺德·莫雷诺Nuñez
      吉米·阿诺德·莫雷诺Nuñez

      医生。

      如果一个用户批准或拒绝请求,如何在用户任务之后获得响应或上下文用户任务?

      提前感谢。

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好吉米,

      检查步骤6,_completeTask方法捕获用户任务的决策,并将其传递到工作流上下文中进行进一步处理。

      作者个人资料照片吉万博新体育手机客户端米·阿诺德·莫雷诺Nuñez
      吉米·阿诺德·莫雷诺Nuñez

      在我的例子中,我在表单决策中创建了按钮。我怎么调用这个函数?

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      您可以参考如何从表单访问决策的文档
      https://help.sap.com/viewer/e157c391253b4ecd93647bf232d18a83/Cloud/en-US/9fd9395339e94143ac9ce9e693b06bd1.html?q=access%20decision

      作者简介照片Kor万博新体育手机客户端ay Yersel
      Koray Yersel

      你好医生,

      感谢CF工作流博客。他们真的很有帮助。我刚刚注意到我的收件箱>任务视图在不同的分辨率/全屏下表现得很有趣。你也有同样的问题吗?我在你的源代码中找不到任何相关信息。在我们的示例中,任务视图内容被部分删除。请看附件(第二张截图的标题被剪掉了)

      谢谢和问候。

      Koray

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好Koray,

      我还没看到这个,但这显然是个问题。你能在LOD-BPM-WFS上提高票吗?我想你在用表格。

      作者简介照片Kor万博新体育手机客户端ay Yersel
      Koray Yersel

      你好医生,

      不,我用的是自定义UI5视图。代码基于您的示例。这就是为什么我把我的问题贴在这篇博客上。我要提出一个事件。

      问候,

      Koray

      作者简介照片哈姆扎万博新体育手机客户端·马苏德
      哈姆萨马苏德

      你好,

      我也有同样的问题。在这个问题上有没有找到解决办法?

      谢谢,

      问候,

      哈姆萨马苏德

      作者简介照片哈姆扎万博新体育手机客户端·马苏德
      哈姆萨马苏德

      你好,

      对我来说,解决方案是删除view.xml中的标记。

      问候,

      哈姆萨马苏德

      作者资料照片Kar万博新体育手机客户端an Bahl
      卡兰巴尔

      你好医生,

      如何在xs-app.json中添加使用CAPM构建的自定义/外部HANA服务?

      我得到一个错误时,使用额外的路线;自定义Inbox UI无法加载。

      知道是什么问题吗?

      问候,

      卡兰

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好,卡兰,

      你检查过我的博客消费外部API在自定义任务UI: //www.bouseh.com/2020/09/08/calling-external-api-in-custom-task-ui-of-workflow-in-cloud-foundry/

      作者资料照片Kar万博新体育手机客户端an Bahl
      卡兰巴尔

      你好医生,

      上周我解决了这个问题;谢谢你的博客。

      想知道如果用户在指定的时间内没有批准或拒绝任务,是否有可能自动完成任务?如何在指定时间后触发自动补全?

      你能分享一下步骤或博客链接吗?

      问候,

      卡兰

      作者头像Vladi万博新体育手机客户端mír Balko
      弗拉基米尔•大多数

      您可以使用计时器边界事件使其在指定的时间段后自动完成。只需设置计时器,并在该事件之外调用将完成任务。

      作者资料照片Kar万博新体育手机客户端an Bahl
      卡兰巴尔

      嗨弗拉基米尔,

      你能详细说明一下吗?我看不到时间边界事件;我有开始,中间消息,中间计时器,结束和终止结束事件。

      你能分享这些步骤吗?如果任何?

      问候,

      卡兰

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      你好医生,

      我已经按照这个帖子//www.bouseh.com/2020/09/10/create-workflow-mtar-application-with-custom-ui-using-business-app-studio/为工作流应用程序创建了一个自定义UI。

      但对我来说,我的自定义ui的视图并没有呈现在工作流屏幕的详细页面上。

      你能帮我一下吗,有什么问题吗?

      问候,

      阿布

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你提供的信息很难提供帮助。打开开发人员控制台并发送您得到的错误。

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      控制台:

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      如果你看到消息,它清楚地写着403 -禁止。这意味着您正在使用没有所需特权的api。

      作者头像Vladi万博新体育手机客户端mír Balko
      弗拉基米尔•大多数

      阿布·夏尔马

      如果您遵循了我的教程,并且看到了这个屏幕,那么您就完成了。这是你应该看到的。

      在博客中使用的UI5应用程序是一个简单的UI5页面,没有任何内容——只有页面和标题(查看xml视图)。

      如果你想证明-添加一些输入字段或标签到UI5视图你应该在那里看到它。

      关于控制台的403错误——它只是调用OAuth令牌——框架对它进行GET和HEAD调用,而WF API不允许HEAD请求。检查这个403请求是否通过HEAD操作发出。

      但就像我之前说的,你没有做错什么,这是你应该看到的教程的结果。

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      嗨弗拉基米尔,

      谢谢你的回复,是的,我遵循了你的教程。

      但是如果你仔细看我提供的截图,ui5视图没有正确渲染,你可以看到视图的“标题栏”,但那里缺少“标题”。

      此外,我还在我的视图中添加了一些输入和标签,但它们在屏幕上不可见。

      问候,

      阿布。

      作者头像Vladi万博新体育手机客户端mír Balko
      弗拉基米尔•大多数

      在我的收件箱应用程序中有一个错误,当以较小的分辨率显示时,这个标题在主视图下呈现。的注释中也可以看到这个错误Koray Yersel在同一个博客下。他也发现了那个错误。

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      嗨弗拉基米尔,

      你是对的,所有权是在主视图下,但首先是什么导致的呢?

      问候,

      阿布

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      但我不知道我错过了哪个角色。我按照文档的原样来做。

      网络选项卡:

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      只有分配了WorkflowParticipant角色的用户才被允许访问这些Inbox api。检查一下你是否有需要的角色。

      作者简介照片Abh万博新体育手机客户端ishek Sharma
      阿布·夏尔马

      你好医生,

      我也面临同样的问题Koray Yersel是面对。

      标题位于收件箱应用程序的主视图下。你知道怎么解决这个问题吗?

      问候,

      阿布。

      作者资料照片Kar万博新体育手机客户端an Bahl
      卡兰巴尔

      医生。弗拉基米尔•大多数

      我在这里张贴了我的查询;你能提出一个解决方案吗

      https://answers.sap.com/questions/13182260/boundary-timer-event-along-with-service-task-in-sc.html

      问候,

      卡兰

      作者简介照片Tia万博新体育手机客户端go Moises
      蒂亚戈莫伊塞斯

      嗨!感谢本教程
      如何创建一个目的地来访问在CF中开发的工作流?
      或者访问部署到CF的工作流的URL是什么?

      问候

      作者头像Vladi万博新体育手机客户端mír Balko
      弗拉基米尔•大多数

      你好,

      工作流部署(托管)在云代工有它的API在api.sap.com -https://beta.api.sap.com/package/SAPCPWorkflowAPIs/overview

      作者简介照片Kai万博新体育手机客户端 Umeki
      Kai Umeki

      你好,Archana Shukla,

      谢谢你发表这个精彩的博客。

      我想问你一个问题。

      如果我想在视图文件的输入框中输入值,例如下图中的“全名:John Dilbert”,并将其传递给Component.js,我该怎么做呢?

      我想将从视图文件中检索到的值传递给Component.js,并将其作为json传递给工作流上下文,因此我想将其包含在下面的图像中黄色下划线中。

      如果你能告诉我如何才能做到这一点,我将不胜感激。

      真诚地,

      Kai Umeki

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好凯,

      首先检查工作流实例应用程序中任何可用实例的工作流上下文,并查看上下文是否已经具有Full Name属性,因为如果信息作为任务UI输入,那么您必须已经将其存储在工作流上下文变量中,否则您可以从视图模型中获取它。

      作者简介照片Kai万博新体育手机客户端 Umeki
      Kai Umeki

      亲爱的医生,

      谢谢你的回复。

      多亏了您,我才意识到工作流上下文已经作为一个模型存在。
      我成功地获得了工作流上下文的值。
      非常感谢你的帮助。

      问候,

      Kai Umeki

      作者头像Kajal万博新体育手机客户端。
      Kajal。

      你好医生,

      精彩的博客!

      我将不胜感激,如果你能让我知道如何从开始表格的数据在工作流中处理。我能把数据存储在什么地方吗?

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好Kajal,

      工作流以整个Start Form Data作为工作流上下文开始。例如,假设您的表单有3个字段名称,地址和联系方式的上下文路径,如${context. personaldetails。等等,那么你的工作流就从你在上下文路径中定义的初始上下文开始,比如{PersonalDetails: {Name: <填写于表单>},Address: <填写于表单>}}等。

      问候,

      阿卡纳

      作者头像Kajal万博新体育手机客户端。
      Kajal。

      你好,医生!

      非常感谢您的回复。

      问候,

      Kajal

      作者简介照片Sud万博新体育手机客户端hir Kancherla
      Sudhir Kancherla

      你好医生,

      我尝试了很长时间为用户任务添加自定义UI。对于HTML5模块,它工作得很好,但与优秀的HTML应用程序,我得到了这个错误在控制台:

      无法创建组件......用于智能模板渲染。在细节屏幕中显示标准任务作为回退:从/…f/Component.js加载'd../..../...../Component.js'失败:500 -内部服务器错误-

      这款应用在云端运行时没有问题。

      什么可能导致这个问题-我不是试用帐户。

      BR Sudhir

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      当Component.js由于各种原因无法加载时,会出现500内部服务器错误。(a)你是否使用任何API调用,然后检查xs-app。如果你使用了正确的路由。请仔细检查文档中提到的操作步骤,确保所有操作步骤都得到了执行。(b)您是从启动平台还是门户网站使用我的收件箱应用程序?如果你正在使用Launchpad,那么你的应用程序必须使用SAP Managed app-router (按照下面的步骤操作

      作者简介照片Sud万博新体育手机客户端hir Kancherla
      Sudhir Kancherla

      好吧,那如果我使用传送门呢?

      我怎么知道我是使用发射台还是门户,我以为发射台已经没有了?!

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      检查SAP BTP帐户中的权利。

      作者简介照片Kee万博新体育手机客户端rthana Jayathran
      Keerthana Jayathran

      医生。

      我正在使用我的收件箱应用程序从launchpad,我只得到默认的屏幕标题,我在视图中所做的任何改变都没有反映在我的收件箱中的用户任务。

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      这些信息不足以提供帮助。在开发控制台检查问题所在。如果Component.js没有加载,那么可能有很多原因。看看我上面的回答。

      作者简介照片Meg万博新体育手机客户端ha Chavare
      此举使Chavare

      嗨,Archana Shukla,
      我希望我的用户任务由一组人批准。我想让我的任务等到小组里的每个成员都同意后再执行。但是到目前为止,默认情况下,如果组成员中的任何一个用户批准了任务,那么任务就会得到处理。知道怎么做吗?

      作者简介照片Jak万博新体育手机客户端ob Ruf
      Jakob革命联合阵线

      嗨,此举使,

      我猜你必须创建用户任务的多个实例(例如,通过添加具有多个传出路径的并行网关),在那里你分配单个用户。通常在审批过程中,对象只需要由一个潜在的审批者批准,这就是为什么没有选择等待所有潜在所有者的原因。最好的方法可能是将其分成几个任务组(例如,关键客户经理、销售审批员、营销审批员……),并让每个组批准它

      作者简介照片Lal万博新体育手机客户端it Goyal
      拉蒂Goyal

      医生。

      感谢博客的详细介绍。我已经按照步骤,但我得到下面的错误。你能帮我理解这个问题吗?

      提前感谢!

      作者简介照片Arc万博新体育手机客户端hana Shukla
      阿卡纳舒克拉
      博客作者

      你好拉里,

      SAP BTP工作流的MyInbox不支持基于智能模板的UI5应用程序

      作者简介照片Sri万博新体育手机客户端dhar Rajagopal
      bloom Rajagopal

      你好医生,

      我有同样的错误,但我们不使用任何智能模板。我们在视图中有一个简单的表单。js没有添加我在UI5 MTA项目中使用的云服务名称。当我手动将云服务附加到URL时,它工作得很好。

      谢谢你,

      bloom

      作者个人资料照片S万博新体育手机客户端hivam Shukla
      11日舒克拉

      医生。

      我怎么能解决这个问题,因为我不是UI专家,并遵循你的博客端到端。

      错误

      错误

      作者简介照片Vit万博新体育手机客户端ali Khvisevich
      维塔利Khvisevich

      你好!

      我有同样的问题:

      日志-dbg.js:452 2022-01-31 10:09:55.435100无法创建componentppg。用于智能模板呈现的customui。从/ppgcustomUI/Component.js加载'ppg/customUI/Component.js'失败:404 -未找到-

      我是按照你的指示做的,我用的是发射台服务。

      有什么问题吗?
      
                     
      作者简介照片Edw万博新体育手机客户端ard Arcenal
      爱德华Arcenal

      你好,

      你能解决这个问题吗?

      我也有这样的问题,想知道

      作者简介照片Vit万博新体育手机客户端ali Khvisevich
      维塔利Khvisevich
      由于我从标准收件箱中了解到自定义表单不起作用,所以我纠正了mta。这样,这个表单就像从本地应用程序启动一样,然后任务图标出现在我的应用程序中,窗体开始工作
      作者简介照片Cla万博新体育手机客户端rk Dennison
      克拉克高秤

      很棒的博客,非常感谢医生。

      我有几件事使我出错。

      1. 通过右键单击你的mta文件并选择一个托管应用路由器,确保你创建了一个托管应用路由器。如果您不这样做,您将继续得到模板生成错误。
      2. 我必须确保MTA中的ID与根文件夹名称匹配。当这是不同的模板生成器失败。
      3. 确保向MTA添加参数“enable-parallel-deployment: true”,否则部署将失败。

      有了所有这些,它似乎工作得很好。

      我现在最大的问题是尝试在本地开发BAS的UI。使用任何预配置的NPM脚本似乎都不起作用,因为它们无法找到startupparameters。这是有意义的,因为收件箱将提供这些,但没有想出一种方法来模拟它,以便我可以在部署之前微调我的屏幕。如果有人有什么想法,我很乐意听听。

      再次感谢,

      克拉克