工作框架各种使用整理---服务状态变更数据

1 <moqui.basic.StatusFlow statusFlowId="Zc3plDefault_Product" statusTypeId="Product" description="Default status flow for 3pl services across entire system."/>
2     <moqui.basic.StatusFlowItem statusFlowId="Zc3plDefault_Product" statusId="ProductOpen" isInitial="Y"/>
3     <moqui.basic.StatusFlowItem statusFlowId="Zc3plDefault_Product" statusId="ProductOnShelf"/>
4     <moqui.basic.StatusFlowItem statusFlowId="Zc3plDefault_Product" statusId="ProductOffShelf"/>
5     <moqui.basic.StatusFlowItem statusFlowId="Zc3plDefault_Product" statusId="ProductClosed"/>
6     <moqui.basic.StatusFlowTransition statusFlowId="Zc3plDefault_Product" statusId="ProductOpen" toStatusId="ProductOnShelf" transitionName="Process"/>
7     <moqui.basic.StatusFlowTransition statusFlowId="Zc3plDefault_Product" statusId="ProductOnShelf" toStatusId="ProductOffShelf" transitionName="Process"/>
8     <moqui.basic.StatusFlowTransition statusFlowId="Zc3plDefault_Product" statusId="ProductOffShelf" toStatusId="ProductClosed" transitionName="Process"/>
 1 <service verb="update" noun="ProductStatus">
 2         <in-parameters>
 3             <parameter name="productId" required="true"/>
 4             <parameter name="statusId" required="true"/>
 5             <parameter name="placedDate" type="Timestamp"/>
 6         </in-parameters>
 7         <out-parameters><parameter name="oldStatusId"/><parameter name="statusChanged" type="Boolean"/></out-parameters>
 8         <actions>
 9             <entity-find entity-name="mantle.product.Product" list="productList">
10                 <econdition field-name="productId" from="productId"/></entity-find>
11             <set field="updateMap" from="[productId:productId, statusId:statusId]"/>
12             <if condition="placedDate != null">
13                 <script>updateMap.put(‘placedDate‘, placedDate)</script>
14             </if>
15             <service-call name="update#mantle.product.Product" out-map="context" in-map="updateMap"/>
16         </actions>
17     </service>
 1 <service verb="get" noun="ProductFieldChangeAuditLog">
 2         <in-parameters>
 3             <parameter name="productId"/>
 4             <parameter name="fieldName" default-value="statusId"/>
 5         </in-parameters>
 6         <out-parameters>
 7             <parameter name="auditLogList" type="List"><parameter name="auditLog" type="Map">
 8                 <parameter name="oldValueText"/><parameter name="newValueText"/><parameter name="changedDate"/><parameter name="changeByUserId"/>
 9             </parameter></parameter>
10         </out-parameters>
11         <actions>
12             <!--TODO: do more authorization checking -->
13
14             <entity-find entity-name="moqui.entity.EntityAuditLog" list="auditLogList">
15                 <econdition-object field="[changedEntityName:‘mantle.product.Product‘, changedFieldName:fieldName, pkPrimaryValue:productId]"/>
16                 <select-field field-name="oldValueText"/>
17                 <select-field field-name="newValueText"/>
18                 <select-field field-name="changedDate"/>
19                 <select-field field-name="changedByUserId"/>
20             </entity-find>
21         </actions>
22     </service>

以上即为服务状态变更以及变更状态记录查询的方法。

在Moqui中如果要使用AutidLog来记录首先要将enable_audit_log=true

1 <?xml version="1.0" encoding="UTF-8"?>
2 <entities xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3           xsi:noNamespaceSchemaLocation="http://moqui.org/xsd/entity-definition-2.0.xsd">
4     <extend-entity entity-name="Product" package="mantle.product">
5         <field name="statusId" type="id" enable-audit-log="true"/>
6     </extend-entity>
7 </entities>

update模式用于传递所有的主键或自己期望的非主键字段。如果实体有一个statusID字段并且传入的statusId和字段值不同,那么服务会自动返回原始值放在oldStatusId出参中,无论何时实体有一个statusId字段,服务都还将返回一个boolean类型的statusChanged参数,如果状态和数据库的原始值不一样那么该字段为true反之为false,实体自动服务会通过检查匹配的moqui.basic.StatusFlowTransition存在记录,去执行有效的状态变化。如果没有有效的状态变化,那么服务将返回一个错误。

时间: 2024-10-28 10:45:30

工作框架各种使用整理---服务状态变更数据的相关文章

工作框架各种使用整理 -- 访问图片的时候访问成功但是会有错误日志

最初实现的方式如下: <service verb="get" noun="ProductCategoryContentFile"> <in-parameters> <parameter name="productCategoryContentId" required="true"/> </in-parameters> <actions> <entity-find

工作框架各种使用整理---按层次返回相关联的数据

1 <service verb="get" noun="ProductStoreAndStoryCategory"> 2 <in-parameters> 3 <parameter name="productStoreId" required="true"/> 4 </in-parameters> 5 <out-parameters> 6 <parameter n

工作框架各种使用整理---使用Cache

<service verb="get" noun="Products"> <implements service="sang.product.ProductServices.get#ProductsWithPagination"/> <in-parameters> <parameter name="productCategoryId" required="true"

工作框架各种使用整理 -- 自己处理分页且输入条件中有过滤条件

1 <service verb="get" noun="ProductsByCategory"> 2 <in-parameters> 3 <parameter name="productCategoryId" required="true"/> 4 <parameter name="level" type="Integer" default-va

工作框架各种使用整理---自己处理分页

<service verb="get" noun="Products"> <in-parameters> <auto-parameters entity-name="mantle.product.Product"/> <parameter name="pageIndex" type="Integer" default-value="0"/>

深入浅出高性能服务发现、配置框架Nacos系列 3: 服务发现:Nacos客户端初始化流程

上一章节,我们从全局了解了一下Nacos项目的模块架构,做到了心中有数,现在,我们去逐步去挖掘里面的代码细节,很多人在学习开源的时候,无从下手,代码那么多,从哪个地方开始看呢?我们可以从一个接口开始入手,这个接口是你使用过的,知道它大概做什么事,有体感的,大家还记得第一章时,我们写的HelloWorld吗,对,就从里面的接口开始剥洋葱. 这个是Nacos的github代码地址,开始之前先start关注一下,加上watch,后续Nacos的邮件列表也会通知到你,可以关注到Nacos的最新实时消息,

[CI] 使用CodeIgniter框架搭建RESTful API服务

在2011年8月的时候,我写了一篇博客<使用CodeIgniter框架搭建RESTful API服务>,介绍了RESTful的设计概念,以及使用CodeIgniter框架实现RESTful API的方法.转眼两年过去了,REST在这两年里有了很大的改进.我对于前一篇博客中的某些方面不是很满意,所以希望能利用这次机会写一个更加完善的版本.我的项目基于Phil Sturgeon的CodeIgniter REST Server,遵循他自己的DBAD协议.Phil的这个项目很棒,干净利落,简单实用,并

自己动手写RPC框架到dubbo的服务动态注册,服务路由,负载均衡功能实现

RPC即远程过程调用,它的实现方式有很多,比如webservice等.框架调多了,烦了,没激情了,我们就该问自己,这些框架的作用到底是什么,来找回当初的激情. 一般来说,我们写的系统就是一个单机系统,一个web服务器一个数据库服务,但是当这单台服务器的处理能力受硬件成本的限制,是不能无限的提升处理性能的.这个时候我们使用RPC将原来的本地调用转变为调用远端的服务器上的方法,给系统的处理能力和吞吐量带来了提升. RPC的实现包括客户端和服务端,即服务的调用方和服务的提供方.服务调用方发送rpc请求

MVC框架理解(整理)

MVC是三个单词的首字母缩写,它们是Model(模型).View(视图)和Controller(控制). 视图 视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML.XML和Applet.随着应用的复杂性和规模性,界面的处理也变得具有挑战性.一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理.业务流程的处理交予模型(Model)处理.比如一个订单的视图只接受来自模型