访问在component.js内的用户任务UI中输入的值

2020-09-14 07:39发布

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

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


嗨,

我构建了一个简单的UI应用程序,其中包含几个字段(其中一个是数量),并将其附加到用户任务。 一切正常。 现在,我要捕获用户批准工作项时所做的更改。 我想存储值sin工作流上下文,以便可以在工作流的后续步骤中访问它们。 在这方面,我读过很少的博客,其中大多数都在谈论将变量添加到工作流上下文中,但实际上并没有从UI中读取值。 我将下面的代码粘贴到UI5的view和component.js中。

查看XML

 
 
 <页面>
 
 <内容>
      
          
                 
                     
                         
                             
                         
                     
                     
                         
                             
                         
                     
                      
                         
                             
                         
                     
                      
                         
                             
                         
                     
                     
                         
                             <输入值=" {/PrNumber}" id =" input6" width =" 100%" editable =" false"/>
                         
                     
                 
             
         
         
             
          
 
 
 
 
  

我的JSON有效负载来创建WF实例

 {

 " PreqItem":" 00010",

 "材料":" 000000000000000011",

 " Plant":" 5000","

 数量":" 10.000",

 " Delivdate":" 20181212",

 " PrNumber":" 0010000550"

 } 

component.js

 sap.ui.define([
 " sap/ui/core/UIComponent",
 " sap/ui/设备",
 " sampleui/sampleui/model/models"
 ],功能(UIComponent,设备,模型){
 "使用严格";


 返回UIComponent.extend(" sampleui.sampleui.Component",{


 元数据:{
 清单:" json"
 },


/**
 *该组件在应用程序启动期间由UI5自动初始化,并一次调用init方法。
 * @上市
 * @override
 */
 初始化:函数(){
//调用基本组件的init函数
 UIComponent.prototype.init.apply(this,arguments);


//启用路由
 this.getRouter()。initialize();


//设置设备型号
 this.setModel(models.createDeviceModel()," device");

//获取任务数据
 var startupParameters = this.getComponentData()。startupParameters;
 var taskModel = startupParameters.taskModel;
 var taskData = taskModel.getData();
 var taskId = taskData.InstanceID;

//初始化模型
 var contextModel = new sap.ui.model.json.JSONModel("/img/bpmworkflowruntime/rest/v1/task-instances/" + taskId +"/img/context");
 contextModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay);
 this.setModel(contextModel);


//添加动作
 startupParameters.inboxAPI.addAction({
 行动:"批准",
 标签:"批准"
 },功能(按钮){
 this._completeTask(taskId,true);
 }, 这个);
 startupParameters.inboxAPI.addAction({
 动作:"拒绝",
 标签:"拒绝"
 },功能(按钮){
 this._completeTask(taskId,false);
 }, 这个);
 },

 _completeTask:函数(taskId,审批状态){
 var token = this._fetchToken();
//var quan = sap.ui.getCore()。byId(" input4")。getValue();
 $ .ajax({
 网址:"/img/bpmworkflowruntime/rest/v1/task-instances/" + taskId,
 方法:" PATCH",
 contentType:" application/json",
 异步:错误,
 数据:" {\"状态\":\"已完成\",\"上下文\":{\"新状态\":\"" +批准状态+" \"}}",
 标头:{
 " X-CSRF-Token":令牌
 }
 });
 this._refreshTask(taskId);
 }


 ,_fetchToken:function(){
 var令牌;
 $ .ajax({
 网址:"/img/bpmworkflowruntime/rest/v1/xsrf-token",
 方法:" GET",
 异步:错误,
 标头:{
 " X-CSRF-Token":"获取"
 },
 成功:功能(结果,xhr,数据){
 令牌= data.getResponseHeader(" X-CSRF-Token");
 }
 });
 返回令牌;
 },


 _refreshTask:function(taskId){
 this.getComponentData()。startupParameters.inboxAPI.updateTask(" NA",taskId);
 }
 });
 });
 

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

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


嗨,

我构建了一个简单的UI应用程序,其中包含几个字段(其中一个是数量),并将其附加到用户任务。 一切正常。 现在,我要捕获用户批准工作项时所做的更改。 我想存储值sin工作流上下文,以便可以在工作流的后续步骤中访问它们。 在这方面,我读过很少的博客,其中大多数都在谈论将变量添加到工作流上下文中,但实际上并没有从UI中读取值。 我将下面的代码粘贴到UI5的view和component.js中。

查看XML

 
 
 <页面>
 
 <内容>
      
          
                 
                     
                         
                             
                         
                     
                     
                         
                             
                         
                     
                      
                         
                             
                         
                     
                      
                         
                             
                         
                     
                     
                         
                             <输入值=" {/PrNumber}" id =" input6" width =" 100%" editable =" false"/>
                         
                     
                 
             
         
         
             
          
 
 
 
 
  

我的JSON有效负载来创建WF实例

 {

 " PreqItem":" 00010",

 "材料":" 000000000000000011",

 " Plant":" 5000","

 数量":" 10.000",

 " Delivdate":" 20181212",

 " PrNumber":" 0010000550"

 } 

component.js

 sap.ui.define([
 " sap/ui/core/UIComponent",
 " sap/ui/设备",
 " sampleui/sampleui/model/models"
 ],功能(UIComponent,设备,模型){
 "使用严格";


 返回UIComponent.extend(" sampleui.sampleui.Component",{


 元数据:{
 清单:" json"
 },


/**
 *该组件在应用程序启动期间由UI5自动初始化,并一次调用init方法。
 * @上市
 * @override
 */
 初始化:函数(){
//调用基本组件的init函数
 UIComponent.prototype.init.apply(this,arguments);


//启用路由
 this.getRouter()。initialize();


//设置设备型号
 this.setModel(models.createDeviceModel()," device");

//获取任务数据
 var startupParameters = this.getComponentData()。startupParameters;
 var taskModel = startupParameters.taskModel;
 var taskData = taskModel.getData();
 var taskId = taskData.InstanceID;

//初始化模型
 var contextModel = new sap.ui.model.json.JSONModel("/img/bpmworkflowruntime/rest/v1/task-instances/" + taskId +"/img/context");
 contextModel.setDefaultBindingMode(sap.ui.model.BindingMode.TwoWay);
 this.setModel(contextModel);


//添加动作
 startupParameters.inboxAPI.addAction({
 行动:"批准",
 标签:"批准"
 },功能(按钮){
 this._completeTask(taskId,true);
 }, 这个);
 startupParameters.inboxAPI.addAction({
 动作:"拒绝",
 标签:"拒绝"
 },功能(按钮){
 this._completeTask(taskId,false);
 }, 这个);
 },

 _completeTask:函数(taskId,审批状态){
 var token = this._fetchToken();
//var quan = sap.ui.getCore()。byId(" input4")。getValue();
 $ .ajax({
 网址:"/img/bpmworkflowruntime/rest/v1/task-instances/" + taskId,
 方法:" PATCH",
 contentType:" application/json",
 异步:错误,
 数据:" {\"状态\":\"已完成\",\"上下文\":{\"新状态\":\"" +批准状态+" \"}}",
 标头:{
 " X-CSRF-Token":令牌
 }
 });
 this._refreshTask(taskId);
 }


 ,_fetchToken:function(){
 var令牌;
 $ .ajax({
 网址:"/img/bpmworkflowruntime/rest/v1/xsrf-token",
 方法:" GET",
 异步:错误,
 标头:{
 " X-CSRF-Token":"获取"
 },
 成功:功能(结果,xhr,数据){
 令牌= data.getResponseHeader(" X-CSRF-Token");
 }
 });
 返回令牌;
 },


 _refreshTask:function(taskId){
 this.getComponentData()。startupParameters.inboxAPI.updateTask(" NA",taskId);
 }
 });
 });
 
付费偷看设置
发送
2条回答
shere_lin
1楼 · 2020-09-14 07:54.采纳回答

您好Sankar,

从工作流的角度来看,如何处理Component.js中的UI模型没有特殊处理,但这是标准的UI5代码。

例如,要访问名为"数据"的UI5模型,您将在Component.js中使用以下代码段:

 var oModel = this.getModel(" data");
 

此致

网格

hongfeng1314
2楼-- · 2020-09-14 07:47

是的,您的理解是正确的。

一周热门 更多>