Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 68ABF200C3F for ; Wed, 8 Mar 2017 07:09:14 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 672FC160B74; Wed, 8 Mar 2017 06:09:14 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B1CD1160B68 for ; Wed, 8 Mar 2017 07:09:13 +0100 (CET) Received: (qmail 68089 invoked by uid 500); 8 Mar 2017 06:09:12 -0000 Mailing-List: contact users-help@isis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@isis.apache.org Delivered-To: mailing list users@isis.apache.org Received: (qmail 68077 invoked by uid 99); 8 Mar 2017 06:09:12 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 08 Mar 2017 06:09:12 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id F0B9A1A576D for ; Wed, 8 Mar 2017 06:09:11 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.649 X-Spam-Level: ** X-Spam-Status: No, score=2.649 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, KAM_INFOUSMEBIZ=0.75, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=yahoo.co.nz Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id Gwv1rfVo3zKg for ; Wed, 8 Mar 2017 06:09:09 +0000 (UTC) Received: from sonic316-55.consmr.mail.ne1.yahoo.com (sonic316-55.consmr.mail.ne1.yahoo.com [66.163.187.181]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id B4F5E5FB5B for ; Wed, 8 Mar 2017 06:09:08 +0000 (UTC) X-YMail-OSG: o67j4ZAVM1m145S3SBeRh_oO1yMFb4yoXwLtcFM4DoE7I3jisrEPu8AlJ__qYnf wVLjiImWzzr0TKPeeMKTtQqnfGdeOIYycFRFzx2vsmy5e6WD.GGegcWftn6h58sLoMYlRuhajSmE bDSVbYpou7tbhgdOxlVhIVqvwTW8ZeSZ_RVKeyJUEegfFt.h0Z67iHFDsrU4GsgiyLoJ0rF5eD0k VhJ0ppPx.0lAyxOF7ENKncwQgALNuSBMCj99Y.MEwnnCj9aQUUnGEyHBaFFWHjYDW7ay8tOPm80m 5Z478jOjcH9DZR7hGzPgvQ_4eeWRrCo20fXmP9UKUtXWaHpzcnsFqzXRMYRfrRANDz1Eu2jDOXbf OTKFxSHCvMz9FH.LyC0aKqYfLDc.X40Ot0yYSQCvMiHYTNYpVK7bzrWn4oTjM6cLi53zZhmWDI7j CgkHYcwMLWvmwMcR2VaJTDBoIGlRFtDLp_XJSNOdgVzWjHZXFGF4p2brKZjAxbhyAfaXrwVua7TQ Zo2EhEFD0FL1d5C8kmax3_rPD_XFwa9TkbgMJ_tsXjxuGL1akKiZgJgDYTo1Ydibg Received: from sonic.gate.mail.ne1.yahoo.com by sonic316.consmr.mail.ne1.yahoo.com with HTTP; Wed, 8 Mar 2017 06:09:08 +0000 Date: Wed, 8 Mar 2017 06:05:03 +0000 (UTC) From: David Tildesley Reply-To: David Tildesley To: "Users@isis Apache. Org" Message-ID: <2077943161.988524.1488953103156@mail.yahoo.com> Subject: Deep copy object graph MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_988523_235063345.1488953103154" References: <2077943161.988524.1488953103156.ref@mail.yahoo.com> archived-at: Wed, 08 Mar 2017 06:09:14 -0000 ------=_Part_988523_235063345.1488953103154 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi, I have a need to keep public records and to be able to edit objects and put= them through a publishing lifecycle whilst public can view the current rec= ord without seeing the changes. Temporal object pattern [1] seems like the simplest pattern. Then it comes down to how hard or easy it is to simply =C2=A0copy a compone= nts entire object graph to make a new version (don't really care about the = duplication of data that hasn't change from version to version). Datanucleus has some support for coping an object graph from one repository= to another - I assume you can copy to the same repository to achieve what = I want to do. Krypo [2] seems like it is being used by Datanucleus. Anyways - how to do this with ISIS? Any suggestions appreciated. Some context: A Building (component) =C2=A0has a current FireSafetyCertification (compone= nt) and is published as a public record and these records are kept for 10 y= ears. A change to a record that is viewable by the public is regarded as a = new public record. Overtime (slowly) these FireSafetyCertificates may expir= e/withdrawn/change in detail. But when they are published they constitute a= public record. Building has names, addresses, images, parts, construction = details, etc. whilst FireSafetyCertification has documents, exemption notic= es, expiry dates etc.=C2=A0 Using the Temporal Object pattern, a Building object has 1..* BuildingVersi= on and all of the Building's detail hangs off BuildingVersion.=C2=A0 Any other suggestions instead of Temporal Object pattern also appreciated. [1] https://martinfowler.com/eaaDev/TemporalObject.html=C2=A0[2]=C2=A0http:= //camposha.info/source/java-kryo/ Thanks! David. ------=_Part_988523_235063345.1488953103154--