You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2016/05/13 18:14:29 UTC

[47/50] [abbrv] isis git commit: ISIS-1291: documentation on command and events.

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/chg/chg-1.0.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/chg/chg-1.0.xsd b/adocs/documentation/src/main/asciidoc/schema/chg/chg-1.0.xsd
new file mode 100644
index 0000000..e793d71
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/schema/chg/chg-1.0.xsd
@@ -0,0 +1,97 @@
+\ufeff<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/chg"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/chg"
+           xmlns:com="http://isis.apache.org/schema/common"
+        >
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.0.xsd"/>
+
+    <xs:element name="changesDto">
+        <xs:annotation>
+            <xs:documentation>The changes (create/update/delete) to one or more domain objects within a transaction.  (nb: only published objects are included in these lists).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
+                    <xs:annotation>
+                        <xs:documentation>The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Transaction id within which this change occurred.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                    <xs:annotation>
+                        <xs:documentation>The point in time that these changes were completed.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="user" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name of the user that performed this transaction.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="objects" type="objectsDto"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="objectsDto">
+        <xs:annotation>
+            <xs:documentation>A set of changes to domain objects.</xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="created" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects created within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="updated" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects updated within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="deleted" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects deleted within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/chg/chg.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/chg/chg.xsd b/adocs/documentation/src/main/asciidoc/schema/chg/chg.xsd
new file mode 100644
index 0000000..e793d71
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/schema/chg/chg.xsd
@@ -0,0 +1,97 @@
+\ufeff<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/chg"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/chg"
+           xmlns:com="http://isis.apache.org/schema/common"
+        >
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.0.xsd"/>
+
+    <xs:element name="changesDto">
+        <xs:annotation>
+            <xs:documentation>The changes (create/update/delete) to one or more domain objects within a transaction.  (nb: only published objects are included in these lists).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
+                    <xs:annotation>
+                        <xs:documentation>The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Transaction id within which this change occurred.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="completedAt" type="xs:dateTime" minOccurs="0" maxOccurs="1">
+                    <xs:annotation>
+                        <xs:documentation>The point in time that these changes were completed.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="user" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name of the user that performed this transaction.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="objects" type="objectsDto"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="objectsDto">
+        <xs:annotation>
+            <xs:documentation>A set of changes to domain objects.</xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="created" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects created within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="updated" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects updated within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="deleted" type="com:oidsDto">
+                <xs:annotation>
+                    <xs:documentation>The list of objects deleted within the transaction.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/cmd/cmd.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/cmd/cmd.xsd b/adocs/documentation/src/main/asciidoc/schema/cmd/cmd.xsd
new file mode 100644
index 0000000..8f34661
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/schema/cmd/cmd.xsd
@@ -0,0 +1,151 @@
+\ufeff<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/cmd"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/cmd"
+           xmlns:com="http://isis.apache.org/schema/common">
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.0.xsd"/>
+
+    <xs:element name="commandDto">
+        <xs:annotation>
+            <xs:documentation>Represents v1.0 of this schema.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>Introduced in v1.1. The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Transaction id for this command, a unique identifier.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="targets" type="com:oidsDto">
+                    <xs:annotation>
+                        <xs:documentation>For regular actions, represents the entity/entities or view model(s) upon which the action is to be invoked.  For mixin actions, is the object(s) being mixed-into (the constructor arg to the mixin).  For contributed actions, is the domain service (the contributee object will be one of the action arguments within the payload).  Note that this means that bulk contributed actions cannot be reified as a memento (for this use case, implement as a mixin action instead).
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="member" type="memberDto">
+                    <xs:annotation>
+                        <xs:documentation>The action or property (identifier and parameter arguments) to be invoked on the target object(s).</xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="user" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name of the user that initiated/created this command.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="memberDto" abstract="true">
+        <xs:annotation>
+            <xs:documentation>Represents the information required to be able to invoke an action or modify a property on the target(s).  Specifically, is the identifier of the action/property, along with the parameter arguments.  Is subclassed by 'actionDto' and 'propertyDto'.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="memberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Formal identifier of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+        <xs:attribute  name="interactionType" type="com:interactionType">
+            <xs:annotation>
+                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="actionDto">
+        <xs:annotation>
+            <xs:documentation>Captures the information required to be able to invoke an action on the target(s).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="memberDto">
+                <xs:sequence>
+                    <xs:element name="parameters" type="paramsDto">
+                        <xs:annotation>
+                            <xs:documentation>The list of parameter/argument values for this action invocation.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="propertyDto">
+        <xs:annotation>
+            <xs:documentation>Captures the information required to be able to modify a property on the target(s).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="memberDto">
+                <xs:sequence>
+                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="paramsDto">
+        <xs:annotation>
+            <xs:documentation>A list of of parameter/argument values.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="parameter" type="paramDto"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="paramDto">
+        <xs:annotation>
+            <xs:documentation>Defines an action parameter: its name, type and value (ie provided argument).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="com:valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/common/common-1.0.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/common/common-1.0.xsd b/adocs/documentation/src/main/asciidoc/schema/common/common-1.0.xsd
index ecf6b01..041208c 100644
--- a/adocs/documentation/src/main/asciidoc/schema/common/common-1.0.xsd
+++ b/adocs/documentation/src/main/asciidoc/schema/common/common-1.0.xsd
@@ -188,5 +188,4 @@
         </xs:restriction>
     </xs:simpleType>
 
-
 </xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/common/common.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/common/common.xsd b/adocs/documentation/src/main/asciidoc/schema/common/common.xsd
index ecf6b01..041208c 100644
--- a/adocs/documentation/src/main/asciidoc/schema/common/common.xsd
+++ b/adocs/documentation/src/main/asciidoc/schema/common/common.xsd
@@ -188,5 +188,4 @@
         </xs:restriction>
     </xs:simpleType>
 
-
 </xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.0.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.0.xsd b/adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.0.xsd
index 86e64e7..a6d123a 100644
--- a/adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.0.xsd
+++ b/adocs/documentation/src/main/asciidoc/schema/ixn/ixn-1.0.xsd
@@ -35,7 +35,7 @@
         </xs:annotation>
         <xs:complexType>
             <xs:sequence>
-                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
+                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
                     <xs:annotation>
                         <xs:documentation>The major version of the schema that an XML instance was created using.
                         </xs:documentation>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/schema/ixn/ixn.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/schema/ixn/ixn.xsd b/adocs/documentation/src/main/asciidoc/schema/ixn/ixn.xsd
new file mode 100644
index 0000000..a6d123a
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/schema/ixn/ixn.xsd
@@ -0,0 +1,227 @@
+\ufeff<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/ixn"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/ixn"
+           xmlns:cmd="http://isis.apache.org/schema/cmd"
+           xmlns:com="http://isis.apache.org/schema/common"
+>
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.0.xsd"/>
+    <xs:import namespace="http://isis.apache.org/schema/cmd" schemaLocation="../cmd/cmd-1.0.xsd"/>
+
+    <xs:element name="interactionDto">
+        <xs:annotation>
+            <xs:documentation>Represents v1.0 of this schema, replacing and generalizing the earlier 'actionInvocationMemento'.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="0">
+                    <xs:annotation>
+                        <xs:documentation>The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Transaction id within which this member was interacted with (action invoked/property edited); can be used to locate the corresponding Command object (which may have been persisted).
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="execution" type="memberExecutionDto"/>
+            </xs:sequence>
+        </xs:complexType>
+
+    </xs:element>
+
+    <xs:complexType name="memberExecutionDto" abstract="true">
+        <xs:annotation>
+            <xs:documentation>Represents either an action invocation or a property edit.  Is subclassed by both.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="id" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Unique identifier for this individual member interaction, in the format &quot;transactionId.sequence&quot; (where 'transactionId' is part of the owning 'memberInteractionMementoDto' and 'sequence' is defined below).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="sequence" type="xs:int">
+                <xs:annotation>
+                    <xs:documentation>Unique sequence number of an individual member interaction within a transaction.  There could be many such member interactions (within a single transaction ) for two reasons: either a single top-level interaction could call sub-interactions (by virtue of WrapperFactory), or there may be a bulk action interaction against many targets.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="target" type="com:oidDto" minOccurs="1" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>For target domain object being interacted with.  For regular actions/properties, represents the entity or view model upon which the action is to be invoked/property edited.  For mixin actions/properties, is the object being mixed-into (the constructor arg to the mixin).  For contributed actions/properties, is the domain service (the contributee object will be one of the action arguments within the payload).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="memberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Formal identifier (class name and member name) of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="user" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The name of the user that invoked this action.  Note that this isn't necessarily the user that initiated the original command; the SudoService may be being used to temporarily switch the effective user.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="title" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>User-friendly title of the 'target' object.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="metrics" type="metricsDto">
+                <xs:annotation>
+                    <xs:documentation>Profiling metrics capturng the this time/number of objects affected as a result of performing this member interaction (invoke the action, or edit the property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="threw" type="exceptionDto" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>Captures any exception thrown by an action.  Either the 'returned' or the 'threw' element will be populated.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="childExecutions" minOccurs="0" maxOccurs="1">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="execution" type="memberExecutionDto" minOccurs="0" maxOccurs="unbounded">
+                            <xs:annotation>
+                                <xs:documentation>Capture interactions with other members from this interaction, using the WrapperFactory service.  Typically this will be actions invoking other actions, but it is also possible for an action to perform a property edit, and - much rarer - for a property edit to invoke an action.  Whatever; these interactions nest together into a call/stack, more generally into a graph.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+        <xs:attribute  name="interactionType" type="com:interactionType">
+            <xs:annotation>
+                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="actionInvocationDto">
+        <xs:complexContent>
+            <xs:extension base="memberExecutionDto">
+                <xs:sequence>
+                    <xs:element name="parameters" type="cmd:paramsDto">
+                        <xs:annotation>
+                            <xs:documentation>The list of parameter/argument values for this action invocation.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="returned" type="com:valueWithTypeDto" minOccurs="0" maxOccurs="1">
+                        <xs:annotation>
+                            <xs:documentation>The value returned by this action (including the type of that returned value).  Either the 'returned' or the 'threw' element (from 'memberExecutionDto') will be populated.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="propertyEditDto">
+        <xs:complexContent>
+            <xs:extension base="memberExecutionDto">
+                <xs:sequence>
+                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="metricsDto">
+        <xs:sequence>
+            <xs:element name="timings" type="com:periodDto">
+                <xs:annotation>
+                    <xs:documentation>The time taken to perform the member interaction (invoke the action, or edit the property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="objectCounts" type="objectCountsDto">
+                <xs:annotation>
+                    <xs:documentation>How many objets were affected by the member interaction.
+                    </xs:documentation>
+                </xs:annotation>
+
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="objectCountsDto">
+        <xs:sequence>
+            <xs:element name="loaded" type="com:differenceDto">
+                <xs:annotation>
+                    <xs:documentation>The number of objects loaded.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="dirtied" type="com:differenceDto">
+                <xs:annotation>
+                    <xs:documentation>The number of objects dirtied (ie updated).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="propertiesModified" type="com:differenceDto">
+                <xs:annotation>
+                    <xs:documentation>The number of individual properties of objects that were modified (each such change would correspond to a separate call to AuditingService if configured).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+
+    </xs:complexType>
+
+    <xs:complexType name="exceptionDto">
+        <xs:annotation>
+            <xs:documentation>Captures any exception thrown by an action invocation.  Use as the xsd:type of the 'threw' element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="message" type="xs:string"/>
+            <xs:element name="stackTrace" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>A formatted stack trace.  (A future version of the 'exceptionDto' element might refine this to more easily parseable stack trace elements).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="causedBy" type="exceptionDto" minOccurs="0" maxOccurs="1"/>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/adocs/documentation/src/main/asciidoc/screencasts.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/screencasts.adoc b/adocs/documentation/src/main/asciidoc/screencasts.adoc
index 3e5339a..d4f1985 100644
--- a/adocs/documentation/src/main/asciidoc/screencasts.adoc
+++ b/adocs/documentation/src/main/asciidoc/screencasts.adoc
@@ -135,13 +135,13 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=dfRZeYqzMtI[012^] +
-Implementing business logic using a (no-arg) action, and associating with a property using either the xref:rgant.adoc#_rgant_MemberOrder[`@MemberOrder`] annotations or using xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts].
+Implementing business logic using a (no-arg) action, and associating with a property using either the xref:rgant.adoc#_rgant-MemberOrder[`@MemberOrder`] annotations or using xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts].
 |x||||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=0naoVsWppuQ[013^] +
-Invoking (no-arg) action on multiple objects at once (using xref:rgant.adoc#_rgant_Action_invokeOn[`@Action#invokeOn()`], and using the xref:rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`] domain service for a smoother end-user experience.
+Invoking (no-arg) action on multiple objects at once (using xref:rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`], and using the xref:rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`] domain service for a smoother end-user experience.
 |||x||||||x|
 
 
@@ -161,7 +161,7 @@ Using the xref:rgcms.adoc#_rgcms_methods_reserved_title[`title()`], xref:rgcms.a
 
 
 |link:https://www.youtube.com/watch?v=7ToRKBOeemM[015^] +
-Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:rgcms.adoc#_rgcms_classes_uievent_IconUiEvent[`IconUiEvent`] as per the xref:rgant.adoc#_rgant_DomainObjectLayout_iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] annotation
+Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:rgcms.adoc#_rgcms_classes_uievent_IconUiEvent[`IconUiEvent`] as per the xref:rgant.adoc#_rgant-DomainObjectLayout_iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] annotation
 ||||||x||||
 
 
@@ -221,7 +221,7 @@ Demonstrates how the end-user can copy and share URLs for domain objects - inclu
 
 
 |link:https://www.youtube.com/watch?v=a0QQLT_16To[021^] +
-Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:ugvw.adoc[Wicket viewer], and how the developer can ensure that xref:rgant.adoc#_rgant_DomainObjectLayout_bookmarking[domain objects] and (xref:rgant.adoc#_rgant_Action_semantics[query-only]) xref:rgant.adoc#_rgant_ActionLayout_bookmarking[actions] can be bookmarked.
+Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:ugvw.adoc[Wicket viewer], and how the developer can ensure that xref:rgant.adoc#_rgant-DomainObjectLayout_bookmarking[domain objects] and (xref:rgant.adoc#_rgant-Action_semantics[query-only]) xref:rgant.adoc#_rgant-ActionLayout_bookmarking[actions] can be bookmarked.
 |||x|||||||
 
 
@@ -267,7 +267,7 @@ Using a domain event xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[sub
 
 
 |link:https://www.youtube.com/watch?v=qj4bMkQRBUY[026^] +
-Using the xref:rgant.adoc#_rgant_Title[`@Title`] annotation (instead of the xref:rgcms.adoc#_rgcms_methods_reserved_title[`title()`] reserved method) to obtain the title of a domain object, so that the end-user can distinguish one object from another.
+Using the xref:rgant.adoc#_rgant-Title[`@Title`] annotation (instead of the xref:rgcms.adoc#_rgcms_methods_reserved_title[`title()`] reserved method) to obtain the title of a domain object, so that the end-user can distinguish one object from another.
 |x||||||||x|
 
 
@@ -280,7 +280,7 @@ Using the xref:rgant.adoc#_rgant_Title[`@Title`] annotation (instead of the xref
 
 
 |link:https://www.youtube.com/watch?v=yi52Gbd3lmY[027^] +
-How to write an xref:ugtst.adoc#_ugtst_integ-test-support[integration test] for an xref:rgant.adoc#_rgant_Mixin[mixin].
+How to write an xref:ugtst.adoc#_ugtst_integ-test-support[integration test] for an xref:rgant.adoc#_rgant-Mixin[mixin].
 ||x||||||||
 
 
@@ -303,7 +303,7 @@ Using link:https://projectlombok.org/[Project Lombok] to remove boilerplate from
 
 
 |link:https://www.youtube.com/watch?v=AXuxULuRtm0[029^] +
-Using the (non-ASF) http://github.com/isisaddons/isis-metamodel-paraname8[Isis addons' paraname8] module to remove boilerplate from your domain object (xref:rgant.adoc#_rgant_ParameterLayout_named[`@ParameterLayout#named()`] annotation attribute on action parameters).
+Using the (non-ASF) http://github.com/isisaddons/isis-metamodel-paraname8[Isis addons' paraname8] module to remove boilerplate from your domain object (xref:rgant.adoc#_rgant-ParameterLayout_named[`@ParameterLayout#named()`] annotation attribute on action parameters).
 |||||x|||x||
 
 
@@ -324,7 +324,7 @@ How to validate action parameters using a supporting xref:rgcms.adoc#_rgcms_meth
 
 
 |link:https://www.youtube.com/watch?v=1Vlzob89pYI[031^] +
-How to validate action parameters using the xref:rgant.adoc#_rgant_Parameter_mustSatisfy[`@Parameter#mustSatisfy()`]  and the Specification interface.
+How to validate action parameters using the xref:rgant.adoc#_rgant-Parameter_mustSatisfy[`@Parameter#mustSatisfy()`]  and the Specification interface.
 |||||||||x|
 
 
@@ -383,7 +383,7 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=1SCyBlMM2Bo[037^] +
-How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:rgant.adoc#_rgant_PropertyLayout_hidden[`@PropertyLayout#hidden()`]).
+How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:rgant.adoc#_rgant-PropertyLayout_hidden[`@PropertyLayout#hidden()`]).
 ||||x||||||
 
 
@@ -428,7 +428,7 @@ Using BigDecimal as a property within a domain object, also demonstrating the "s
 
 
 |link:https://www.youtube.com/watch?v=n9Oy0m2bplw[042^] +
-How to use the xref:rgant.adoc#_rgant_Digits[`@Digits`] annotation for action parameters of type ``java.math.BigDecimal``.
+How to use the xref:rgant.adoc#_rgant-Digits[`@Digits`] annotation for action parameters of type ``java.math.BigDecimal``.
 |||||||||x|
 
 
@@ -447,7 +447,7 @@ How to use the supporting xref:rgcms.adoc#_rgcms_methods_prefixes_default[`defau
 
 
 |link:https://www.youtube.com/watch?v=qAJDGxztWIQ[044^] +
-How to use xref:rgant.adoc#_rgant_DomainObject_bounded[`@DomainObject#bounded()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
+How to use xref:rgant.adoc#_rgant-DomainObject_bounded[`@DomainObject#bounded()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
 |||||||||x|
 
 
@@ -483,7 +483,7 @@ extension.
 
 
 |link:https://www.youtube.com/watch?v=0YoFa44Xr6M[049^] +
-Using the xref:rgant.adoc#_rgant_Programmatic[`@Programmatic`] annotation to exclude methods from a domain object
+Using the xref:rgant.adoc#_rgant-Programmatic[`@Programmatic`] annotation to exclude methods from a domain object
 (eg implementing methods of an interface as defined by the (non-ASF)
 http://github.com/isisaddons/isis-wicket-fullcalendar2[Isis addons' fullcalendar2 ] wicket extension) that would
 otherwise be part of the Apache Isis metamodel (and thus show up in the UI).
@@ -552,7 +552,7 @@ How to rename a menu (on the top-level menubar) as rendered in the xref:ugvw.ado
 
 
 |link:https://www.youtube.com/watch?v=mgHqRxQrp28[058^] +
-How to rename various elements (collections, title) of the xref:rgant.adoc#_rgant_HomePage[home page] view model,
+How to rename various elements (collections, title) of the xref:rgant.adoc#_rgant-HomePage[home page] view model,
 for an improved initial page.
 ||||||||||x
 

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokedOn.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokedOn.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokedOn.java
index 66f001f..896b107 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokedOn.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/InvokedOn.java
@@ -28,6 +28,9 @@ public enum InvokedOn {
     public boolean isObject() { return this == OBJECT; }
     public boolean isCollection() { return this == COLLECTION; }
 
+    /**
+     * @deprecated - because the {@link Bulk} annotation is deprecated.
+     */
     @Deprecated
     public static InvokedOn from(final Bulk.InteractionContext.InvokedAs invokedAs) {
         if (invokedAs == null) return null;
@@ -37,6 +40,9 @@ public enum InvokedOn {
         throw new IllegalArgumentException("Unrecognized bulk interactionContext invokedAs: " + invokedAs);
     }
 
+    /**
+     * @deprecated - because the {@link Bulk} annotation is deprecated.
+     */
     @Deprecated
     public static Bulk.InteractionContext.InvokedAs from(final InvokedOn invokedOn) {
         if (invokedOn == null) return null;

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForAction.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForAction.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForAction.java
index 4a3a93e..2d437cc 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForAction.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForAction.java
@@ -21,29 +21,53 @@ package org.apache.isis.applib.annotation;
 import java.util.List;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.publish.EventPayload;
+import org.apache.isis.applib.services.publish.PublisherService;
+import org.apache.isis.applib.services.publish.PublishingService;
 
+/**
+ * @deprecated - supports the deprecated {@link PublishingService}; use instead {@link PublisherService} (which ignores {@link Action#publishingPayloadFactory()} but is otherwise more flexible.
+ */
+@Deprecated
 public interface PublishingPayloadFactoryForAction {
 
+    /**
+     * @deprecated - because {@link PublishingService} is deprecated.
+     */
+    @Deprecated
     @Programmatic
     public EventPayload payloadFor(Identifier actionIdentifier, Object target, List<Object> arguments, Object result);
 
     /**
      * Adapter to subclass if have an existing {@link org.apache.isis.applib.annotation.PublishedObject.PayloadFactory}.
+     *
+     * @deprecated
      */
     @Deprecated
     public abstract class Adapter implements PublishingPayloadFactoryForAction {
 
         private final PublishedAction.PayloadFactory payloadFactory;
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         public Adapter(final PublishedAction.PayloadFactory payloadFactory) {
             this.payloadFactory = payloadFactory;
         }
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         @Override
         public EventPayload payloadFor(Identifier actionIdentifier, Object target, List<Object> arguments, Object result) {
             return payloadFactory.payloadFor(actionIdentifier, target, arguments, result);
         }
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         public PublishedAction.PayloadFactory getPayloadFactory() {
             return payloadFactory;
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForObject.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForObject.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForObject.java
index fb3df0d..f223b6e 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForObject.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/PublishingPayloadFactoryForObject.java
@@ -19,29 +19,53 @@
 package org.apache.isis.applib.annotation;
 
 import org.apache.isis.applib.services.publish.EventPayload;
+import org.apache.isis.applib.services.publish.PublisherService;
+import org.apache.isis.applib.services.publish.PublishingService;
 
+/**
+ * @deprecated - supports the deprecated {@link PublishingService}; use instead {@link PublisherService} (which ignores {@link DomainObject#publishingPayloadFactory()} but is otherwise more flexible.
+ */
+@Deprecated
 public interface PublishingPayloadFactoryForObject {
 
+    /**
+     * @deprecated - because {@link PublishingService} is deprecated.
+     */
+    @Deprecated
     @Programmatic
     public EventPayload payloadFor(Object changedObject, PublishingChangeKind publishingChangeKind);
 
     /**
      * Adapter to subclass if have an existing {@link org.apache.isis.applib.annotation.PublishedObject.PayloadFactory}.
+     *
+     * @deprecated
      */
     @Deprecated
     public static class Adapter implements PublishingPayloadFactoryForObject {
 
         private final PublishedObject.PayloadFactory payloadFactory;
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         public Adapter(final PublishedObject.PayloadFactory payloadFactory) {
             this.payloadFactory = payloadFactory;
         }
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         @Override
         public EventPayload payloadFor(final Object changedObject, final PublishingChangeKind publishingChangeKind) {
             return payloadFactory.payloadFor(changedObject, PublishingChangeKind.from(publishingChangeKind));
         }
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         public PublishedObject.PayloadFactory getPayloadFactory() {
             return payloadFactory;
         }

http://git-wip-us.apache.org/repos/asf/isis/blob/7ebbb70c/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
index 52ebd9d..8acd912 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/publish/PublishingService.java
@@ -29,14 +29,9 @@ import org.apache.isis.applib.annotation.Programmatic;
  * annotation, and an action is marked to be published using the
  * {@link org.apache.isis.applib.annotation.PublishedAction} annotation.
  *
- * <p>
- * There are currently two implementations, <tt>PublishingServiceJdo</tt> (part of the
- * <tt>o.a.i.module:isis-module-publishing-jdo</tt>) and the demo
- * {@link org.apache.isis.applib.services.publish.PublishingService.Stderr}.
- *
- * <p>
- * To use either service, must include on the classpath and also register the service (eg in <tt>isis.properties</tt>).
+ * @deprecated - use the {@link PublisherService} instead.
  */
+@Deprecated
 public interface PublishingService {
 
     /**
@@ -49,10 +44,27 @@ public interface PublishingService {
     @Programmatic
     void publish(EventMetadata metadata, EventPayload payload);
     
+    /**
+     * @deprecated  - not every implementation will use an {@link EventSerializer}, so this ought not to have been
+     * defined in the interface.
+     */
+    @Programmatic
+    @Deprecated
+    void setEventSerializer(EventSerializer eventSerializer);
+
+
+    /**
+     * @deprecated
+     */
+    @Deprecated
     class Stderr implements PublishingService {
 
         private EventSerializer eventSerializer = new EventSerializer.Simple();
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         @Hidden
         @Override
         public void publish(EventMetadata metadata, EventPayload payload) {
@@ -60,18 +72,16 @@ public interface PublishingService {
             System.err.println(serializedEvent);
         }
 
+        /**
+         * @deprecated
+         */
+        @Deprecated
         @Override
         public void setEventSerializer(EventSerializer eventSerializer) {
             this.eventSerializer = eventSerializer;
         }
     }
 
-    /**
-     * @deprecated  - not every implementation will use an {@link EventSerializer}, so this ought not to have been defined in the interface.
-     */
-    @Programmatic
-    @Deprecated
-    void setEventSerializer(EventSerializer eventSerializer);
 }