使用SAPUI5工作流程应用程序中的脚本任务从工作流程触发邮件通知

2020-08-21 09:16发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家, 我想从工作流项目中的脚...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,

我想从工作流项目中的脚本任务触发邮件通知。 尽管邮件任务是直接选择,但我们的环境不支持该任务。 因此,我试图使用脚本文件来触发邮件。

下面是我试图触发脚本文件中邮件的代码。

我在监视器工作流中收到错误" ReferenceError:在中未定义" Promise""。

任何有关此的建议将非常有帮助。

谢谢

Srinivasan Seetharaman

/*全球邮件承诺*/
/*导出的邮件承诺*/
/* eslint no-undef:"错误" */
/* eslint no-unused-vars:"错误" */
/* eslint no-unused-vars:["错误",{" vars":"本地"}] */
/*不添加阴影:["错误",{"提升":"功能"}] */
/* eslint-env es6 */
 var mailPromise;
 函数http(url){
 var core = {
 ajax:函数(方法,网址,标头,args,mimetype){
 mailPromise =新的Promise(函数(解决,拒绝){
 var client = new XMLHttpRequest();
 var uri = url;
 if(args && method ==='GET'){
 uri + ='?';
 var argcount = 0;
 for(参数中的var键){
 如果(args.hasOwnProperty(key)){
 如果(argcount ++){
 uri + ='&';
 }
 uri + = encodeURIComponent(key)+'='+ encodeURIComponent(args [key]);
 }
 }
 }
 if(args &&(method ==='POST'|| method ==='PUT')){
 var data = {};
 对于(参数中的var keyp){
 如果(args.hasOwnProperty(keyp)){
 data [keyp] = args [keyp];
 }
 }
 }
 client.open(method,uri);
 if(方法==='POST'||方法==='PUT'){
 client.setRequestHeader(" accept"," application/json");
 client.setRequestHeader(" content-type"," application/json");
 }
 用于(标头中的var keyh){
 如果(headers.hasOwnProperty(keyh)){
 client.setRequestHeader(keyh,headers [keyh]);
 }
 }
 如果(数据){
 client.send(JSON.stringify(data));
 }其他{
 client.send();
 }
 client.onload = function(){
 如果(this.status === 200 || this.status === 201){
 var oResult = {
 回应:this.response,
 responseHeaders:client.getResponseHeader(" x-csrf-token")
 };
 resolve(oResult);
 }其他{
 拒绝(this.statusText);
 }
 };
 client.onerror = function(){
 拒绝(this.statusText);
 };
 });
//返回承诺;
 }
 };
 返回{
 'get':函数(标头,参数){
 返回core.ajax('GET',url,headers,args);
 },
 'post':函数(标题,参数){
 返回core.ajax('POST',url,headers,args);
 },
 'put':函数(标题,参数){
 返回core.ajax('PUT',url,headers,args);
 },
 'delete':function(headers,args){
 返回core.ajax('DELETE',url,headers,args);
 }
 };
 }
 函数triggerMail(workflowName,materialApprovedStatus,requesterName,requesterEmail,注释){
 如果(materialApprovedStatus ==="已拒绝"){
 var oMail = {
 来自:" approverUserId",
 到:requesterEmail,
 主题:"工作流程" +工作流程名称+"拒绝邮件",
 正文:"亲爱的" + requesterName +"," +注释
 };
 }否则,如果(materialApprovedStatus ===" reworked"){
 oMail = {
 来自:" masterdata@eagleburgmann.com",
 到:requesterEmail,
 主题:"返工:" +工作流程名称,
 正文:"亲爱的" + requesterName +"," +注释
 };
 }
 var oHeaders = {
 " X-CSRF-TOKEN":"获取"
 };
 http("/img/sendmail")。get(oHeaders).then(function(result){
 oHeaders = {
 " X-CSRF-TOKEN":result.responseHeaders
 };
 http("/img/sendmail")。post(oHeaders,oMail).then(function(){
//sap.ui.core.BusyIndi​​cator.hide();
//var oBundle = this.getView()。getModel(" i18n")。getResourceBundle();
//var sMsg = oBundle.getText(" NotificationSentSuccess");
 alert("邮件成功触发");
 });
 });
 }
 如果($ .context.requestedMaterial.materialApprovedStatus ==="重做"){
//从现有工作流程上下文中读取
 var workingName = $ .context.wftasktitle;
 var materialApprovedStatus = $ .context.materialApprovedStatus;
 var userId = $ .context.requestedMaterial.Userid;
 var requesterEmail = $ .context.requestedMaterial.RequesterEmail;
 var comments = $ .context.requestedMaterial.Comments;
 }
 triggerMail(workflowName,materialApprovedStatus,userId,requesterEmail,注释);
 
4条回答
奄奄一息的小鱼
2020-08-21 09:34

Hi Srinivas,

1)服务任务直接支持CSRF令牌管理。 请参阅服务任务中的相应字段。 您只需指定到返回XSRF令牌的端点的相对于目的地的路径即可。

2)App2AppSSO是UI应用程序不需要登录的概念,如果另一个应用程序中已有会话。 但是,服务任务仅通过OAuth2SAMLBearerAssertion目标类型支持类似的身份验证。

请参阅有关目的地的文档以及对主体传播的引用。 对于Neo,请参见此处:

https://help.sap.com/viewer/ f85276c5069a429fa37d1cd352785c25/Cloud/zh-CN/c4eeb034167e4879b2e3cf86f63e5a5e.html

此致

Tobias

一周热门 更多>