• ServerSide Timestamping in the Audit Trail System (XAF时间戳在审核中的应用代码)


    代码:BusinessObjects.cs
    using System;
    using DevExpress.Persistent.Base;
    using DevExpress.Persistent.BaseImpl;
    using DevExpress.Xpo;
    using DevExpress.Persistent.AuditTrail;

    namespace AuditDemo.Module {
        [DefaultClassOptions]
        
    public class Album : BaseObject {
            
    public Album(Session session) : base(session) { }
            
    private string name;
            
    public string Name {
                
    get {
                    
    return name;
                }
                
    set {
                    SetPropertyValue(
    "Name"ref name, value);
                }
            }
            
    private int year;
            
    public int Year {
                
    get {
                    
    return year;
                }
                
    set {
                    SetPropertyValue(
    "Year"ref year, value);
                }
            }
            
    private Artist artist;
            [Association(
    "Artist-Albums")]
            
    public Artist Artist {
                
    get {
                    
    return artist;
                }
                
    set {
                    SetPropertyValue(
    "Artist"ref artist, value);
                }
            }
            
    private XPCollection<AuditDataItemPersistent> auditTrail;
            
    public XPCollection<AuditDataItemPersistent> AuditTrail {
                
    get {
                    
    if(auditTrail == null) {
                        auditTrail 
    = AuditedObjectWeakReference.GetAuditTrail(Session, this);
                    }
                    
    return auditTrail;
                }
            }
        }
        [DefaultClassOptions]
        
    public class Artist : BaseObject {
            
    public Artist(Session session) : base(session) { }
            
    private string name;
            
    public string Name {
                
    get {
                    
    return name;
                }
                
    set {
                    SetPropertyValue(
    "Name"ref name, value);
                }
            }
            [Association(
    "Artist-Albums")]
            
    public XPCollection<Album> Albums {
                
    get {
                    
    return GetCollection<Album>("Albums");
                }
            }
            
    private XPCollection<AuditDataItemPersistent> auditTrail;
            
    public XPCollection<AuditDataItemPersistent> AuditTrail {
                
    get {
                    
    if(auditTrail == null) {
                        auditTrail 
    = AuditedObjectWeakReference.GetAuditTrail(Session, this);
                    }
                    
    return auditTrail;
                }
            }
        }
    }
    代码:MSSqlServerTimestampStrategy.cs
    using System;
    using System.Data.SqlClient;
    using DevExpress.Xpo;
    using DevExpress.Persistent.AuditTrail;

    namespace AuditDemo.Module {
        
    public class MSSqlServerTimestampStrategy : IAuditTimestampStrategy{
            DateTime cachedTimeStamp;
            
    #region IAuditTimeStampStrategy Members
            
    public DateTime GetTimestamp(AuditDataItem auditDataItem) {
                
    return cachedTimeStamp;
            }
            
    public void OnBeginSaveTransaction(Session session) {
                SqlCommand command 
    = new SqlCommand("select getdate()", (SqlConnection)session.Connection);
                cachedTimeStamp 
    = (DateTime)command.ExecuteScalar();
            }
            
    #endregion
        }
    }
    代码:TimestampService.asmx.cs
    using System;
    using System.Data;
    using System.Web;
    using System.Collections;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.ComponentModel;

    namespace TimestampWebService {
        [WebService(Namespace 
    = "http://localhost/")]
        [WebServiceBinding(ConformsTo 
    = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(
    false)]
        
    public class TimestampService : System.Web.Services.WebService {
            [WebMethod]
            
    public DateTime GetTime() {
                
    return DateTime.Now;
            }
        }

     
       
     

     
    代码:WebServiceTimestampStrategy.cs
    using System;
    using DevExpress.Persistent.AuditTrail;
    using DevExpress.Xpo;
    using AuditDemo.Module.TimestampWebService;

    namespace AuditDemo.Module {
        
    public class WebServiceTimestampStrategy : IAuditTimestampStrategy {
            DateTime cachedTimeStamp;
            
    #region IAuditTimeStampStrategy Members
            
    public DateTime GetTimestamp(AuditDataItem auditDataItem) {
                
    return cachedTimeStamp;
            }
            
    public void OnBeginSaveTransaction(Session session) {
                
    try {
                    TimestampService service 
    = new TimestampService();
                    cachedTimeStamp 
    = service.GetTime();
                }
                
    catch {
                    
    throw new Exception("Cannot access the TimeStampWebService. Make sure it's running.");
                }
            }
            
    #endregion
        }

     
       
     


     
     
      
      
  • 相关阅读:
    【Flume】数据采集引擎Flume
    【Spark】源码分析之SparkContext
    【Spark】源码分析之spark-submit
    【Hadoop故障处理】高可用(HA)环境DataNode问题
    【Hadoop故障处理】全分布下,DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空
    【Hadoop故障处理】在高可用(HA)配置下,8088端口无法访问,resourcemanager进程无法启动问题
    【Spark】算子
    【Java】集合遍历--List和Map的多种遍历方式
    【Java】集合概述Collection、Map
    【Java】abstract,final,static,private,protected,public的区别
  • 原文地址:https://www.cnblogs.com/ddlzq/p/1845942.html
Copyright © 2020-2023  润新知