Commit 2e412ead 2e412ead7a3bebed35c7ec8b1238997ac9dd6935 by RXDIRECTUM\rx1

Импорт пакета разработки [Rx]

1 parent 050ae472
Showing 82 changed files with 6640 additions and 0 deletions
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Client
{
public class ModuleFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
public class ModuleAsyncHandlers
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
partial class DciHandlers
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
public class ModuleJobs
{
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<queries>
</queries>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
public class ModuleFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Server
{
}
\ No newline at end of file
{
"$type": "Sungero.Metadata.SolutionMetadata, Sungero.Metadata",
"NameGuid": "f380c872-469a-4014-9ce5-ffb840907fc6",
"Name": "Dci",
"AsyncHandlers": [],
"ClientAssemblyName": "DirRX.Dci.Client",
"ClientBaseAssemblyName": "DirRX.Dci.ClientBase",
"ClientBaseNamespace": "DirRX.Dci.ClientBase",
"ClientNamespace": "DirRX.Dci.Client",
"Code": "Dci",
"CompanyCode": "DirRX",
"Cover": {
"NameGuid": "b41ac586-e41b-4b5c-99a2-d09d81032728",
"Actions": [],
"Background": null,
"Footer": {
"NameGuid": "b9ace2f4-94cc-49a4-834f-c73df793fb4d",
"BackgroundPosition": "Stretch"
},
"Groups": [],
"Header": {
"NameGuid": "6e9571a3-229f-4173-9651-503932893c1c",
"BackgroundPosition": "Stretch"
},
"Tabs": []
},
"DesktopViews": [],
"IconResourcesKeys": [],
"Importance": "Medium",
"InterfaceAssemblyName": "Sungero.Domain.Interfaces",
"InterfaceNamespace": "DirRX.Dci",
"OrderedSpecialFolders": [],
"PublicStructures": [],
"ResourceInterfaceAssemblyName": "Sungero.Domain.Interfaces",
"ResourceInterfaceNamespace": "DirRX.Dci",
"ResourcesKeys": [],
"ServerAssemblyName": "DirRX.Dci.Server",
"ServerNamespace": "DirRX.Dci.Server",
"SharedAssemblyName": "DirRX.Dci.Shared",
"SharedNamespace": "DirRX.Dci.Shared",
"SpecialFolders": [],
"Version": "1.0.4427.0",
"Widgets": [],
"Versions": [
{
"Type": "SolutionMetadata",
"Number": 8
},
{
"Type": "ModuleMetadata",
"Number": 8
},
{
"Type": "DomainApi",
"Number": 3
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
using System;
using Sungero.Core;
namespace DirRX.Dci.Constants
{
public static class Module
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Shared
{
public class ModuleFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.Dci.Structures.Module
{
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="DisplayName" xml:space="preserve">
<value>Dci</value>
</data>
<data name="CoverTitle" xml:space="preserve">
<value>Dci</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore.Client
{
partial class DciProcessKindFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore
{
partial class DciProcessKindClientHandlers
{
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
<Collection175cf31544274d6b81205bd7b57bd993 FormGuid="e3903018-e6ef-4336-a294-2ccdc8d0bf63">
<XtraSerializer version="1.0" application="GridControl">
<property name="#LayoutVersion" isnull="true" />
<property name="$GridControl" iskey="true" value="GridControl">
<property name="GroupSummary" iskey="true" value="0" />
<property name="View" isnull="true" iskey="true">
<property name="ShowTotalSummary">false</property>
<property name="AllowMoveColumnToDropArea">false</property>
<property name="AllowColumnMoving">true</property>
<property name="ColumnChooserState" isnull="true" iskey="true">
<property name="Location">1011,-2</property>
<property name="Size">220,250</property>
</property>
<property name="AutoWidth">false</property>
<property name="AllowGrouping">false</property>
<property name="AllowSorting">true</property>
<property name="ShowGroupPanel">false</property>
<property name="LinesPerRowMode">None</property>
<property name="IsRowCellMenuEnabled">false</property>
</property>
<property name="GroupCount">0</property>
<property name="TotalSummary" iskey="true" value="0" />
<property name="Columns" iskey="true" value="2">
<property name="Item1" isnull="true" iskey="true">
<property name="FieldName">Name</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Messages_Name</property>
<property name="VisibleIndex">0</property>
<property name="Width">337</property>
<property name="ActualWidth">28*</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="FieldName">Note</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Messages_Note</property>
<property name="VisibleIndex">1</property>
<property name="ActualWidth">57*</property>
</property>
</property>
<property name="SortInfo" iskey="true" value="0" />
<property name="GroupSummarySortInfo" iskey="true" value="0" />
</property>
</XtraSerializer>
</Collection175cf31544274d6b81205bd7b57bd993>
</settings>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
<Collection FormGuid="cddd4c25-da1e-45d4-ab4b-0250a22ce940">
<XtraSerializer version="1.0" application="GridControl">
<property name="#LayoutVersion" isnull="true" />
<property name="$GridControl" iskey="true" value="GridControl">
<property name="GroupSummary" iskey="true" value="0" />
<property name="View" isnull="true" iskey="true">
<property name="ColumnChooserState" isnull="true" iskey="true">
<property name="Location">840,-194</property>
<property name="Size">220,250</property>
</property>
<property name="AllowGrouping">true</property>
<property name="AllowSorting">true</property>
<property name="LinesPerRowMode">OneLineMode</property>
<property name="IsRowCellMenuEnabled">false</property>
</property>
<property name="TotalSummary" iskey="true" value="0" />
<property name="GroupCount">0</property>
<property name="Columns" iskey="true" value="8">
<property name="Item1" isnull="true" iskey="true">
<property name="MinWidth">32</property>
<property name="FieldName">T</property>
<property name="FixedWidth">true</property>
<property name="Visible">true</property>
<property name="ExtendedVisibleIndex">0</property>
<property name="VisibleIndex">0</property>
<property name="Width">32</property>
<property name="ActualWidth">3*</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="FieldName">Id</property>
<property name="Visible">false</property>
<property name="Name">DciProcessKind_Id</property>
<property name="ExtendedVisibleIndex">7</property>
<property name="VisibleIndex">5</property>
<property name="ActualWidth">6*</property>
</property>
<property name="Item3" isnull="true" iskey="true">
<property name="FieldName">Status</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Status</property>
<property name="ExtendedVisibleIndex">6</property>
<property name="VisibleIndex">4</property>
<property name="ActualWidth">15*</property>
</property>
<property name="Item4" isnull="true" iskey="true">
<property name="FieldName">Name</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Name</property>
<property name="ExtendedVisibleIndex">3</property>
<property name="VisibleIndex">1</property>
<property name="ActualWidth">17*</property>
</property>
<property name="Item5" isnull="true" iskey="true">
<property name="FieldName">GUID</property>
<property name="Visible">false</property>
<property name="Name">DciProcessKind_GUID</property>
<property name="ExtendedVisibleIndex">1</property>
<property name="ActualWidth">NaN</property>
</property>
<property name="Item6" isnull="true" iskey="true">
<property name="FieldName">ProcessType</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_ProcessType</property>
<property name="ExtendedVisibleIndex">5</property>
<property name="VisibleIndex">3</property>
<property name="ActualWidth">14*</property>
</property>
<property name="Item7" isnull="true" iskey="true">
<property name="FieldName">Description</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Description</property>
<property name="ExtendedVisibleIndex">4</property>
<property name="VisibleIndex">2</property>
<property name="ActualWidth">24*</property>
</property>
<property name="Item8" isnull="true" iskey="true">
<property name="FieldName">Note</property>
<property name="Visible">false</property>
<property name="Name">DciProcessKind_Note</property>
<property name="ExtendedVisibleIndex">2</property>
<property name="ActualWidth">NaN</property>
</property>
</property>
<property name="SortInfo" iskey="true" value="0" />
<property name="GroupSummarySortInfo" iskey="true" value="0" />
</property>
</XtraSerializer>
</Collection>
</settings>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
<Folder FormGuid="8dbb6507-6d7b-4ef2-9247-a64a15eb5dbb">
<XtraSerializer version="1.0" application="GridControl">
<property name="#LayoutVersion" isnull="true" />
<property name="$GridControl" iskey="true" value="GridControl">
<property name="Columns" iskey="true" value="3">
<property name="Item1" isnull="true" iskey="true">
<property name="FieldName">T</property>
<property name="Visible">true</property>
<property name="VisibleIndex">0</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="FieldName">Id</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Id</property>
<property name="VisibleIndex">1</property>
</property>
<property name="Item3" isnull="true" iskey="true">
<property name="FieldName">Name</property>
<property name="Visible">true</property>
<property name="Name">DciProcessKind_Name</property>
<property name="VisibleIndex">2</property>
</property>
</property>
</property>
</XtraSerializer>
</Folder>
</settings>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore.Client
{
partial class DciSettingFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore
{
partial class DciSettingClientHandlers
{
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
</settings>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
<Collection FormGuid="cddd4c25-da1e-45d4-ab4b-0250a22ce940">
<XtraSerializer version="1.0" application="GridControl">
<property name="#LayoutVersion" isnull="true" />
<property name="$GridControl" iskey="true" value="GridControl">
<property name="Columns" iskey="true" value="3">
<property name="Item1" isnull="true" iskey="true">
<property name="FieldName">T</property>
<property name="Visible">true</property>
<property name="VisibleIndex">0</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="FieldName">Id</property>
<property name="Visible">true</property>
<property name="Name">DciSetting_Id</property>
<property name="VisibleIndex">1</property>
</property>
<property name="Item3" isnull="true" iskey="true">
<property name="FieldName">Name</property>
<property name="Visible">true</property>
<property name="Name">DciSetting_Name</property>
<property name="VisibleIndex">2</property>
</property>
</property>
</property>
</XtraSerializer>
</Collection>
</settings>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings>
<ViewName>Default</ViewName>
<Folder FormGuid="8dbb6507-6d7b-4ef2-9247-a64a15eb5dbb">
<XtraSerializer version="1.0" application="GridControl">
<property name="#LayoutVersion" isnull="true" />
<property name="$GridControl" iskey="true" value="GridControl">
<property name="Columns" iskey="true" value="3">
<property name="Item1" isnull="true" iskey="true">
<property name="FieldName">T</property>
<property name="Visible">true</property>
<property name="VisibleIndex">0</property>
</property>
<property name="Item2" isnull="true" iskey="true">
<property name="FieldName">Id</property>
<property name="Visible">true</property>
<property name="Name">DciSetting_Id</property>
<property name="VisibleIndex">1</property>
</property>
<property name="Item3" isnull="true" iskey="true">
<property name="FieldName">Name</property>
<property name="Visible">true</property>
<property name="Name">DciSetting_Name</property>
<property name="VisibleIndex">2</property>
</property>
</property>
</property>
</XtraSerializer>
</Folder>
</settings>
\ No newline at end of file
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><title>GroupIconGroup2_large_5430a5b483b34623a8a172567176cf0c</title><path d="M30,13H26.95c-0.16-.45-1.11-2.16-1.32-2.58L27.3,8.75c0.76-.76,1-1.37.19-2.13L24.75,3.88c-0.76-.76-1.11-0.14-1.87.61L21.12,6.25c-0.31-.14-1.8-1.08-2.12-1.2V2c0-.5,0-1-1.06-1H14.06A0.88,0.88,0,0,0,13,2V5.05c-0.39.14-1.93,1.07-2.29,1.24l-2.21-2C7.75,3.57,8,3.37,6.83,3.92L4.09,6.66a1.39,1.39,0,0,0,.22,2.16l1.85,1.85C6,11,5.19,12.61,5.05,13H2a0.84,0.84,0,0,0-1,1v4c0,0.9,1.26,1,1,1H5c0.11,0.32.94,1.69,1.08,2l-2,2c-0.76.76-1.05,1.56-.3,2.32L6.5,28.08c0.76,0.76,1.18.48,1.94-.27l1.93-1.93c0.42,0.21,2.14,1,2.58,1.21L13,30c0.13,0.25-.07,1,1,1h4a1,1,0,0,0,1-1V27c0.39-.14,1.71-1.08,2.08-1.25l1.85,1.85a1.49,1.49,0,0,0,2.34.14L28,25c0.76-.76.23-0.94-0.53-1.69l-1.85-1.85c0.17-.37,1.19-2.07,1.32-2.46H30a0.92,0.92,0,0,0,1-1.06V14.06A0.92,0.92,0,0,0,30,13ZM16,20.88A4.59,4.59,0,0,1,11.13,16,4.82,4.82,0,0,1,16,11.13,5,5,0,0,1,20.88,16,4.78,4.78,0,0,1,16,20.88Z" fill="#fff"/><path d="M18,2V4.7a2,2,0,0,0,1.33,1.89c0.29,0.1.56,0.21,0.82,0.33a2,2,0,0,0,2.25-.4l1.82-1.82L27,7.51,25.32,9.24a2,2,0,0,0-.38,2.31,10,10,0,0,1,.48,1.12A2,2,0,0,0,27.3,14H30v4H27.3a2,2,0,0,0-1.89,1.33,10,10,0,0,1-.4,1,2,2,0,0,0,.39,2.28l1.91,1.91-2.83,2.83-1.91-1.91A2,2,0,0,0,20.3,25a9.94,9.94,0,0,1-1,.4A2,2,0,0,0,18,27.3V30H14V27.3a2,2,0,0,0-1.33-1.89,10,10,0,0,1-1.12-.48,2,2,0,0,0-2.31.38l-2,2L4.41,24.49l2.09-2.09a2,2,0,0,0,.4-2.25c-0.12-.25-0.23-0.53-0.33-0.82A2,2,0,0,0,4.7,18H2V14H4.7a2,2,0,0,0,1.89-1.33,10,10,0,0,1,.4-1,2,2,0,0,0-.39-2.28L4.69,7.51,7.51,4.69,9.42,6.59A2,2,0,0,0,11.7,7a10,10,0,0,1,1-.4A2,2,0,0,0,14,4.7V2h4M16,22a6,6,0,1,0-6-6,6,6,0,0,0,6,6M18,0H14a2,2,0,0,0-2,2V4.7a11.91,11.91,0,0,0-1.16.48L8.93,3.27a2,2,0,0,0-2.83,0L3.27,6.1a2,2,0,0,0,0,2.83l1.91,1.91A11.9,11.9,0,0,0,4.7,12H2a2,2,0,0,0-2,2v4a2,2,0,0,0,2,2H4.7c0.12,0.33.25,0.66,0.39,1L3,23.07A2,2,0,0,0,3,25.9l2.83,2.83a2,2,0,0,0,2.83,0l2-2A11.92,11.92,0,0,0,12,27.3V30a2,2,0,0,0,2,2h4a2,2,0,0,0,2-2V27.3a11.89,11.89,0,0,0,1.16-.48l1.91,1.91a2,2,0,0,0,2.83,0l2.83-2.83a2,2,0,0,0,0-2.83l-1.91-1.91A11.9,11.9,0,0,0,27.3,20H30a2,2,0,0,0,2-2V14a2,2,0,0,0-2-2H27.3a11.92,11.92,0,0,0-.57-1.35l1.72-1.72a2,2,0,0,0,0-2.83L25.63,3.27a2,2,0,0,0-2.83,0L21,5.09c-0.32-.15-0.65-0.28-1-0.39V2a2,2,0,0,0-2-2h0ZM16,20a4,4,0,1,1,4-4,4,4,0,0,1-4,4h0Z" fill="#6fa6d4"/></svg>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Client
{
public class ModuleFunctions
{
/// <summary>
/// Открыть настройки DCI.
/// </summary>
[Public]
public virtual void ShowDciSettings()
{
var setting = Functions.DciSetting.Remote.GetDciSettings();
if (setting == null)
setting = Functions.DciSetting.Remote.CreateDciSetting();
setting.Show();
}
/// <summary>
/// Отправить тестовое сообщение для проверки связи.
/// </summary>
[Public]
public virtual void SendDciPingMessage()
{
var setting = Functions.DciSetting.Remote.GetDciSettings();
if (setting == null)
{
Dialogs.ShowMessage(DirRX.DciCore.Resources.DciSettingsNotFound, MessageType.Warning);
return;
}
var processGuid = Functions.Module.Remote.SendDciPing();
var hyperLink = PublicFunctions.Module.GetHyperlinkToDciProcess(setting, processGuid);
Dialogs.ShowMessage(DirRX.DciCore.Resources.SendPingTrackingMessageFormat(hyperLink));
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Client
{
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore
{
partial class DciProcessKindServerHandlers
{
public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
{
var validationText = string.Empty;
// Проверить корректность имени процесса.
validationText = Functions.Module.ValidateDciName(_obj.Name);
if (!string.IsNullOrWhiteSpace(validationText))
e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectProcessNameFormat(validationText));
// Проверить корректность имени сообщений.
foreach (var row in _obj.Messages)
{
validationText = Functions.Module.ValidateDciName(row.Name);
if (!string.IsNullOrWhiteSpace(validationText))
e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectMessageNameFormat(validationText));
}
// Проверить дубли среди имен сообщений в разрезе сообщения.
var doubleName = _obj.Messages.GroupBy(x => x.Name)
.Where(g => g.Count() > 1)
.Select(y => y.Key)
.FirstOrDefault();
if (!string.IsNullOrWhiteSpace(doubleName))
e.AddError(DirRX.DciCore.DciProcessKinds.Resources.NotUniqueMessageNameFormat(doubleName, _obj.Name));
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<queries>
</queries>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore.Server
{
partial class DciProcessKindFunctions
{
/// <summary>
/// Получить запись справочника по имени процесса.
/// </summary>
/// <param name="processName">Имя процесса DCI.</param>
/// <returns>Запись справочника "Вид межсистемного процесса".</returns>
[Public, Remote(IsPure = true)]
public static IDciProcessKind GetProcessKindByName(string processName)
{
var result = DciProcessKinds.GetAll().Where(x => x.Status == Status.Active
&& x.Name == processName)
.FirstOrDefault();
return result;
}
/// <summary>
/// Проверить существование записи справочника по имени процесса и имени сообщения.
/// </summary>
/// <param name="processName">Имя процесса DCI.</param>
/// <param name="messageName">Имя сообщения DCI.</param>
/// <returns>Пустая строка или текст ошибки.</returns>
[Public, Remote(IsPure = true)]
public static string CheckProcessKindExists(string processName, string messageName)
{
var process = GetProcessKindByName(processName);
if (process == null)
return DirRX.DciCore.DciProcessKinds.Resources.NotFoundProcessKindByProcessNameFormat(processName);
var messageRow = process.Messages.Where(x => x.Name == messageName).FirstOrDefault();
if (messageRow == null)
return DirRX.DciCore.DciProcessKinds.Resources.NotFoundMessageInProcessKindFormat(processName, messageName);
return string.Empty;
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore
{
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<queries>
</queries>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore.Server
{
partial class DciSettingFunctions
{
/// <summary>
/// Создать запись справочника "Настройки DCI".
/// </summary>
/// <returns>Запись справочника "Настройки DCI".</returns>
[Public, Remote]
public static IDciSetting CreateDciSetting()
{
return DciSettings.Create();
}
/// <summary>
/// Получить запись справочника "Настройки DCI".
/// </summary>
/// <returns>Запись справочника "Настройки DCI".</returns>
[Public, Remote(IsPure = true)]
public static IDciSetting GetDciSettings()
{
return DciSettings.GetAll().FirstOrDefault();
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Directum.Dci.Sdk;
using Directum.Dci.Common;
using Directum.Dci.Entities;
namespace DirRX.DciCore.Server
{
public class ModuleAsyncHandlers
{
/// <summary>
/// Отправка сообщений в DCI с изменениями с момента последней синхронизации (в разрезе типа сущности).
/// Запуск АО инициирует ФП.
/// </summary>
/// <param name="args">Параметры вызова асинхронного обработчика.</param>
public virtual void SendProcessMessage(DirRX.DciCore.Server.AsyncHandlerInvokeArgs.SendProcessMessageInvokeArgs args)
{
var handlerName = "SendProcessMessage"; // Имя АО, для логов.
var idProcessKind = args.IdProcessKind;
var processName = args.NameProcessKind;
var startSyncDate = Calendar.Now;
Logger.Debug(string.Format("{0}. {1} (ИД={2}). Начало отправки изменений во внешнюю систему.", handlerName, processName, idProcessKind));
var errors = new List<string>();
try
{
var processKind = DciProcessKinds.Get(idProcessKind);
var entityTypeGuid = processKind.EntityTypeGUID;
var lastSyncDate = processKind.LastOutSyncDate.Value;
processName = processKind.Name;
var setting = Functions.DciSetting.GetDciSettings();
if (setting == null)
throw AppliedCodeException.Create(DirRX.DciCore.Resources.DciSettingsNotFound);
var processFactory = Functions.Module.GetProcessFactory(setting);
// TODO нужна адаптация кода под поиск изменения документов и сквозных процессов.
var changedDatabookRecordIds = Functions.Module.GetChangedDatabookRecords(entityTypeGuid, lastSyncDate, startSyncDate);
Logger.Debug(string.Format("{0}. {1} (ИД={2}). Изменений найдено: {3}", handlerName, processName, idProcessKind, changedDatabookRecordIds.Count()));
foreach (var entityId in changedDatabookRecordIds)
{
try
{
Logger.Debug(string.Format("{0}. {1} (ИД={2}). Обработка записи с ИД {3}.", handlerName, processName, idProcessKind, entityId));
var entity = Functions.Module.GetDatabookEntityById(entityId, entityTypeGuid);
var messageName = Functions.Module.GetDCIMessageNameByEntity(entity);
// TODO вынести проверку из цикла
// Выполнить проверку существования настройки для процесса и сообщения.
var checkResult = Functions.DciProcessKind.CheckProcessKindExists(processName, messageName);
if (!string.IsNullOrWhiteSpace(checkResult))
throw AppliedCodeException.Create(checkResult);
var dciMessage = Functions.Module.CreateMessage(processName, messageName, string.Empty, entityId, entityTypeGuid, processFactory, setting, true);
// TODO Есть небольшое дублирование вычисления, глобальный ИД уже хранится в process.Params "RecordGUID", но что быстрее - получить из extLinks или из параметров?
var externalSystemID = dciMessage.Receiver;
var entityLink = Functions.Module.GetExternalEntityLink(entityId, entityTypeGuid, externalSystemID);
var globalEntityId = entityLink.ExtEntityId.ToString();
// TODO не создавать ссылку если ее еще нет и происходит удаление записи?
// if (messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion && entityLink.IsDeleted != true)
// {
// entityLink.IsDeleted = true;
// entityLink.Save();
// }
dciMessage = Functions.Module.PrepareDCIMessageAttach(dciMessage, entity, globalEntityId);
// TODO Извлечь из вложения ведущее сообщение. Добавить зависимость от ведущего.
//Отправка сообщения DCI.
try
{
dciMessage.Send();
}
catch (Exception ex)
{
errors.Add(string.Format("Ошибка при отправке сообщения DCI. {0}\n{1}", ex.Message, ex.StackTrace));
}
}
catch (Exception ex)
{
errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
}
}
if (!errors.Any())
{
processKind.LastOutSyncDate = startSyncDate;
processKind.Save();
}
}
catch (Exception ex)
{
errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
}
if (errors.Any())
{
try
{
Logger.Error(string.Format("{0}. {1} (ИД={2}). При отправке изменений во внешнюю систему произошли ошибки: {3}", handlerName, processName, idProcessKind, string.Join(Environment.NewLine, errors)));
// TODO возможен спам задачами.
// TODO сделать новую функцию SendNotificatiobAboutSendErrors на основе SendNotificatiobAboutReceiveErrors
// Functions.Module.SendNotificatiobAboutReceiveErrors(errors, processName, processGUID, messageName, messageGUID);
}
catch (Exception ex)
{
Logger.Error(string.Format("{0}. Ошибка при отправке уведомления об ошибках.", handlerName), ex);
}
}
Logger.Debug(string.Format("{0}. {1} (ИД={2}). Конец отправки изменений во внешнюю систему.", handlerName, processName, idProcessKind));
}
/// <summary>
/// Прием сообщения из DCI.
/// Запуск АО инициирует плагин DCI.
/// </summary>
/// <param name="args">Параметры вызова асинхронного обработчика.</param>
public virtual void ReceiveProcessMessage(DirRX.DciCore.Server.AsyncHandlerInvokeArgs.ReceiveProcessMessageInvokeArgs args)
{
var handlerName = "ReceiveProcessMessage"; // Имя АО, для логов.
var messageGUID = args.MessageGUID;
var messageName = string.Empty;
var processGUID = string.Empty;
var processName = string.Empty;
var messageFolderPath = string.Empty;
Logger.Debug(string.Format("{0}. {1}. Начало обработки сообщения.", handlerName, messageGUID));
var errors = new List<string>();
try
{
var setting = Functions.DciSetting.GetDciSettings();
if (setting == null)
throw AppliedCodeException.Create(DirRX.DciCore.Resources.DciSettingsNotFound);
var processFactory = Functions.Module.GetProcessFactory(setting);
var message = processFactory.GetProcessMessageByGlobalId(messageGUID);
if (message == null)
throw AppliedCodeException.Create(DirRX.DciCore.Resources.NotFoundMessageByGlobalIdFormat(messageGUID));
var process = processFactory.GetProcessByMessage(message);
if (process == null)
throw AppliedCodeException.Create(DirRX.DciCore.Resources.NotFoundProcessByMessageFormat(messageGUID));
messageName = message.Name;
processGUID = process.GlobalId;
processName = process.ProcessKindName;
messageFolderPath = message.FolderName;
var messageError = string.Empty;
try
{
// Выполнить проверку существования настройки для процесса и сообщения.
var checkResult = Functions.DciProcessKind.CheckProcessKindExists(processName, messageName);
if (!string.IsNullOrWhiteSpace(checkResult))
throw AppliedCodeException.Create(checkResult);
Logger.Debug(string.Format("{0}. Процесс: {1} ({2}). Сообщение: {3} ({4}). Подбор обработчика для сообщения.",
handlerName, processGUID, processName, messageGUID, messageName));
// Найти и выполнить обработчик для сообщения.
messageError = Functions.Module.ProcessDCIMessage(message);
}
catch (Exception ex)
{
messageError = DirRX.DciCore.Resources.ReceiveHandlerErrorFormat(ex.Message, ex.StackTrace);
}
var stopProcess = false;
if (string.IsNullOrEmpty(messageError))
{
message.MarkAsReceived();
stopProcess = true;
}
else
{
// При блокировке записи, отложить обработку сообщения.
if (messageError == Constants.Module.ErrorType.EntityIsLocked)
{
message.MessageState = MessageState.Pending;
message.PostponeProcessing(60); // TODO в секундах. можно вынести в настройки
// TODO добавить ограничение по количеству попыток обработки
}
else
{
message.MarkAsErroneous(messageError);
var messageLink = string.Empty;
if (setting != null)
messageLink = Functions.Module.GetHyperlinkToDciProcess(setting, processGUID);
var errorText = DirRX.DciCore.Resources.ReceiveErrorDetailTextFormat(processName, processGUID, messageName, messageGUID, messageFolderPath, messageLink, messageError);
errors.Add(errorText);
}
}
message.Save();
// Остановить процесс по синхронизации данных.
if (stopProcess)
Functions.Module.StopSynchronizationProcess(process);
}
catch (Exception ex)
{
errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
}
if (errors.Any())
{
try
{
Logger.Error(string.Format("{0}. {1}. При обработке входящего сообщения DCI произошла ошибка. {2}", handlerName, messageGUID, string.Join(Environment.NewLine, errors)));
// TODO возможен спам задачами. Отправку уведомления в системе можно заменить на ФП по периодической проверке сообщений в состоянии Ошибка.
Functions.Module.SendNotificatiobAboutReceiveErrors(errors, processName, processGUID, messageName, messageGUID);
}
catch (Exception ex)
{
Logger.Error(string.Format("{0}. Ошибка при отправке уведомления об ошибках.", handlerName), ex);
}
}
Logger.Debug(string.Format("{0}. {1}. Конец обработки сообщения.", handlerName, messageGUID));
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Server
{
partial class DciCoreHandlers
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Sungero.Domain.Initialization;
namespace DirRX.DciCore.Server
{
public partial class ModuleInitializer
{
public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
{
CreateDatabookRecords();
}
/// <summary>
/// Создание записей справочника.
/// </summary>
public static void CreateDatabookRecords()
{
var processKind = DciProcessKinds.Null;
#region Процесс DCICheckLink.
processKind = CreateProcessKind(Constants.DciProcessKind.DCICheckLinkProcess.RecordGUID,
Constants.DciProcessKind.DCICheckLinkProcess.Name,
Constants.DciProcessKind.DCICheckLinkProcess.Note,
Constants.DciProcessKind.DCICheckLinkProcess.Description,
DciCore.DciProcessKind.ProcessType.Process,
Guid.Empty,
Calendar.SqlMinValue);
AddProcessMessage(processKind,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.RowGUID,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name,
Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Note);
AddProcessMessage(processKind,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.RowGUID,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Name,
Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Note);
#endregion
}
/// <summary>
/// Создание записи в справочнике Виды межсистемных процессов.
/// </summary>
/// <param name="guid">Случайный GUID, ключевое поле записи - позволяет не привязываться к имени процесса и менять его.</param>
/// <param name="processName">Имя процесса.</param>
/// <param name="note">Примечания (заполняется один раз - при создании записи).</param>
/// <param name="description">Описание межсистемного процесса.</param>
/// <param name="processType">Тип процесса - синхронизация или сквозной бизнес-процесс.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <param name="startSyncDate">Дата и время, от которой выполняется поиск измененных сущностей.</param>
/// <returns>Запись справочника Виды межсистемных процессов.</returns>
[Public]
public static IDciProcessKind CreateProcessKind(Guid guid, string processName, string note, string description, Enumeration processType, Guid entityTypeGuid, DateTime startSyncDate)
{
var record = DciProcessKinds.GetAll(x => x.GUID == guid.ToString()).FirstOrDefault();
if (record == null)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Создание записи для процесса {0}.", processName));
record = DciProcessKinds.Create();
record.GUID = guid.ToString();
record.Note = note;
}
if (processName != record.Name)
record.Name = processName;
if (description != record.Description)
record.Description = description;
if (processType != record.ProcessType)
record.ProcessType = processType;
if (entityTypeGuid.ToString() != record.EntityTypeGUID)
record.EntityTypeGUID = entityTypeGuid.ToString();
if (startSyncDate != record.LastOutSyncDate)
record.LastOutSyncDate = startSyncDate;
if (record.State.IsChanged)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение записи для процесса {0}.", processName));
record.Save();
}
return record;
}
/// <summary>
/// Заполнение таблицы Сообщения в записи в справочника Виды межсистемных процессов.
/// </summary>
/// <param name="processKind">Запись справочника Виды межсистемных процессов.</param>
/// <param name="rowGUID">Случайный GUID, ключевое поле в таблице - позволяет не привязываться к имени сообщения и менять его.</param>
/// <param name="messageName">Имя сообщения.</param>
/// <param name="messageNote">Примечание.</param>
[Public]
public static void AddProcessMessage(IDciProcessKind processKind, Guid rowGUID, string messageName, string messageNote)
{
var row = processKind.Messages.Where(x => x.RowGUID == rowGUID.ToString()).FirstOrDefault();
if (row == null)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Добавление сообщения {0} для процесса {1}.", messageName, processKind.Name));
row = processKind.Messages.AddNew();
row.RowGUID = rowGUID.ToString();
}
if (messageName != row.Name)
row.Name = messageName;
if (messageNote != row.Note)
row.Note = messageNote;
if (processKind.State.IsChanged)
{
InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение сообщения {0} для процесса {1}.", messageName, processKind.Name));
processKind.Save();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Server
{
public class ModuleJobs
{
/// <summary>
/// ФП запускает АО для отправки изменений из RX в DCI.
/// </summary>
public virtual void SendEntitiesToDciSynchronization()
{
var activeProcessKinds = DciProcessKinds.GetAll()
.Where(x => x.Status == Sungero.CoreEntities.DatabookEntry.Status.Active)
.Where(x => x.ProcessType == DciCore.DciProcessKind.ProcessType.DataSync || x.ProcessType == DciCore.DciProcessKind.ProcessType.DocSync);
foreach (var processKind in activeProcessKinds)
{
var asyncHandler = DciCore.AsyncHandlers.SendProcessMessage.Create();
asyncHandler.IdProcessKind = processKind.Id;
asyncHandler.NameProcessKind = processKind.Name;
asyncHandler.ExecuteAsync();
}
// TODO нет обработки ошибок
// TODO нет логов
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<queries>
</queries>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using Directum.Dci.Sdk;
using Directum.Dci.Common;
namespace DirRX.DciCore.Server
{
public class ModuleFunctions
{
/// <summary>
/// Запустить асинхронный обработчик для обработки входящего сообщения DCI.
/// </summary>
/// <param name="processMessageGlobalId">GUID сообщения DCI.</param>
/// <returns>Текст ошибки или строка "Success".</returns>
[Public(WebApiRequestType = RequestType.Post)]
public string EnqueueDciMessage(string processMessageGlobalId)
{
var logPrefix = string.Format("EnqueueDciMessageHandler. Received DCI message GUID = {0}", processMessageGlobalId);
try
{
Logger.DebugFormat("{0}. Start RX async handler.", logPrefix);
var handler = DirRX.DciCore.AsyncHandlers.ReceiveProcessMessage.Create();
handler.MessageGUID = processMessageGlobalId;
handler.ExecuteAsync();
Logger.DebugFormat("{0}. The end of the function.", logPrefix);
// DCI не принимает string.Empty в качестве результата.
return "Success";
}
catch (Exception ex)
{
var errorMessage = string.Format("{0}. The ended with error.", logPrefix);
Logger.Error(errorMessage, ex);
return errorMessage;
}
}
#region Подбор обработчиков по switch-case
/// <summary>
/// Обработать входящее сообщение из DCI.
/// </summary>
/// <param name="messageGUID">GUID сообщения DCI.</param>
/// <returns>Текст ошибки при обработке сообщения из DCI.</returns>
public virtual string ProcessDCIMessage(Directum.Dci.Sdk.IProcessMessage message)
{
var processName = message.ProcessKindName;
var messageName = message.Name;
#region DCICheckLink.
if (processName == Constants.DciProcessKind.DCICheckLinkProcess.Name)
{
switch (messageName)
{
case Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name:
return ProcessPingDciMessage(message);
case Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Name:
return ProcessPongDciMessage(message);
default:
break;
}
}
#endregion
return DirRX.DciCore.Resources.NotFoundReceiveHandlerByProcessFormat(messageName, processName);
}
/// <summary>
/// Подобрать имя исходящего сообщения для сущности.
/// </summary>
/// <param name="entity">Сущность.</param>
/// <returns>Имя сообщения.</returns>
[Public]
public virtual string GetDCIMessageNameByEntity(Sungero.CoreEntities.IDatabookEntry entity)
{
// Реализован самый простой способ вычислить имя сообщения - изменена/удалена. Данный фрагмент используется по умолчанию для всех типов сущности.
var messageName = string.Empty;
if (entity == null)
messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion;
else
messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordChanges;
return messageName;
#region Шаблон кода для реализации функции в перекрытии.
//// var messageName = string.Empty;
//// if (<Репозиторий типа сущности>.Is(entity))
//// {
/// // Поиск нужной операции в истории типа сущности и подбор имени сообщения.
/// return messageName
//// }
//// return base.GetDCIMessageNameByEntity(entity);
#endregion
}
/// <summary>
/// Подготовить вложение для исходящего сообщения DCI.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <param name="entity">Сущность.</param>
/// <param name="globalEntityId">Глобальный ИД сущности.</param>
/// <returns>Обновленное сообщение DCI.</returns>
public virtual Directum.Dci.Sdk.IProcessMessage PrepareDCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, Sungero.CoreEntities.IDatabookEntry entity, string globalEntityId)
{
var processName = message.ProcessKindName;
var messageName = message.Name;
#region Шаблон кода для реализации функции в перекрытии.
//// var processName = message.ProcessKindName;
//// var messageName = message.Name;
////
//// switch (processName)
//// {
//// #region <Имя типа справочника>.
//// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
//// switch (messageName)
//// {
//// case Constants.DciProcessKind.DefaultDciMessageName.RecordChanges:
//// return Fill<Имя типа сущности>DCIMessageAttach(message, entity, globalEntityId);
////
//// case Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion:
//// return CreateDeletionDCIMessageAttach(message, globalEntityId);
////
//// default:
//// break;
//// }
//// break;
//// #endregion
//// }
////
//// return base.PrepareDCIMessageAttach(message, entity, globalEntityId);
#endregion
throw new AppliedCodeException(DirRX.DciCore.Resources.NotFoundPrepareHandlerByProcessFormat(messageName, processName));
}
#endregion
#region API DCI.
/// <summary>
/// Получить фабрику работы с процессами DCI.
/// </summary>
/// <returns>Фабрика.</returns>
public Directum.Dci.Sdk.ProcessFactory GetProcessFactory()
{
var setting = Functions.DciSetting.GetDciSettings();
return GetProcessFactory(setting);
}
/// <summary>
/// Получить фабрику работы с процессами DCI.
/// </summary>
/// <param name="setting">Запись справочника "Настройки DCI".</param>
/// <returns>Фабрика.</returns>
public Directum.Dci.Sdk.ProcessFactory GetProcessFactory(IDciSetting setting)
{
return ProcessFactory.GetFactory(setting.ExchangeFolder, setting.AdapterServiceUrl);
}
/// <summary>
/// Получить процесс по сообщению DCI.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <returns>Процесс DCI.</returns>
public Directum.Dci.Sdk.IProcess GetProcessByMessage(Directum.Dci.Sdk.IProcessMessage message)
{
var factory = GetProcessFactory();
return factory.GetProcessByMessage(message);
}
/// <summary>
/// Получить глобальный ИД предыдущего отправленного сообщения по процессу.
/// </summary>
/// <param name="entityGlobalId">Глобальный ИД объекта.</param>
/// <param name="processName"></param>
/// <param name="externalSystemID">Идентификатор внешней системы.</param>
/// <returns>Глобальный ИД ведущего сообщения</returns>
public string GetLastSentMessageGloblalId(string entityGlobalId, string processName, string externalSystemID)
{
var processFactory = GetProcessFactory();
var lastSentMessageGlobalId = string.Empty;
if (string.IsNullOrEmpty(entityGlobalId))
return lastSentMessageGlobalId;
// Найти последнее отправленное сообщение по процессу, для указания его ведущим.
var processParams = new ObjectDictionary();
processParams.SetVar("RecordGUID", entityGlobalId);
var foundProcesses = processFactory.GetProcessesByParameters(processParams);
if (foundProcesses.Count == 0)
return lastSentMessageGlobalId;
while (!foundProcesses.EOF)
{
var process = (Directum.Dci.Sdk.IProcess)foundProcesses.Value;
if (process.ProcessKindName == processName)
{
var lastSentMessage = process.GetLastSentDependentMessage(externalSystemID);
if (lastSentMessage != null)
{
// Делам связь с предыдущим сообщением не зависимо от его состояния (Ошибка/Отправлено), так как неизвестно состояние сообщения на принимающей стороне.
lastSentMessageGlobalId = lastSentMessage.GlobalId;
//break;
}
else
{
// HACK в случае когда метод GetLastSentDependentMessage ничего не вернул, выполняем поиск единственного отправленного сообщения.
// HACK как альтернатива поиску - помечать все сообщения как имеющее зависимость (isDepended), но при этом не заполнять ведущее сообщение (LeaderMessageGlobalId) - тогда GetLastSentDependentMessage вернет последнее отправленное сообщение.
var allMessages = process.GetAllMessages();
if (allMessages.Count == 1)
{
var firstMessage = (Directum.Dci.Sdk.IProcessMessage)allMessages.Value;
if (firstMessage != null)
lastSentMessageGlobalId = firstMessage.GlobalId;
//break;
}
}
}
foundProcesses.Next();
}
return lastSentMessageGlobalId;
}
/// <summary>
/// Создать сообщение.
/// </summary>
/// <param name="processName">Имя процесса.</param>
/// <param name="messageName">Имя сообщения.</param>
/// <param name="processGlobalId">GUID процесса.</param>
/// <param name="entityId">ИД синхронизируемого объекта.</param>
/// <param name="objectTypeGlobalId">GUID типа синхронизируемого объекта.</param>
/// <param name="processFactory">Фабрика DCI.</param>
/// <param name="setting">Запись справочника "Настройки DCI".</param>
/// <param name="stopWhenConfirmed">Признак автоматического закрытия процесса при подтверждении всех отправленных сообщений.</param>
/// <returns>Сообщение.</returns>
public Directum.Dci.Sdk.IProcessMessage CreateMessage(string processName, string messageName,
string processGlobalId, int entityId,
string objectTypeGlobalId, Directum.Dci.Sdk.ProcessFactory processFactory,
IDciSetting setting, bool stopWhenConfirmed)
{
// Определить процесс по синхронизируемому объекту
var entityGlobalId = string.Empty;
var lastSentMessageGlobalId = string.Empty;
var isDepended = false;
if (entityId > int.MinValue)
{
// // TODO доп. действия для документов. Реализовать при проработке отправки сообщений.
// // // Для документов переопределить гуид типа сущности.
// // if (processName == "DocumentSynchronization")
// // {
// // if (string.IsNullOrEmpty(objectTypeGlobalId))
// // {
// // var document = Content.ElectronicDocuments.Get(entityId);
// // var meta = document.GetEntityMetadata();
// // objectTypeGlobalId = meta.NameGuid.ToString();
// // }
// // }
// TODO вынести из функции
var entityLink = GetExternalEntityLink(entityId, objectTypeGlobalId, setting.ExternalSystemID);
entityGlobalId = entityLink.ExtEntityId.ToString();
lastSentMessageGlobalId = GetLastSentMessageGloblalId(entityGlobalId, processName, setting.ExternalSystemID);
if (!string.IsNullOrEmpty(lastSentMessageGlobalId))
{
isDepended = true;
// По ведущему сообщению получить GUID процесса.
var leadMessage = processFactory.GetProcessMessageByGlobalId(lastSentMessageGlobalId);
processGlobalId = leadMessage.ProcessGlobalId;
}
}
// Создать новый процесс или использовать существующий.
var process = string.IsNullOrEmpty(processGlobalId) ? processFactory.CreateProcess(processName) : processFactory.GetProcessByGlobalId(processGlobalId);
// Указать GUID синхронизируемого объекта в параметрах процесса.
// TODO вынести RecordGUID в константы. Реализовать при проработке отправки сообщений.
if (!string.IsNullOrEmpty(entityGlobalId) && process.Params.FindItem("RecordGUID") == null)
process.Params.SetVar("RecordGUID", entityGlobalId);
process.StopWhenConfirmed = stopWhenConfirmed;
process.Save();
var message = process.CreateProcessMessage(messageName, setting.SystemID, setting.ExternalSystemID, string.Empty, isDepended);
if (isDepended)
message.LeaderMessageGlobalId = lastSentMessageGlobalId;
message.Save();
return message;
}
/// <summary>
/// Остановить межсистемный процесс по синхронизации.
/// </summary>
/// <param name="process">Процесс DCI.</param>
public void StopSynchronizationProcess(Directum.Dci.Sdk.IProcess process)
{
var processKind = Functions.DciProcessKind.GetProcessKindByName(process.ProcessKindName);
// Если тип процесса - синхронизация (справочников/документов), то завершить процесс.
if (processKind.ProcessType == DciCore.DciProcessKind.ProcessType.DataSync || processKind.ProcessType == DciCore.DciProcessKind.ProcessType.DocSync)
{
Logger.Debug(string.Format("Процесс {0}. Завершение процесса синхронизации.", process.GlobalId));
try
{
var endDate = process.EndDate;
if (endDate != null && !string.IsNullOrWhiteSpace(endDate.ToString()))
{
Logger.Debug(string.Format("Процесс {0}. Процесс уже завершен. Дата завершения: {1}", process.GlobalId, endDate));
}
else
{
process.Stop();
Logger.Debug(string.Format("Процесс {0}. Процесс завершен.", process.GlobalId));
}
}
catch (Exception ex)
{
Logger.Error(string.Format("Процесс {0}. Ошибка завершения процесса.\n{1}\n{2}", process.GlobalId, ex.Message, ex.StackTrace));
}
}
}
#endregion
#region API для ExternalEntityLinks.
/// <summary>
/// Получить запись справочника "Ссылки внешней системы" для экземпляра сущности.
/// </summary>
/// <param name="entityId">ИД сущности.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <param name="externalSystemID">Идентификатор внешней системы.</param>
/// <returns>Запись справочника "Ссылки внешней системы" для экземпляра сущности.</returns>
[Public, Remote]
public Sungero.Commons.IExternalEntityLink GetExternalEntityLink(int entityId, string entityTypeGuid, string externalSystemID)
{
// TODO Использовать ли поле ExtSystemId в ExternalEntityLinks для нескольких внешних систем. Проработать когда будет несколько систем.
var externalLink = Sungero.Commons.ExternalEntityLinks.GetAll()
.Where(l => l.EntityId == entityId && l.EntityType == entityTypeGuid)
.FirstOrDefault();
if (externalLink == null)
{
var newGuid = Guid.NewGuid().ToString();
externalLink = SetExternalEntityLinkGuid(entityId, entityTypeGuid, externalSystemID, newGuid);
}
return externalLink;
}
/// <summary>
/// Установить GUID внешней ссылки для экземпляра сущности.
/// </summary>
/// <param name="entityId">Ид сущности.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <param name="externalSystemID">Идентификатор внешней системы.</param>
/// <param name="externalEntityGuid">Внешний GUID сущности.</param>
[Public, Remote]
public Sungero.Commons.IExternalEntityLink SetExternalEntityLinkGuid(int entityId, string entityTypeGuid, string externalSystemID, string externalEntityGuid)
{
var externalLink = Sungero.Commons.ExternalEntityLinks.Create();
externalLink.EntityId = entityId;
externalLink.EntityType = entityTypeGuid;
externalLink.ExtSystemId = externalSystemID;
externalLink.ExtEntityId = Guid.Parse(externalEntityGuid).ToString();
externalLink.Save();
return externalLink;
}
/// <summary>
/// Получить все записи справочника по глобальному идентификатору сущности.
/// </summary>
/// <param name="guid">Глобальный идентификатор.</param>
/// <returns>Коллекция сущностей или null.</returns>
[Public, Remote(IsPure = true)]
public IQueryable<Sungero.Commons.IExternalEntityLink> GetAllEntityLinksByGuid(string guid)
{
var globalId = Guid.Parse(guid).ToString();
// TODO Использовать ли поле ExtSystemId в ExternalEntityLinks для нескольких внешних систем.Проработать когда будет несколько систем.
var externalLinks = Sungero.Commons.ExternalEntityLinks.GetAll()
.Where(x => x.ExtEntityId == globalId);
return externalLinks;
}
/// <summary>
/// Получить запись справочника по глобальному идентификатору сущности.
/// </summary>
/// <param name="guid">Глобальный идентификатор.</param>
/// <returns>Сущность или null.</returns>
[Public, Remote(IsPure = true)]
public Sungero.Commons.IExternalEntityLink GetEntityLinkByGuid(string guid)
{
if (string.IsNullOrWhiteSpace(guid))
return null;
return GetAllEntityLinksByGuid(guid).FirstOrDefault();
}
/// <summary>
/// Получить ИД сущности по глобальному идентификатору сущности.
/// </summary>
/// <param name="guid">Глобальный идентификатор.</param>
/// <returns>ИД сущности или 0.</returns>
[Public, Remote(IsPure = true)]
public int GetEntityIdByGuid(string guid)
{
var externalLink = GetEntityLinkByGuid(guid);
return externalLink != null ? externalLink.EntityId.Value : 0;
}
#endregion
#region Функции по преобразованию даты.
/// <summary>
/// Преобразовать строку в дату.
/// </summary>
/// <param name="value">Строка формата ДД.ММ.ГГГГ (наличие ведущего нуля не принципиально).</param>
/// <returns>Дата-время или null.</returns>
/// <remarks>Генерирует исключение в случае ошибки преобразования.</remarks>
[Public]
public virtual DateTime? StringToDate(string value)
{
if (string.IsNullOrWhiteSpace(value))
return null;
var util = new Directum.Dci.Sdk.Utils();
return util.StringToDate(value);
}
/// <summary>
/// Преобразовать строку в дату со временем.
/// </summary>
/// <param name="value">Строка формата ДД.ММ.ГГГГ ЧЧ:ММ:СС.мс (наличие ведущего нуля не принципиально).</param>
/// <returns>Дата-время или null.</returns>
/// <remarks>Генерирует исключение в случае ошибки преобразования.</remarks>
[Public]
public virtual DateTime? StringToDateTime(string value)
{
if (string.IsNullOrWhiteSpace(value))
return null;
var util = new Directum.Dci.Sdk.Utils();
return util.StringToDateTime(value);
}
/// <summary>
/// Преобразовать дату в строку.
/// </summary>
/// <param name="value">Дата-время.</param>
/// <returns>Строка формата ДД.ММ.ГГГГ.</returns>
[Public]
public virtual string DateToDciString(DateTime value)
{
var util = new Directum.Dci.Sdk.Utils();
return util.DateToString(value);
}
/// <summary>
/// Преобразовать дату со временем в строку.
/// </summary>
/// <param name="value">Дата-время.</param>
/// <returns>Строка формата ДД.ММ.ГГГГ ЧЧ:ММ:СС.мс.</returns>
[Public]
public virtual string DateTimeToDciString(DateTime value)
{
var util = new Directum.Dci.Sdk.Utils();
return util.DateTimeToString(value);
}
#endregion
#region Прочие функции.
/// <summary>
/// Отправить уведомление об ошибках.
/// </summary>
/// <param name="errors">Список ошибок.</param>
/// <param name="processName">Имя процесса DCI.</param>
/// <param name="processGUID">GUID процесса DCI.</param>
/// <param name="messageName">Имя сообщения DCI.</param>
/// <param name="messageGUID">GUID сообщения DCI.</param>
[Public]
public virtual void SendNotificatiobAboutReceiveErrors(System.Collections.Generic.IList<string> errors, string processName, string processGUID, string messageName, string messageGUID)
{
var task = Sungero.Workflow.SimpleTasks.Create();
var step = task.RouteSteps.AddNew();
step.AssignmentType = Sungero.Workflow.SimpleTaskRouteSteps.AssignmentType.Notice;
step.Performer = Roles.Administrators; // TODO отправлять на спец роль. например Roles.GetAll(r => r.Sid == PublicConstants.Module.RoleGuid.DCIResponsible).First();
task.Subject = DirRX.DciCore.Resources.ReceiveErrorTaskSubjectFormat(messageName, processName);
task.ActiveText = DirRX.DciCore.Resources.ReceiveErrorTaskTextFormat(string.Join(Environment.NewLine, errors));
task.NeedsReview = false;
task.Start();
}
/// <summary>
/// Найти запись справочника системы по ИД.
/// </summary>
/// <param name="entityId">ИД сущности.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <returns>Сущность или null.</returns>
[Public, Remote(IsPure = true)]
public virtual Sungero.CoreEntities.IDatabookEntry GetDatabookEntityById(int entityId, string entityTypeGuid)
{
// HACK универсальный код по поиску записи справочника.
var targetEntity = Sungero.CoreEntities.Databooks.Null;
var entityList = Sungero.CoreEntities.Databooks.GetAll(e => e.Id == entityId);
// В linq-запросе не работает вызов GetType(), поэтому дальнейший перебор в цикле.
foreach (var entity in entityList)
{
var entityType = entity.GetType();
if (entityType != null)
{
var guid = Sungero.Domain.Shared.TypeExtension.GetTypeGuid(entityType);
if (guid.ToString().ToLower() == entityTypeGuid.ToLower())
{
if (targetEntity == null)
targetEntity = entity;
else
// Это исключение никогда не должно сработать, но если оно случится - нужно пересмотреть подход к поиску сущностей.
throw AppliedCodeException.Create(DirRX.DciCore.Resources.MultipleEntitiesFoundToDeleteFormat(entityId, entityTypeGuid));
}
}
}
return targetEntity;
}
/// <summary>
/// Получить список измененных записей справочника за период.
/// </summary>
/// <param name="baseGuid">Базовый GUID типа сущности.</param>
/// <param name="dateBegin">Дата начала изменений.</param>
/// <param name="dateEnd">Дата конца изменений.</param>
/// <returns>Список ИД измененных записей справочника.</returns>
[Public]
public virtual IQueryable<int> GetChangedDatabookRecords(string baseGuid, DateTime dateBegin, DateTime dateEnd)
{
// HACK универсальный код по поиску в истории записей справочника.
var actions = new List<Enumeration?> {
Sungero.CoreEntities.History.Action.Create,
Sungero.CoreEntities.History.Action.Update,
Sungero.CoreEntities.History.Action.Delete};
return Sungero.CoreEntities.DatabookHistories.GetAll()
.Where(h => h.EntityType.ToString() == baseGuid
&& h.HistoryDate >= dateBegin
&& h.HistoryDate <= dateEnd
&& actions.Contains(h.Action))
.Select(h => h.EntityId.Value)
.Distinct();
}
#endregion
#region Шаблоны кода.
#region Шаблон кода для обработчика приема.
//// /// <summary>
//// /// Обработать сообщение по изменению "Имя типа сущности".
//// /// </summary>
//// /// <param name="message">Сообщение DCI.</param>
//// /// <returns>Пустая строка или текст ошибки.</returns>
//// public string Process<Имя типа сущности>DCIMessage(Directum.Dci.Sdk.IProcessMessage message)
//// {
//// /// -------------------------------------------------
//// /// Подготовка к обработке сообщения.
//// /// -------------------------------------------------
////
//// // Получить данные из сообщения DCI.
//// var data = message.LoadData("MainRecord");
//// var globalId = Guid.Parse(data.ValueByName("GUID").ToString()).ToString();
//// var entityLink = GetEntityLinkByGuid(globalId);
////
//// var entity = entityLink != null ? <Репозиторий типа сущности>.Get(entityLink.EntityId.Value) : <Репозиторий типа сущности>.Create();
////
//// // Если запись заблокирована, отправить сообщение повторно в очередь.
//// if (Locks.GetLockInfo(entity).IsLocked)
//// return Constants.Module.ErrorType.EntityIsLocked;
////
//// /// -------------------------------------------------
//// /// Обновление записи справочника.
//// /// -------------------------------------------------
//// /// Для преобразования строковых значений в типы .net использовать функции:
//// /// StringToDouble - Преобразовать строку в double.
//// /// StringToInt - Преобразовать строку в целое число.
//// /// StringToDate - Преобразовать строку в дату.
//// /// StringToDateTime - Преобразовать строку в дату со временем.
//// /// Base64ToString - Раскодировать строку из base64.
//// /// и другие функции модуля DciCore.
////
//// // Указать GUID базового типа сущности.
//// var entityTypeGuid = <GUID типа сущности>;
//// var name = data.ValueByName("Наименование").ToString();
//// entity.Name = name;
//// entity.Save();
////
//// /// -------------------------------------------------
//// /// Завершение приема сообщения.
//// /// -------------------------------------------------
////
//// if (entityLink == null)
//// SetExternalEntityLinkGuid(entity.Id, entityTypeGuid, message.Sender, globalId);
////
//// return string.Empty;
//// }
#endregion
#region Шаблон кода для обработчика отправки.
//// /// <summary>
//// /// Заполнить сообщение DCI информацией для обновления "Имя типа сущности".
//// /// </summary>
//// /// <param name="message">Сообщение DCI.</param>
//// /// <param name="entity">Сущность.</param>
//// /// <param name="globalEntityId">Глобальный ИД сущности.</param>
//// /// <returns>Обновленное сообщение DCI.</returns>
//// public virtual Directum.Dci.Sdk.IProcessMessage Fill<Имя типа сущности>DCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, Sungero.CoreEntities.IDatabookEntry entity, string globalEntityId)
//// {
//// /// -------------------------------------------------
//// /// Подготовка к формированию сообщения.
//// /// -------------------------------------------------
//// var attach = new ObjectDictionary();
//// attach.Add("GUID", globalEntityId);
////
//// var record = <Репозиторий типа сущности>.As(entity);
////
//// /// -------------------------------------------------
//// /// Заполнение сообщения свойствами записи справочника.
//// /// -------------------------------------------------
//// /// Для преобразования в строку можно использовать функции:
//// /// ConvertRXStatusToD5Status - Преобразовать статус записи RX в состояние записи D5.
//// /// StringToBase64 - Закодировать строку из base64.
//// /// и другие функции модуля DciCore.
//// attach.Add("Наименование", record.Name);
//// attach.Add("Состояние", DciCore.PublicFunctions.Module.ConvertD5StatusToRXStatus(record.Status));
////
//// /// -------------------------------------------------
//// /// Завершение формирования сообщения.
//// /// -------------------------------------------------
//// message.AttachData(attach, "MainRecord");
//// message.Save();
//// return message;
//// }
#endregion
#endregion
#region Функции-обработчики по приёму.
#region Обработчик по удалению.
/// <summary>
/// Обработать сообщение по удалению сущности.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <returns>Текст ошибки или пустая строка.</returns>
public virtual string ProcessDeletionDCIMessage(Directum.Dci.Sdk.IProcessMessage message)
{
var data = message.LoadData("DeletedRecordData");
var guid = data.ValueByName("GUID");
var globalId = Guid.Parse(guid.ToString()).ToString();
var entityLink = GetEntityLinkByGuid(globalId);
if (entityLink == null)
return DirRX.DciCore.Resources.NotFoundExternalEntityLinkFormat(globalId);
// Сперва заполнить свойство IsDelete у ExternalEntityLinks и сохранить. Данное свойство используется в стандартной в событиях до удаления и если оно не означено, то запрещается удаление.
if (entityLink.IsDeleted != true)
{
entityLink.IsDeleted = true;
entityLink.Save();
}
// Удалить сущность из системы.
var deleteResult = string.Empty;
try
{
var entityId = entityLink.EntityId.Value;
var entityTypeGuid = entityLink.EntityType;
deleteResult = DeleteEntityByProcessName(entityId, entityTypeGuid, message.ProcessKindName);
}
catch (Exception ex)
{
deleteResult = DirRX.DciCore.Resources.DeleteEntityErrorFormat(ex.Message, ex.StackTrace);
Logger.Error(string.Format("Процесс {0}. {1}", message.ProcessGlobalId, deleteResult));
}
// Удалить связанные записи из справочника "Ссылки внешней системы".
if (string.IsNullOrWhiteSpace(deleteResult))
{
/// HACK получаем все сущности, так как:
/// 1. В стандартной разработке есть код по удалению записи из справочника ссылки "Ссылки внешней системы", соответственно наша ссылка устаревает (ссылаться на отсутствующую запись справочника).
/// 2. Есть шанс что в справочнике могли создаться дубли.
var entityLinks = GetAllEntityLinksByGuid(globalId);
foreach (var link in entityLinks)
Sungero.Commons.ExternalEntityLinks.Delete(link);
}
return deleteResult;
}
/// <summary>
/// Удалить сущности из системы по ИД.
/// </summary>
/// <param name="entityId">ИД сущности.</param>
/// <param name="entityTypeGuid">GUID типа сущности.</param>
/// <param name="processName">Имя процесса DCI.</param>
/// <returns>Текст ошибки или пустая строка.</returns>
[Public, Remote]
public virtual string DeleteEntityByProcessName(int entityId, string entityTypeGuid, string processName)
{
// HACK универсальный код по удалению записи справочника.
// TODO нужна доработка для удаления документов
var targetEntity = GetDatabookEntityById(entityId, entityTypeGuid);
if (targetEntity == null)
return DirRX.DciCore.Resources.NoEntitiesFoundToDeleteFormat(entityId, entityTypeGuid);
var lockInfo = Locks.GetLockInfo(targetEntity);
if (lockInfo.IsLocked)
return DirRX.DciCore.PublicConstants.Module.ErrorType.EntityIsLocked;
Sungero.CoreEntities.Databooks.Delete(targetEntity);
return string.Empty;
#region Шаблон кода для реализации функции в перекрытии.
//// switch (processName)
//// {
//// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
//// var entity = <Репозиторий типа сущности>.Get(entityId);
//// // Если запись заблокирована, отправить сообщение повторно в очередь.
//// var lockInfo = Locks.GetLockInfo(entity);
//// if (lockInfo.IsLocked)
//// return Constants.Module.ErrorType.EntityIsLocked;
//// <Репозиторий типа сущности>.Delete(entity);
//// break;
//// default:
//// return base.DeleteEntityByProcessName(entityId, processName);
//// }
//// return string.Empty;
#endregion
//return DirRX.DciCore.Resources.NotFoundDeleteHandlerByProcessFormat(processName);
}
#endregion
#region DCICheckLink
/// <summary>
/// Обработать сообщение Ping.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <returns>Пустая строка или текст ошибки.</returns>
public string ProcessPingDciMessage(Directum.Dci.Sdk.IProcessMessage message)
{
// Получить словарь с данными из сообщения.
var data = message.LoadData("TestData");
var dataGuid = data.ValueByName("GUID");
var dataDate = data.ValueByName("Date");
var dataNum1 = data.ValueByName("Num");
var dataNum2 = data.ValueByName("Num2");
if (dataGuid == null || dataDate == null || dataNum1 == null || dataNum2 == null)
return DirRX.DciCore.Resources.InsufficientDataError;
var guid = dataGuid.ToString();
var date = dataDate.ToString();
var num1 = dataNum1.ToString();
var num2 = dataNum2.ToString();
var stringBuilder = new System.Text.StringBuilder();
stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Получено сообщение. Значения данных:",
message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
stringBuilder.AppendLine(string.Format("GUID = {0}", guid));
stringBuilder.AppendLine(string.Format("Date = {0}", date));
stringBuilder.AppendLine(string.Format("Num = {0}", num1));
stringBuilder.AppendLine(string.Format("Num2 = {0}", num2));
Logger.Debug(stringBuilder.ToString());
stringBuilder.Clear();
Logger.Debug(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Проверка данных...",
message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
DateTime tempDate;
var isDate = Calendar.TryParseDate(date, out tempDate);
var tempNum1 = Functions.Module.StringToDouble(num1);
var tempNum2 = Functions.Module.StringToDouble(num2);
var isNumber1 = (tempNum1 != null);
var isNumber2 = (tempNum2 != null);
tempNum1 += 1.5;
tempNum2 += 1.0 / 3.0;
stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Результаты проверки данных:",
message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
stringBuilder.AppendLine(string.Format("Date = {0}, is date = {1}", date, isDate));
stringBuilder.AppendLine(string.Format("Num = {0}, is double = {1}", num1, isNumber1));
stringBuilder.AppendLine(string.Format("Num2 = {0}, is double = {1}", num2, isNumber2));
stringBuilder.AppendLine(string.Format("Num + 1.5 = {0}", tempNum1));
stringBuilder.AppendLine(string.Format("Num2 + 1/3 = {0}", tempNum2));
Logger.Debug(stringBuilder.ToString());
stringBuilder.Clear();
Logger.Debug(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Остановка процесса.",
message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
var process = GetProcessByMessage(message);
process.Stop();
return string.Empty;
}
/// <summary>
/// Обработать сообщение Pong.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <returns>Пустая строка или текст ошибки.</returns>
public string ProcessPongDciMessage(Directum.Dci.Sdk.IProcessMessage message)
{
// Получить параметры сообщения.
var messageParams = message.Params;
var paramDirection = messageParams.ValueByName("Direction").ToString();
var paramServiceType = messageParams.ValueByName("ServiceType").ToString();
var paramEventTime = messageParams.ValueByName("EventTime").ToString();
var paramEndpointType = messageParams.ValueByName("EndpointType").ToString();
var paramIndex = 0;
var paramServiceName = string.Empty;
paramIndex = messageParams.IndexOfName("ServiceName");
if (paramIndex >= 0)
paramServiceName = messageParams.GetValues(paramIndex).ToString();
var paramEndpointName = string.Empty;
paramIndex = messageParams.IndexOfName("EndpointName");
if (paramIndex >= 0)
paramEndpointName = messageParams.GetValues(paramIndex).ToString();
// var stringBuilder = new System.Text.StringBuilder();
// stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Получено сообщение. Значения параметров:",
// message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
// stringBuilder.AppendLine(string.Format("paramDirection = {0}", paramDirection));
// stringBuilder.AppendLine(string.Format("paramServiceType = {0}", paramServiceType));
// stringBuilder.AppendLine(string.Format("paramEventTime = {0}", paramEventTime));
// stringBuilder.AppendLine(string.Format("paramEndpointType = {0}", paramEndpointType));
// stringBuilder.AppendLine(string.Format("paramServiceName = {0}", paramServiceName));
// stringBuilder.AppendLine(string.Format("paramEndpointName = {0}", paramEndpointName));
// Logger.Debug(stringBuilder.ToString());
// stringBuilder.Clear();
var eventStr = new System.Text.StringBuilder();
var serviceType = string.Empty;
var endpointType = string.Empty;
eventStr.AppendFormat("Получатель {0}.", message.Sender);
if (paramServiceType == "SystemAdapter")
serviceType = "Адаптер к системе";
else if (paramServiceType == "TransportAdapter")
serviceType = "Адаптер к транспорту";
else if (paramServiceType == "Transport")
serviceType = "Транспорт";
eventStr.AppendFormat(" {0}", serviceType);
if (!string.IsNullOrWhiteSpace(paramServiceName))
eventStr.AppendFormat(" {0}", paramServiceName);
if (paramDirection == "From")
{
eventStr.Append(": Сообщение получено");
if (paramEndpointType == "System")
endpointType = "из системы";
else if (paramEndpointType == "RoutingService")
endpointType = "из сервиса маршрутизации";
else if (paramEndpointType == "TransportAdapter")
endpointType = "из адаптера к транспорту";
else if (paramEndpointType == "Transport")
endpointType = "из транспорта";
eventStr.AppendFormat(" {0}", endpointType);
}
else
{
eventStr.Append(": Сообщение отправлено");
if (paramEndpointType == "System")
endpointType = "в систему";
else if (paramEndpointType == "RoutingService")
endpointType = "в сервис маршрутизации";
else if (paramEndpointType == "TransportAdapter")
endpointType = "в адаптер к транспорту";
else if (paramEndpointType == "Transport")
endpointType = "в транспорт";
eventStr.AppendFormat(" {0}", endpointType);
}
if (!string.IsNullOrWhiteSpace(paramEndpointName))
eventStr.AppendFormat(" {0}", paramEndpointName);
Logger.Debug(eventStr.ToString());
return string.Empty;
}
#endregion
#endregion
#region Функции-обработчики по отправке.
#region DCICheckLink
/// <summary>
/// Отправить тестовое сообщение для проверки связи между системами.
/// </summary>
/// <returns>GUID процесса DCI.</returns>
[Public, Remote(IsPure = true)]
public string SendDciPing()
{
var setting = Functions.DciSetting.GetDciSettings();
var processFactory = GetProcessFactory(setting);
var message = CreateMessage(Constants.DciProcessKind.DCICheckLinkProcess.Name, Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name, string.Empty, int.MinValue, string.Empty, processFactory, setting, true);
// Сформировать тестовое сообщение.
var attach = new ObjectDictionary();
attach.Add("GUID", Guid.NewGuid().ToDelphiGuid()); // TODO сделать более явный вызов ToDelphiGuid из Directum.Dci.Common. Реализовать при проработке отправки сообщений.
attach.Add("Date", Calendar.Today);
attach.Add("Num", 1.0 / 3.0);
attach.Add("Num2", 1.25);
attach.Add("TestStatus", Sungero.CoreEntities.DatabookEntry.Status.Active);
message.AttachData(attach, "TestData");
message.Save();
message.Send();
var process = GetProcessByMessage(message);
return process.GlobalId;
}
#endregion
/// <summary>
/// Заполнить сообщение DCI информацией для удаления сущности.
/// </summary>
/// <param name="message">Сообщение DCI.</param>
/// <param name="globalEntityId">Глобальный ИД сущности.</param>
/// <returns>Обновленное сообщение DCI.</returns>
public virtual Directum.Dci.Sdk.IProcessMessage CreateDeletionDCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, string globalEntityId)
{
var attach = new ObjectDictionary();
attach.Add("GUID", globalEntityId);
message.AttachData(attach, "DeletedRecordData");
message.Save();
return message;
// TODO помечать запись удаленной в extlinks
#region Шаблон кода для реализации функции в перекрытии.
//// switch (message.ProcessKindName)
//// {
//// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
//// var attach = new ObjectDictionary();
//// attach.Add("GUID", globalEntityId);
//// message.AttachData(attach, "DeletedRecordData");
////
//// var entityId = GetEntityIdByGuid(globalEntityId);
//// var entity = <Репозиторий типа сущности>.Get(entityId);
//// var customAttach = new ObjectDictionary();
//// //customAttach.Add("", entity.);
//// message.AttachData(customAttach, "CustomData");
////
//// message.Save();
//// break;
////
//// default:
//// return base.CreateDeletionDCIMessageAttach(message, globalEntityId);
//// }
//// return message;
#endregion
}
#endregion
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Server
{
}
\ No newline at end of file
{
"$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
"NameGuid": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
"Name": "DciProcessKind",
"BaseGuid": "04581d26-0780-4cfd-b3cd-c2cafc5798b0",
"CanBeNavigationPropertyType": true,
"Code": "DciProcessKind",
"CreationAreaMetadata": {
"NameGuid": "f7766750-eee2-4fcd-8003-5c06a90d1f44",
"Name": "CreationArea",
"Buttons": [],
"IsAncestorMetadata": true
},
"ExtraSearchProperties": [],
"FilterPanel": {
"NameGuid": "b0125fbd-3b91-4dbb-914a-689276216404",
"Name": "FilterPanel",
"Controls": [],
"IsAncestorMetadata": true
},
"Forms": [
{
"$type": "Sungero.Metadata.StandaloneFormMetadata, Sungero.Metadata",
"NameGuid": "e3903018-e6ef-4336-a294-2ccdc8d0bf63",
"Name": "Card",
"Controls": [
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
"Name": "ControlGroup"
},
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"Name": "Main",
"ColumnDefinitions": [
{
"Percentage": 49.96
},
{
"Percentage": 50.04
}
],
"ColumnNumber": 0,
"ColumnSpan": 1,
"ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
"RowNumber": 0,
"RowSpan": 1
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "3193c97c-1a9f-499f-95a3-9168dc1bc0b3",
"Name": "Control",
"ColumnNumber": 0,
"ColumnSpan": 2,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce",
"RowNumber": 0,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "03aa2121-2040-4083-9730-169604e1ebd6",
"Name": "ProcessType",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed",
"RowNumber": 2,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "940f57df-25e6-4130-acb3-bc1aae6659f4",
"Name": "Status",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1",
"RowNumber": 3,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "0fa43e10-6d48-4828-add2-5632c0b1c4c6",
"Name": "Description",
"ColumnNumber": 0,
"ColumnSpan": 2,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b",
"RowNumber": 1,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "c424d5cc-88b4-4f81-a951-b57d2eabb9da",
"Name": "Additional",
"ColumnNumber": 0,
"ColumnSpan": 1,
"ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
"RowNumber": 1,
"RowSpan": 1
},
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "3c299716-5b10-4c75-b130-49533d077c3d",
"Name": "Note",
"ColumnNumber": 0,
"ColumnSpan": 1,
"GroupType": "WithTitleNoBorder",
"ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
"RowNumber": 2,
"RowSpan": 1
},
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "462ec2b8-adee-4c71-930c-660c2eeb52c8",
"Name": "Messages",
"ColumnNumber": 0,
"ColumnSpan": 1,
"GroupType": "WithTitleNoBorder",
"ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
"RowNumber": 3,
"RowSpan": 1
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "175cf315-4427-4d6b-8120-5bd7b57bd993",
"Name": "Messages",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.GridControlToChildCollectionBinder",
"HeaderLocation": "None",
"ParentGuid": "462ec2b8-adee-4c71-930c-660c2eeb52c8",
"PropertyGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11",
"RowNumber": 0,
"RowSpan": 1,
"Settings": [
{
"Name": "NeedExpand",
"Value": true
}
]
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "5834aee8-ab03-4ea3-a8f5-fb9e23a1167d",
"Name": "Note",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.TextEditorToTextBinder",
"HeaderLocation": "None",
"ParentGuid": "3c299716-5b10-4c75-b130-49533d077c3d",
"PropertyGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a",
"RowNumber": 0,
"RowSpan": 1,
"Settings": [
{
"Name": "Height",
"Value": 80
}
]
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "3753bf8a-804c-4607-bf29-16b90ec2c4ca",
"Name": "LastDciSyncDate",
"ColumnNumber": 1,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DateTimeEditorToDateTimeBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "6519340c-d9ae-4a12-a6c9-819f964eda5d",
"RowNumber": 3,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "93969610-fafe-4fc3-981f-8e0ba52bca9e",
"Name": "EntityTypeGUID",
"ColumnNumber": 1,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
"PropertyGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318",
"RowNumber": 2,
"RowSpan": 1,
"Settings": []
}
]
}
],
"HandledEvents": [
"BeforeSaveServer"
],
"HideFromCreationArea": true,
"HideFromNavigationEditorCreationArea": true,
"IconResourcesKeys": [],
"IsAutoCreated": true,
"IsStatusEnabled": true,
"OperationsClass": "",
"Overridden": [
"IsStatusEnabled",
"IsAutoCreated",
"HideFromCreationArea",
"HideFromNavigationEditorCreationArea"
],
"Properties": [
{
"$type": "Sungero.Metadata.EnumPropertyMetadata, Sungero.Metadata",
"NameGuid": "1dcedc29-5140-4770-ac92-eabc212326a1",
"Name": "Status",
"IsAncestorMetadata": true,
"Overridden": [
"IsShowedInList",
"IsVisibility",
"CanBeSearch",
"PreviousPropertyGuid"
],
"PreviousPropertyGuid": "d7319199-3333-49cc-a7b9-8467617ccf20"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce",
"Name": "Name",
"Code": "Name",
"IsDisplayValue": true,
"IsEnabled": false,
"IsQuickSearchAllowed": true,
"IsRequired": true,
"IsUnique": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "41103636-132e-49d5-91ea-020c1603cd16",
"Name": "GUID",
"Code": "GUID",
"IsEnabled": false,
"IsRequired": true,
"IsUnique": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce"
},
{
"$type": "Sungero.Metadata.CollectionPropertyMetadata, Sungero.Metadata",
"NameGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11",
"Name": "Messages",
"Code": "DciProcessKin1",
"EntityGuid": "97a41c12-ed37-4790-afd4-529b70493184",
"IsEnabled": false,
"IsShowedInList": false,
"PreviousPropertyGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b"
},
{
"$type": "Sungero.Metadata.EnumPropertyMetadata, Sungero.Metadata",
"NameGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed",
"Name": "ProcessType",
"Code": "ProcessType",
"DirectValues": [
{
"NameGuid": "7581b95a-e6d8-4937-a3b2-4d9c5079d8ac",
"Name": "DataSync",
"Code": "DataSync"
},
{
"NameGuid": "7ffd482a-9555-4b61-b220-b032071636e2",
"Name": "DocSync",
"Code": "DocSync"
},
{
"NameGuid": "704fc64b-e29d-4b94-a639-cd683fffc2e0",
"Name": "Process",
"Code": "Process"
}
],
"IsEnabled": false,
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
"PreviousPropertyGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b",
"Name": "Description",
"Code": "Description",
"Length": 1000,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "41103636-132e-49d5-91ea-020c1603cd16"
},
{
"$type": "Sungero.Metadata.TextPropertyMetadata, Sungero.Metadata",
"NameGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a",
"Name": "Note",
"Code": "Note",
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToTextBinder",
"PreviousPropertyGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318",
"Name": "EntityTypeGUID",
"Code": "EntityTypeGUID",
"IsEnabled": false,
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a"
},
{
"$type": "Sungero.Metadata.DateTimePropertyMetadata, Sungero.Metadata",
"NameGuid": "6519340c-d9ae-4a12-a6c9-819f964eda5d",
"Name": "LastOutSyncDate",
"Code": "LastOutSyncDat",
"DateTimeFormat": "DateTime",
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DateTimeEditorToDateTimeBinder",
"PreviousPropertyGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318"
}
],
"PublicConstants": [
{
"Name": "Name",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess"
],
"TypeName": "System.String",
"Value": "\"DCICheckLink\""
},
{
"Name": "Name",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess",
"PingMessage"
],
"TypeName": "System.String",
"Value": "\"Ping\""
},
{
"Name": "Name",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess",
"PongMessage"
],
"TypeName": "System.String",
"Value": "\"Pong\""
},
{
"Name": "RecordChanges",
"ParentClasses": [
"DciProcessKind",
"DefaultDciMessageName"
],
"TypeName": "System.String",
"Value": "\"SynchronizeRecordChanges\""
},
{
"Name": "RecordDeletion",
"ParentClasses": [
"DciProcessKind",
"DefaultDciMessageName"
],
"TypeName": "System.String",
"Value": "\"SynchronizeRecordDeletion\""
},
{
"Name": "RecordGUID",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess"
],
"TypeName": "System.Guid",
"Value": "new System.Guid(\"FF629668-7663-406C-A89E-D57C0F0F4D0C\")"
},
{
"Name": "RowGUID",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess",
"PingMessage"
],
"TypeName": "System.Guid",
"Value": "new System.Guid(\"7A39F16B-7F3E-4D54-8807-947371282914\")"
},
{
"Name": "RowGUID",
"ParentClasses": [
"DciProcessKind",
"DCICheckLinkProcess",
"PongMessage"
],
"TypeName": "System.Guid",
"Value": "new System.Guid(\"72EC2A7B-5CAF-464A-A89E-AA9D3A40AF95\")"
}
],
"PublicFunctions": [
{
"Name": "CheckProcessKindExists",
"IsRemote": true,
"Parameters": [
{
"Name": "processName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "messageName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "GetProcessKindByName",
"IsRemote": true,
"Parameters": [
{
"Name": "processName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::DirRX.DciCore.IDciProcessKind",
"ReturnTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
}
],
"PublicStructures": [],
"ResourcesKeys": [
"NotFoundProcessKindByProcessName",
"NotFoundMessageInProcessKind",
"NotValidDciName",
"IncorrectProcessName",
"IncorrectMessageName",
"NotUniqueMessageName"
],
"RibbonCardMetadata": {
"NameGuid": "3deae715-fa8f-4776-8f98-e287417462bb",
"Name": "RibbonCard",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": [],
"RibbonKind": "Card"
},
"RibbonCollectionMetadata": {
"NameGuid": "34141cb0-eeb0-49d8-8b86-6ce14ac8b481",
"Name": "RibbonCollection",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": []
},
"Versions": [
{
"Type": "EntityMetadata",
"Number": 11
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NotFoundProcessKindByProcessName" xml:space="preserve">
<value>В справочнике "Виды межсистемных процессов" не найдена действующая запись для процесса с именем {0}. Выполните инициализацию решения, проверьте что запись действующая.</value>
</data>
<data name="NotFoundMessageInProcessKind" xml:space="preserve">
<value>В справочнике "Виды межсистемных процессов" для процесса {0} не найдено сообщение с именем {1}. Выполните инициализацию решения.</value>
</data>
<data name="NotValidDciName" xml:space="preserve">
<value>Некорректное имя {0}. Имя должно содержать только буквы (латиница, кириллица), цифры и символ подчеркивания. Имя не должно начинаться с цифры.</value>
</data>
<data name="IncorrectProcessName" xml:space="preserve">
<value>Измените имя вида процесса. {0}</value>
</data>
<data name="IncorrectMessageName" xml:space="preserve">
<value>Измените имя сообщения. {0}</value>
</data>
<data name="NotUniqueMessageName" xml:space="preserve">
<value>Имя сообщения "{0}" должно быть уникальным в разрезе процесса "{1}".</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NotFoundProcessKindByProcessName" xml:space="preserve">
<value>В справочнике "Виды межсистемных процессов" не найдена действующая запись для процесса с именем {0}. Выполните инициализацию решения, проверьте что запись действующая.</value>
</data>
<data name="NotFoundMessageInProcessKind" xml:space="preserve">
<value>В справочнике "Виды межсистемных процессов" для процесса {0} не найдено сообщение с именем {1}. Выполните инициализацию решения.</value>
</data>
<data name="NotValidDciName" xml:space="preserve">
<value>Некорректное имя {0}. Имя должно содержать только буквы (латиница, кириллица), цифры и символ подчеркивания. Имя не должно начинаться с цифры.</value>
</data>
<data name="IncorrectProcessName" xml:space="preserve">
<value>Измените имя вида процесса. {0}</value>
</data>
<data name="IncorrectMessageName" xml:space="preserve">
<value>Измените имя сообщения. {0}</value>
</data>
<data name="NotUniqueMessageName" xml:space="preserve">
<value>Имя сообщения "{0}" должно быть уникальным в разрезе процесса "{1}".</value>
</data>
</root>
\ No newline at end of file
using System;
using Sungero.Core;
namespace DirRX.DciCore.Constants
{
public static class DciProcessKind
{
/// <summary>
/// Стандартные имена сообщений для синхронизации записей справочника через DCI.
/// </summary>
public static class DefaultDciMessageName
{
[Public]
public const string RecordChanges = "SynchronizeRecordChanges";
[Public]
public const string RecordDeletion = "SynchronizeRecordDeletion";
}
#region Процесс DCICheckLink.
/// <summary>
/// Значения полей для записи справочника.
/// </summary>
public static class DCICheckLinkProcess
{
[Public]
public static readonly Guid RecordGUID = Guid.Parse("FF629668-7663-406C-A89E-D57C0F0F4D0C");
[Public]
public const string Name = "DCICheckLink";
public const string Description = "Проверка связи между системами";
public const string Note = "Отправка тестового сообщения. Используется на обложке решения.";
public static class PingMessage
{
[Public]
public static readonly Guid RowGUID = Guid.Parse("7A39F16B-7F3E-4D54-8807-947371282914");
[Public]
public const string Name = "Ping";
public const string Note = "Сообщение с тестовыми данными";
}
public static class PongMessage
{
[Public]
public static readonly Guid RowGUID = Guid.Parse("72EC2A7B-5CAF-464A-A89E-AA9D3A40AF95");
[Public]
public const string Name = "Pong";
public const string Note = "Отбойник о получении сообщения";
}
}
#endregion
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore
{
partial class DciProcessKindSharedHandlers
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciProcessKind;
namespace DirRX.DciCore.Shared
{
partial class DciProcessKindFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Structures.DciProcessKind
{
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_Name" xml:space="preserve">
<value>Name</value>
</data>
<data name="DisplayName" xml:space="preserve">
<value>Вид межсистемного процесса</value>
</data>
<data name="AccusativeDisplayName" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="CollectionDisplayName" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="Property_GUID" xml:space="preserve">
<value>GUID записи</value>
</data>
<data name="Property_Messages" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="Property_ProcessType" xml:space="preserve">
<value>Тип процесса</value>
</data>
<data name="Enum_ProcessType_DataSync" xml:space="preserve">
<value>Синхронизация справочника</value>
</data>
<data name="Enum_ProcessType_DocSync" xml:space="preserve">
<value>Синхронизация документа</value>
</data>
<data name="Enum_ProcessType_Process" xml:space="preserve">
<value>Сквозной бизнес-процесс</value>
</data>
<data name="ControlGroup_7329a31f678641d3a5fccdd3fde0e7bf" xml:space="preserve">
<value />
</data>
<data name="ControlGroup_3c2997165b104c75b13049533d077c3d" xml:space="preserve">
<value>Примечания</value>
</data>
<data name="Property_Description" xml:space="preserve">
<value>Описание</value>
</data>
<data name="Property_Note" xml:space="preserve">
<value>Примечание</value>
</data>
<data name="ControlGroup_c424d5cc88b44f81a951b57d2eabb9da" xml:space="preserve">
<value />
</data>
<data name="ControlGroup_462ec2b8adee4c71930c660c2eeb52c8" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="Property_EntityTypeGUID" xml:space="preserve">
<value>GUID типа сущности</value>
</data>
<data name="Property_LastOutSyncDate" xml:space="preserve">
<value>Дата последней отправки</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_Name" xml:space="preserve">
<value>Имя</value>
</data>
<data name="DisplayName" xml:space="preserve">
<value>Вид межсистемного процесса</value>
</data>
<data name="AccusativeDisplayName" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="CollectionDisplayName" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="Property_GUID" xml:space="preserve">
<value>GUID записи</value>
</data>
<data name="Property_ProcessType" xml:space="preserve">
<value>Тип процесса</value>
</data>
<data name="Enum_ProcessType_DataSync" xml:space="preserve">
<value>Синхронизация справочника</value>
</data>
<data name="Enum_ProcessType_Process" xml:space="preserve">
<value>Сквозной бизнес-процесс</value>
</data>
<data name="Enum_ProcessType_DocSync" xml:space="preserve">
<value>Синхронизация документа</value>
</data>
<data name="ControlGroup_3c2997165b104c75b13049533d077c3d" xml:space="preserve">
<value>Примечания</value>
</data>
<data name="Property_Description" xml:space="preserve">
<value>Описание</value>
</data>
<data name="Property_Messages" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="Property_Note" xml:space="preserve">
<value>Примечание</value>
</data>
<data name="ControlGroup_462ec2b8adee4c71930c660c2eeb52c8" xml:space="preserve">
<value>Сообщения</value>
</data>
<data name="Property_EntityTypeGUID" xml:space="preserve">
<value>GUID типа сущности</value>
</data>
<data name="Property_LastOutSyncDate" xml:space="preserve">
<value>Дата последней отправки</value>
</data>
</root>
\ No newline at end of file
{
"$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
"NameGuid": "97a41c12-ed37-4790-afd4-529b70493184",
"Name": "DciProcessKindMessages",
"AccessRightsMode": "NoRight",
"BaseGuid": "a3d38bf5-0414-41f6-bb33-a4621d2e5a60",
"CanBeNavigationPropertyType": true,
"Code": "DciProcessKin1",
"ExtraSearchProperties": [],
"IsChildEntity": true,
"Properties": [
{
"$type": "Sungero.Metadata.NavigationPropertyMetadata, Sungero.Metadata",
"NameGuid": "298ffbfe-b9e8-49b2-9f67-50503d28bfaa",
"Name": "DciProcessKind",
"CanBeSearch": false,
"Code": "DciProcessKind",
"EntityGuid": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
"IsReferenceToRootEntity": true,
"IsShowedInList": false
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "a041d7a7-df7b-4973-8edf-c09e9b64d46a",
"Name": "Name",
"CanBeSearch": false,
"Code": "Name",
"IsEnabled": false,
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "298ffbfe-b9e8-49b2-9f67-50503d28bfaa"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "72f6b57a-e893-430d-855b-1658630682bc",
"Name": "Note",
"CanBeSearch": false,
"Code": "Note",
"Length": 1000,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "a041d7a7-df7b-4973-8edf-c09e9b64d46a"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "43b48378-c48c-4631-b22c-c8ccbdae3bf4",
"Name": "RowGUID",
"CanBeSearch": false,
"Code": "RowGUID",
"IsEnabled": false,
"IsRequired": true,
"IsUnique": true,
"IsVisibility": false,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "72f6b57a-e893-430d-855b-1658630682bc"
}
],
"PublicStructures": [],
"RibbonCardMetadata": {
"NameGuid": "99f6c7c3-a806-41f5-bdae-9069316f5626",
"Name": "RibbonCard",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": [],
"RibbonKind": "Card"
},
"RibbonCollectionMetadata": {
"NameGuid": "53c4e4be-6d89-4fc2-8003-44582166fc12",
"Name": "RibbonCollection",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": []
},
"Versions": [
{
"Type": "EntityMetadata",
"Number": 11
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_Name" xml:space="preserve">
<value>Имя сообщения</value>
</data>
<data name="Property_Note" xml:space="preserve">
<value>Примечание</value>
</data>
<data name="Property_RowGUID" xml:space="preserve">
<value>GUID строки</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_Name" xml:space="preserve">
<value>Имя сообщения</value>
</data>
<data name="Property_Note" xml:space="preserve">
<value>Примечание</value>
</data>
<data name="Property_RowGUID" xml:space="preserve">
<value>GUID строки</value>
</data>
</root>
\ No newline at end of file
{
"$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
"NameGuid": "0a291244-941b-4006-8497-06ecd1fabca4",
"Name": "DciSetting",
"BaseGuid": "04581d26-0780-4cfd-b3cd-c2cafc5798b0",
"CanBeNavigationPropertyType": true,
"Code": "DciSetting",
"CreationAreaMetadata": {
"NameGuid": "f7766750-eee2-4fcd-8003-5c06a90d1f44",
"Name": "CreationArea",
"Buttons": [],
"IsAncestorMetadata": true
},
"ExtraSearchProperties": [],
"FilterPanel": {
"NameGuid": "b0125fbd-3b91-4dbb-914a-689276216404",
"Name": "FilterPanel",
"Controls": [],
"IsAncestorMetadata": true
},
"Forms": [
{
"$type": "Sungero.Metadata.StandaloneFormMetadata, Sungero.Metadata",
"NameGuid": "f345093b-e6c2-4742-85eb-bc661cd50bee",
"Name": "Card",
"Controls": [
{
"$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
"NameGuid": "be475439-282f-4f2d-b313-5efcff782627",
"Name": "ControlGroup"
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "662ffa75-a86a-4ed0-98f8-a0ee5d7d5b63",
"Name": "Control",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
"PropertyGuid": "f9c79369-67c9-44e3-9f14-48aaec8cf3cd",
"RowNumber": 0,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "d2fb7766-a0ad-4991-b508-9c86ac60d5df",
"Name": "AdapterServiceUrl",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
"PropertyGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f",
"RowNumber": 1,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "2ef7e302-252c-4213-b34a-8c82631497ec",
"Name": "AdapterSiteUrl",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
"PropertyGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357",
"RowNumber": 2,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "a434e717-94c3-4087-81c4-0f073cd77490",
"Name": "ExchangeFolder",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
"PropertyGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b",
"RowNumber": 3,
"RowSpan": 1,
"Settings": []
},
{
"$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
"NameGuid": "f6c42c4c-6cf9-4f56-a9a6-388d6f2ae07f",
"Name": "ExternalSystemID",
"ColumnNumber": 0,
"ColumnSpan": 1,
"DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
"PropertyGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e",
"RowNumber": 4,
"RowSpan": 1,
"Settings": []
}
]
}
],
"HideFromCreationArea": true,
"HideFromNavigationEditorCreationArea": true,
"IconResourcesKeys": [],
"IsAutoCreated": true,
"IsVisible": false,
"OperationsClass": "",
"Overridden": [
"HideFromCreationArea",
"HideFromNavigationEditorCreationArea",
"IsAutoCreated",
"IsVisible"
],
"Properties": [
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "f9c79369-67c9-44e3-9f14-48aaec8cf3cd",
"Name": "SystemID",
"Code": "SystemID",
"IsDisplayValue": true,
"IsQuickSearchAllowed": true,
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f",
"Name": "AdapterServiceUrl",
"Code": "AdapterService",
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357",
"Name": "AdapterSiteUrl",
"Code": "AdapterSiteUrl",
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b",
"Name": "ExchangeFolder",
"Code": "ExchangeFolder",
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357"
},
{
"$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
"NameGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e",
"Name": "ExternalSystemID",
"Code": "ExternalSystem",
"IsRequired": true,
"ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
"PreviousPropertyGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b"
}
],
"PublicFunctions": [
{
"Name": "CreateDciSetting",
"IsRemote": true,
"Placement": "Shared",
"ReturnType": "global::DirRX.DciCore.IDciSetting",
"ReturnTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
},
{
"Name": "GetDciSettings",
"IsRemote": true,
"Placement": "Shared",
"ReturnType": "global::DirRX.DciCore.IDciSetting",
"ReturnTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
}
],
"PublicStructures": [],
"ResourcesKeys": [],
"RibbonCardMetadata": {
"NameGuid": "c1dff1ab-43e0-497c-85fb-e8027625d8ef",
"Name": "RibbonCard",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": [],
"RibbonKind": "Card"
},
"RibbonCollectionMetadata": {
"NameGuid": "4a2db3f3-683e-470a-a1b3-ead1b910d269",
"Name": "RibbonCollection",
"Categories": [],
"Elements": [],
"Groups": [],
"IsAncestorMetadata": true,
"Pages": []
},
"Versions": [
{
"Type": "EntityMetadata",
"Number": 11
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
using System;
using Sungero.Core;
namespace DirRX.DciCore.Constants
{
public static class DciSetting
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore
{
partial class DciSettingSharedHandlers
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
using DirRX.DciCore.DciSetting;
namespace DirRX.DciCore.Shared
{
partial class DciSettingFunctions
{
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Structures.DciSetting
{
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_SystemID" xml:space="preserve">
<value>Идентификатор системы</value>
</data>
<data name="DisplayName" xml:space="preserve">
<value>Настройка DCI</value>
</data>
<data name="AccusativeDisplayName" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="CollectionDisplayName" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="Property_AdapterServiceUrl" xml:space="preserve">
<value>Url адаптера</value>
</data>
<data name="Property_AdapterSiteUrl" xml:space="preserve">
<value>Адрес сайта адаптера</value>
</data>
<data name="Property_ExchangeFolder" xml:space="preserve">
<value>Папка обмена</value>
</data>
<data name="Property_ExternalSystemID" xml:space="preserve">
<value>Идентификатор внешней системы</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Property_SystemID" xml:space="preserve">
<value>Идентификатор системы</value>
</data>
<data name="DisplayName" xml:space="preserve">
<value>Настройка DCI</value>
</data>
<data name="AccusativeDisplayName" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="CollectionDisplayName" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="Property_AdapterServiceUrl" xml:space="preserve">
<value>Url адаптера</value>
</data>
<data name="Property_AdapterSiteUrl" xml:space="preserve">
<value>Адрес сайта адаптера</value>
</data>
<data name="Property_ExchangeFolder" xml:space="preserve">
<value>Папка обмена</value>
</data>
<data name="Property_ExternalSystemID" xml:space="preserve">
<value>Идентификатор внешней системы</value>
</data>
</root>
\ No newline at end of file
{
"$type": "Sungero.Metadata.ModuleMetadata, Sungero.Metadata",
"NameGuid": "9467e108-745e-47d5-ab30-7e82cb4d5f13",
"Name": "DciCore",
"AsyncHandlers": [
{
"NameGuid": "a03678a5-178b-4a4f-9c0e-fb5d2ddbef33",
"Name": "ReceiveProcessMessage",
"DelayPeriod": 5,
"DelayStrategy": "RegularDelayStrategy",
"IsHandlerGenerated": true,
"Parameters": [
{
"NameGuid": "7a48357c-a513-4920-972a-07c2f5904c12",
"Name": "MessageGUID",
"ParameterType": "String"
}
]
},
{
"NameGuid": "76d6a6af-4016-471d-a784-780ffaf23255",
"Name": "SendProcessMessage",
"DelayPeriod": 5,
"DelayStrategy": "RegularDelayStrategy",
"IsHandlerGenerated": true,
"Parameters": [
{
"NameGuid": "56b7aed1-4256-4fd0-a0a4-dbf8bea4a0be",
"Name": "NameProcessKind",
"ParameterType": "String"
},
{
"NameGuid": "97c34765-74ad-45d7-9941-163e93180b5b",
"Name": "IdProcessKind",
"ParameterType": "Integer"
}
]
}
],
"ClientAssemblyName": "DirRX.DciCore.Client",
"ClientBaseAssemblyName": "DirRX.DciCore.ClientBase",
"ClientBaseNamespace": "DirRX.DciCore.ClientBase",
"ClientNamespace": "DirRX.DciCore.Client",
"Code": "DciCore",
"CompanyCode": "DirRX",
"Cover": {
"NameGuid": "65e41069-aeb8-4d31-89f5-48d2ef52d6fc",
"Actions": [
{
"$type": "Sungero.Metadata.CoverFunctionActionMetadata, Sungero.Metadata",
"NameGuid": "11ef9367-22e7-4afc-b340-21ae67bd2720",
"Name": "Settings",
"FunctionName": "ShowDciSettings",
"GroupId": "19b2648e-125a-4c5f-8421-79d45577097f"
},
{
"$type": "Sungero.Metadata.CoverEntityListActionMetadata, Sungero.Metadata",
"NameGuid": "7f422a54-2157-4ecb-bca1-31820e781997",
"Name": "DciProcessKinds",
"EntityTypeId": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
"GroupId": "19b2648e-125a-4c5f-8421-79d45577097f",
"PreviousItemGuid": "11ef9367-22e7-4afc-b340-21ae67bd2720"
},
{
"$type": "Sungero.Metadata.CoverFunctionActionMetadata, Sungero.Metadata",
"NameGuid": "a0a59ad8-8975-4014-8aa1-f55021a9461c",
"Name": "PingMessage",
"FunctionName": "SendDciPingMessage",
"GroupId": "19b2648e-125a-4c5f-8421-79d45577097f",
"PreviousItemGuid": "7f422a54-2157-4ecb-bca1-31820e781997"
}
],
"Background": null,
"Footer": {
"NameGuid": "203ad4b2-8694-45db-953c-0a575e4463c7",
"BackgroundPosition": "Stretch"
},
"Groups": [
{
"NameGuid": "19b2648e-125a-4c5f-8421-79d45577097f",
"Name": "GroupSettings",
"BackgroundPosition": "Stretch",
"IconName": "GroupIconGroupSettings_19b2648e125a4c5f842179d45577097f.png",
"TabId": "cd167a53-6a5b-4f1a-bfda-dee3daa70d51"
}
],
"Header": {
"NameGuid": "235fce62-6dfd-4824-8bfd-e566dccbd864",
"BackgroundPosition": "Stretch"
},
"Tabs": [
{
"NameGuid": "cd167a53-6a5b-4f1a-bfda-dee3daa70d51",
"Name": "Tab"
}
]
},
"Dependencies": [
{
"Id": "f380c872-469a-4014-9ce5-ffb840907fc6",
"IsSolutionModule": true,
"MaxVersion": "",
"MinVersion": ""
},
{
"Id": "92491aa6-c4df-4f46-a807-ebdd337bda74",
"MaxVersion": "",
"MinVersion": "1.1.0.0"
},
{
"Id": "ec7b606a-21ee-4f16-aba8-ab8c2af76d12",
"MaxVersion": "",
"MinVersion": "0.0.1.0"
}
],
"ExplorerTreeOrder": [
{
"ItemId": "0a291244-941b-4006-8497-06ecd1fabca4"
},
{
"ItemId": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
"PreviousItemId": "0a291244-941b-4006-8497-06ecd1fabca4"
}
],
"HandledEvents": [
"InitializingServer"
],
"IconResourcesKeys": [],
"Importance": "Low",
"InitializationFunctions": [
{
"Name": "AddProcessMessage",
"Parameters": [
{
"Name": "processKind",
"ParameterType": "global::DirRX.DciCore.IDciProcessKind",
"ParameterTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
},
{
"Name": "rowGUID",
"ParameterType": "global::System.Guid",
"ParameterTypeFullName": "System.Guid"
},
{
"Name": "messageName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "messageNote",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"ReturnType": "void",
"ReturnTypeFullName": "System.Void"
},
{
"Name": "CreateProcessKind",
"Parameters": [
{
"Name": "guid",
"ParameterType": "global::System.Guid",
"ParameterTypeFullName": "System.Guid"
},
{
"Name": "processName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "note",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "description",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "processType",
"ParameterType": "global::Sungero.Core.Enumeration",
"ParameterTypeFullName": "Sungero.Core.Enumeration, Sungero.Domain.Shared"
},
{
"Name": "entityTypeGuid",
"ParameterType": "global::System.Guid",
"ParameterTypeFullName": "System.Guid"
},
{
"Name": "startSyncDate",
"ParameterType": "global::System.DateTime",
"ParameterTypeFullName": "System.DateTime"
}
],
"ReturnType": "global::DirRX.DciCore.IDciProcessKind",
"ReturnTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
}
],
"InterfaceAssemblyName": "Sungero.Domain.Interfaces",
"InterfaceNamespace": "DirRX.DciCore",
"Jobs": [
{
"NameGuid": "c22dcae5-4d53-4637-a2b8-136f4e75666d",
"Name": "SendEntitiesToDciSynchronization",
"Daily": "Repeat",
"GenerateHandler": true,
"IsEnabled": false,
"MonthSchedule": "Monthly",
"TimePeriod": 30
}
],
"Libraries": [
{
"NameGuid": "eb3bcb57-e730-4f30-b9e3-7eb254b7fd6c",
"Name": "Dci",
"Scope": "Server"
}
],
"Overridden": [
"Importance"
],
"PublicConstants": [
{
"Name": "Active",
"ParentClasses": [
"Module",
"D5StatusName"
],
"TypeName": "System.String",
"Value": "\"Действующая\""
},
{
"Name": "Closed",
"ParentClasses": [
"Module",
"D5StatusName"
],
"TypeName": "System.String",
"Value": "\"Закрытая\""
},
{
"Name": "EntityIsLocked",
"ParentClasses": [
"Module",
"ErrorType"
],
"TypeName": "System.String",
"Value": "\"EntityIsLocked\""
}
],
"PublicFunctions": [
{
"Name": "Base64ToString",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "ConvertD5StatusToRXStatus",
"Parameters": [
{
"Name": "d5Status",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "ConvertRXStatusToD5Status",
"Parameters": [
{
"Name": "rxStatus",
"ParameterType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
"ParameterTypeFullName": "System.Nullable"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "ConvertTextRXStatusToRXStatus",
"Parameters": [
{
"Name": "stringStatus",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "DateTimeToDciString",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.DateTime",
"ParameterTypeFullName": "System.DateTime"
}
],
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "DateToDciString",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.DateTime",
"ParameterTypeFullName": "System.DateTime"
}
],
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "DeleteEntityByProcessName",
"IsRemote": true,
"Parameters": [
{
"Name": "entityId",
"ParameterType": "global::System.Int32",
"ParameterTypeFullName": "System.Int32"
},
{
"Name": "entityTypeGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "processName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "EnqueueDciMessage",
"Parameters": [
{
"Name": "processMessageGlobalId",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String",
"WebApiRequestType": "Post"
},
{
"Name": "GetAllEntityLinksByGuid",
"IsRemote": true,
"Parameters": [
{
"Name": "guid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Linq.IQueryable<global::Sungero.Commons.IExternalEntityLink>",
"ReturnTypeFullName": "System.Linq.IQueryable"
},
{
"Name": "GetChangedDatabookRecords",
"Parameters": [
{
"Name": "baseGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "dateBegin",
"ParameterType": "global::System.DateTime",
"ParameterTypeFullName": "System.DateTime"
},
{
"Name": "dateEnd",
"ParameterType": "global::System.DateTime",
"ParameterTypeFullName": "System.DateTime"
}
],
"ReturnType": "global::System.Linq.IQueryable<global::System.Int32>",
"ReturnTypeFullName": "System.Linq.IQueryable"
},
{
"Name": "GetDatabookEntityById",
"IsRemote": true,
"Parameters": [
{
"Name": "entityId",
"ParameterType": "global::System.Int32",
"ParameterTypeFullName": "System.Int32"
},
{
"Name": "entityTypeGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::Sungero.CoreEntities.IDatabookEntry",
"ReturnTypeFullName": "Sungero.CoreEntities.IDatabookEntry, Sungero.Domain.Shared"
},
{
"Name": "GetDCIMessageNameByEntity",
"Parameters": [
{
"Name": "entity",
"ParameterType": "global::Sungero.CoreEntities.IDatabookEntry",
"ParameterTypeFullName": "Sungero.CoreEntities.IDatabookEntry, Sungero.Domain.Shared"
}
],
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "GetEntityIdByGuid",
"IsRemote": true,
"Parameters": [
{
"Name": "guid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Int32",
"ReturnTypeFullName": "System.Int32"
},
{
"Name": "GetEntityLinkByGuid",
"IsRemote": true,
"Parameters": [
{
"Name": "guid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::Sungero.Commons.IExternalEntityLink",
"ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
},
{
"Name": "GetExternalEntityLink",
"IsRemote": true,
"Parameters": [
{
"Name": "entityId",
"ParameterType": "global::System.Int32",
"ParameterTypeFullName": "System.Int32"
},
{
"Name": "entityTypeGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "externalSystemID",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::Sungero.Commons.IExternalEntityLink",
"ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
},
{
"Name": "GetHyperlinkToDciProcess",
"Parameters": [
{
"Name": "setting",
"ParameterType": "global::DirRX.DciCore.IDciSetting",
"ParameterTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
},
{
"Name": "processGUID",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "SendDciPing",
"IsRemote": true,
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "SendDciPingMessage",
"Placement": "Client",
"ReturnType": "void",
"ReturnTypeFullName": "System.Void"
},
{
"Name": "SendNotificatiobAboutReceiveErrors",
"Parameters": [
{
"Name": "errors",
"ParameterType": "System.Collections.Generic.IList<global::System.String>"
},
{
"Name": "processName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "processGUID",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "messageName",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "messageGUID",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"ReturnType": "void",
"ReturnTypeFullName": "System.Void"
},
{
"Name": "SetExternalEntityLinkGuid",
"IsRemote": true,
"Parameters": [
{
"Name": "entityId",
"ParameterType": "global::System.Int32",
"ParameterTypeFullName": "System.Int32"
},
{
"Name": "entityTypeGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "externalSystemID",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
},
{
"Name": "externalEntityGuid",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::Sungero.Commons.IExternalEntityLink",
"ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
},
{
"Name": "ShowDciSettings",
"Placement": "Client",
"ReturnType": "void",
"ReturnTypeFullName": "System.Void"
},
{
"Name": "StringToBase64",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
},
{
"Name": "StringToDate",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"ReturnType": "global::System.Nullable<global::System.DateTime>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "StringToDateTime",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"ReturnType": "global::System.Nullable<global::System.DateTime>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "StringToDouble",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Nullable<global::System.Double>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "StringToInt",
"Parameters": [
{
"Name": "value",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.Nullable<global::System.Int32>",
"ReturnTypeFullName": "System.Nullable"
},
{
"Name": "ValidateDciName",
"Parameters": [
{
"Name": "name",
"ParameterType": "global::System.String",
"ParameterTypeFullName": "System.String"
}
],
"Placement": "Shared",
"ReturnType": "global::System.String",
"ReturnTypeFullName": "System.String"
}
],
"PublicStructures": [],
"ResourceInterfaceAssemblyName": "Sungero.Domain.Interfaces",
"ResourceInterfaceNamespace": "DirRX.DciCore",
"ResourcesKeys": [
"NotFoundDeleteHandlerByProcess",
"NotFoundMessageByGlobalId",
"ReceiveErrorDetailText",
"ReceiveHandlerError",
"InsufficientDataError",
"ReceiveErrorTaskText",
"NotFoundReceiveHandlerByProcess",
"ReceiveErrorTaskSubject",
"DciSettingsNotFound",
"NotFoundProcessByMessage",
"SendPingTrackingMessage",
"MultipleEntitiesFoundToDelete",
"NoEntitiesFoundToDelete",
"DeleteEntityError",
"NotFoundExternalEntityLink",
"NotFoundPrepareHandlerByProcess"
],
"ServerAssemblyName": "DirRX.DciCore.Server",
"ServerNamespace": "DirRX.DciCore.Server",
"SharedAssemblyName": "DirRX.DciCore.Shared",
"SharedNamespace": "DirRX.DciCore.Shared",
"SpecialFolders": [],
"Version": "1.0.4427.0",
"Widgets": [],
"Versions": [
{
"Type": "ModuleMetadata",
"Number": 8
},
{
"Type": "DomainApi",
"Number": 3
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NotFoundDeleteHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для удаления сущности по процессу "{0}".</value>
</data>
<data name="NotFoundMessageByGlobalId" xml:space="preserve">
<value>Сообщение DCI с GUID {0} не существует. Проверьте наличие сообщения в адаптере DCI.</value>
</data>
<data name="ReceiveErrorDetailText" xml:space="preserve">
<value>Процесс: {0} {1}
Сообщение: {2} {3}
Путь к папке обмена: {4}
Ссылка на сообщение: {5}
Текст ошибки: {6}</value>
</data>
<data name="ReceiveHandlerError" xml:space="preserve">
<value>Ошибка обработки: {0}
{1}</value>
</data>
<data name="InsufficientDataError" xml:space="preserve">
<value>В сообщении недостаточно данных для обработки сообщения.</value>
</data>
<data name="ReceiveErrorTaskText" xml:space="preserve">
<value>При обработке входящего сообщения произошла ошибки. См. в логах службы Worker.
{0}</value>
</data>
<data name="NotFoundReceiveHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для приема сообщения "{0}" по процессу "{1}".</value>
</data>
<data name="ReceiveErrorTaskSubject" xml:space="preserve">
<value>Ошибка при приеме сообщения DCI {0} по процессу {1}</value>
</data>
<data name="DciSettingsNotFound" xml:space="preserve">
<value>Не найдена запись справочника "Настройки DCI". Выполните настройку решения.</value>
</data>
<data name="NotFoundProcessByMessage" xml:space="preserve">
<value>Процесс DCI по сообщению с GUID {0} не найден. Проверьте наличие данного сообщения и процесса в адаптере DCI.</value>
</data>
<data name="SendPingTrackingMessage" xml:space="preserve">
<value>Тестовое сообщение отправлено. Для отслеживания состояние межсистемного процесса откройте сайт адаптера DCI {0}</value>
</data>
<data name="MultipleEntitiesFoundToDelete" xml:space="preserve">
<value>Найдено несколько сущностей с ИД {0} и GUID типа сущности {1}.</value>
</data>
<data name="NoEntitiesFoundToDelete" xml:space="preserve">
<value>Не найдена сущность с ИД {0} и GUID типа сущности {1}.</value>
</data>
<data name="DeleteEntityError" xml:space="preserve">
<value>Ошибка удаления сущности из системы.
{0}
{1}</value>
</data>
<data name="NotFoundExternalEntityLink" xml:space="preserve">
<value>В справочнике "Ссылки внешней системы" не найдена ссылка с GUID {0}. Вероятно запись не была синхронизирована ранее.</value>
</data>
<data name="NotFoundPrepareHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для подготовки исходящего сообщения "{0}" по процессу "{1}".</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="NotFoundDeleteHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для удаления сущности по процессу "{0}".</value>
</data>
<data name="NotFoundMessageByGlobalId" xml:space="preserve">
<value>Сообщение DCI с GUID {0} не существует. Проверьте наличие сообщения в адаптере DCI.</value>
</data>
<data name="ReceiveErrorDetailText" xml:space="preserve">
<value>Процесс: {0} {1}
Сообщение: {2} {3}
Путь к папке обмена: {4}
Ссылка на сообщение: {5}
Текст ошибки: {6}</value>
</data>
<data name="ReceiveHandlerError" xml:space="preserve">
<value>Ошибка обработки: {0}
{1}</value>
</data>
<data name="InsufficientDataError" xml:space="preserve">
<value>В сообщении недостаточно данных для обработки сообщения.</value>
</data>
<data name="ReceiveErrorTaskText" xml:space="preserve">
<value>При обработке входящего сообщения произошла ошибки. См. в логах службы Worker.
{0}</value>
</data>
<data name="NotFoundReceiveHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для приема сообщения "{0}" по процессу "{1}".</value>
</data>
<data name="ReceiveErrorTaskSubject" xml:space="preserve">
<value>Ошибка при приеме сообщения DCI {0} по процессу {1}</value>
</data>
<data name="DciSettingsNotFound" xml:space="preserve">
<value>Не найдена запись справочника "Настройки DCI". Выполните настройку решения.</value>
</data>
<data name="NotFoundProcessByMessage" xml:space="preserve">
<value>Процесс DCI по сообщению с GUID {0} не найден. Проверьте наличие данного сообщения и процесса в адаптере DCI.</value>
</data>
<data name="SendPingTrackingMessage" xml:space="preserve">
<value>Тестовое сообщение отправлено. Для отслеживания состояние межсистемного процесса откройте сайт адаптера DCI {0}</value>
</data>
<data name="MultipleEntitiesFoundToDelete" xml:space="preserve">
<value>Найдено несколько сущностей с ИД {0} и GUID типа сущности {1}.</value>
</data>
<data name="NoEntitiesFoundToDelete" xml:space="preserve">
<value>Не найдена сущность с ИД {0} и GUID типа сущности {1}.</value>
</data>
<data name="DeleteEntityError" xml:space="preserve">
<value>Ошибка удаления сущности из системы.
{0}
{1}</value>
</data>
<data name="NotFoundExternalEntityLink" xml:space="preserve">
<value>В справочнике "Ссылки внешней системы" не найдена ссылка с GUID {0}. Вероятно запись не была синхронизирована ранее.</value>
</data>
<data name="NotFoundPrepareHandlerByProcess" xml:space="preserve">
<value>В разработке не реализован обработчик для подготовки исходящего сообщения "{0}" по процессу "{1}".</value>
</data>
</root>
\ No newline at end of file
using System;
using Sungero.Core;
namespace DirRX.DciCore.Constants
{
public static class Module
{
/// <summary>
/// Константы для типов ошибок.
/// </summary>
public static class ErrorType
{
[Public]
public const string EntityIsLocked = "EntityIsLocked";
}
/// <summary>
/// Константы для наименований статусов записи Directum 5.
/// </summary>
public static class D5StatusName
{
[Public]
public const string Active = "Действующая";
[Public]
public const string Closed = "Закрытая";
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Shared
{
public class ModuleFunctions
{
#region Полезные функции
/// <summary>
/// Сформировать гиперссылку на сайт адаптера DCI для просмотра сообщений по процессу.
/// </summary>
/// <param name="setting">Запись справочника "Настройки DCI".</param>
/// <param name="processGUID">GUID процесса DCI.</param>
/// <returns>Гиперссылка.</returns>
[Public]
public string GetHyperlinkToDciProcess(IDciSetting setting, string processGUID)
{
// TODO в адресе может сформироваться два //.
return string.Format(@"{0}/Messages?processGuid={1}", setting.AdapterSiteUrl, System.Net.WebUtility.UrlEncode(processGUID));
}
/// <summary>
/// Проверить строку на наличие символов, недопустимых для имени вида процесса или сообщения.
/// </summary>
/// <param name="name">Проверяемая строка.</param>
/// <returns>Пустая строка или текст ошибки.</returns>
[Public]
public string ValidateDciName(string name)
{
// Буквы (латиница, кириллица), цифры и символ "_", и начинается с буквы или "_".
var pattern = @"^[_A-Za-zА-Яа-я]+[_0-9A-Za-zА-Яа-я]*$";
var regex = new System.Text.RegularExpressions.Regex(pattern);
if (!regex.IsMatch(name))
return DirRX.DciCore.DciProcessKinds.Resources.NotValidDciNameFormat(name);
return string.Empty;
}
#endregion
#region Функции по преобразованию данных из строки в объект.
/// <summary>
/// Преобразовать строку в double.
/// </summary>
/// <param name="value">Строка.</param>
/// <returns>Число типа double или null.</returns>
/// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles"></seealso>
/// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.getcultureinfo"></seealso>
/// <seealso cref="https://en.wikipedia.org/wiki/Decimal_separator"></seealso>
[Public]
public virtual double? StringToDouble(string value)
{
if (string.IsNullOrWhiteSpace(value))
return null;
double result;
// Попробовать выполнить преобразование в ru-RU культуре.
if (!double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("ru-RU"), out result) &&
// Затем попробовать выполнить преобразование в en-US культуре.
!double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US"), out result) &&
// Затем попробовать выполнить преобразование в es-ES культуре.
!double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("es-ES"), out result))
// "NumberStyles.Any" + локаль "ru-RU"/"en-US" покрывает большую часть форматов написания числа - комбинаций из десятичного разделителя ("," и ".") и разделителя групп разрядов (" ", "," и ".").
// Еще часть комбинаций закрывается поиском по локали "es-ES" (например "1.234.567,89"), но остаются другие экзотические форматы (например "1 234 567.89") и арабский разделитель "мумаййиз".
{
return null;
}
return result;
}
/// <summary>
/// Преобразовать строку в целое число.
/// </summary>
/// <param name="value">Строка с числом.</param>
/// <returns>Целое число или null.</returns>
/// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles"></seealso>
/// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.getcultureinfo"></seealso>
/// <seealso cref="https://en.wikipedia.org/wiki/Decimal_separator"></seealso>
[Public]
public virtual int? StringToInt(string value)
{
if (string.IsNullOrWhiteSpace(value))
return null;
int result;
// Попробовать выполнить преобразование в ru-RU культуре.
if (!int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("ru-RU"), out result) &&
// Затем попробовать выполнить преобразование в en-US культуре.
!int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US"), out result) &&
// Затем попробовать выполнить преобразование в es-ES культуре.
!int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("es-ES"), out result))
{
return null;
}
return result;
}
/// <summary>
/// Преобразовать статус записи RX из строки в перечисление.
/// </summary>
/// <param name="stringStatus">Статус записи RX (строка).</param>
/// <returns>Статус записи RX (перечисление).</returns>
[Public]
public virtual Enumeration? ConvertTextRXStatusToRXStatus(string stringStatus)
{
Enumeration? result = null;
if (stringStatus == Sungero.CoreEntities.DatabookEntry.Status.Active.Value)
return Sungero.CoreEntities.DatabookEntry.Status.Active;
if (stringStatus == Sungero.CoreEntities.DatabookEntry.Status.Closed.Value)
return Sungero.CoreEntities.DatabookEntry.Status.Closed;
return result;
}
/// <summary>
/// Преобразовать состояние записи D5 в статус записи RX (перечисление).
/// </summary>
/// <param name="d5Status">Состояния записи из D5.</param>
/// <returns>Статус записи RX.</returns>
[Public]
public virtual Enumeration? ConvertD5StatusToRXStatus(string d5Status)
{
Enumeration? result = null;
if (d5Status == Constants.Module.D5StatusName.Active)
return Sungero.CoreEntities.DatabookEntry.Status.Active;
if (d5Status == Constants.Module.D5StatusName.Closed)
return Sungero.CoreEntities.DatabookEntry.Status.Closed;
return result;
}
/// <summary>
/// Раскодировать строку из base64.
/// </summary>
/// <param name="value">Строка в base64.</param>
/// <returns>Строка.</returns>
[Public]
public virtual string Base64ToString(string value)
{
var b = Convert.FromBase64String(value);
var strOriginal = System.Text.Encoding.UTF8.GetString(b);
return strOriginal;
}
#endregion
#region Функции по преобразованию данных в строку.
/// <summary>
/// Преобразовать статус записи RX в состояние записи D5.
/// </summary>
/// <param name="rxStatus">Статус записи RX.</param>
/// <returns>Состояние записи в D5.</returns>
[Public]
public virtual string ConvertRXStatusToD5Status(Enumeration? rxStatus)
{
var result = string.Empty;
if (rxStatus == Sungero.CoreEntities.DatabookEntry.Status.Active)
return Constants.Module.D5StatusName.Active;
if (rxStatus == Sungero.CoreEntities.DatabookEntry.Status.Closed)
return Constants.Module.D5StatusName.Closed;
return result;
}
/// <summary>
/// Закодировать строку в base64.
/// </summary>
/// <param name="value">Строка.</param>
/// <returns>Закодированная строка.</returns>
[Public]
public virtual string StringToBase64(string value)
{
var b = System.Text.Encoding.UTF8.GetBytes(value);
var strModified = Convert.ToBase64String(b);
return strModified;
}
#endregion
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Linq;
using Sungero.Core;
using Sungero.CoreEntities;
namespace DirRX.DciCore.Structures.Module
{
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="DisplayName" xml:space="preserve">
<value>Межсистемное взаимодействие</value>
</data>
<data name="CoverTitle" xml:space="preserve">
<value>Механизмы межсистемного взаимодействия</value>
</data>
<data name="CoverGroup_GroupSettings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="CoverDescription" xml:space="preserve">
<value>Модуль предназначен для организации сквозных бизнес-процессов и синхронизации данных между системами</value>
</data>
<data name="CoverAction_Settings" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="CoverDescription_Settings" xml:space="preserve">
<value>Основные параметры для работы с модулем</value>
</data>
<data name="CoverDescription_PingMessage" xml:space="preserve">
<value>Отправка тестового сообщения во внешнюю систему для проверки связи</value>
</data>
<data name="CoverAction_PingMessage" xml:space="preserve">
<value>Отправить тестовое сообщение</value>
</data>
<data name="AsyncHandler_Description_a03678a5178b4a4f9c0efb5d2ddbef33" xml:space="preserve">
<value>Получить и обработать входящее сообщение DCI</value>
</data>
<data name="JobDisplayName_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
<value>Межсистемное взаимодействие. Отправка изменений во внешнюю систему</value>
</data>
<data name="JobDescription_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
<value>Выполняет поиск сущностей системы, которые были изменены с моменты последней синхронизации</value>
</data>
<data name="AsyncHandler_Description_76d6a6af4016471da784780ffaf23255" xml:space="preserve">
<value>Найти изменения типа сущности и отправить исходящее сообщение DCI</value>
</data>
<data name="CoverTab_Tab" xml:space="preserve">
<value>Tab</value>
</data>
<data name="CoverAction_DciProcessKinds" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="CoverDescription_DciProcessKinds" xml:space="preserve">
<value>Открыть список межсистемных процессов</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CoverTitle" xml:space="preserve">
<value>Механизмы межсистемного взаимодействия</value>
</data>
<data name="CoverGroup_GroupSettings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="CoverAction_Settings" xml:space="preserve">
<value>Настройки DCI</value>
</data>
<data name="DisplayName" xml:space="preserve">
<value>Межсистемное взаимодействие</value>
</data>
<data name="CoverDescription" xml:space="preserve">
<value>Модуль предназначен для организации сквозных бизнес-процессов и синхронизации данных между системами</value>
</data>
<data name="CoverAction_PingMessage" xml:space="preserve">
<value>Отправить тестовое сообщение</value>
</data>
<data name="CoverDescription_PingMessage" xml:space="preserve">
<value>Отправка тестового сообщения во внешнюю систему для проверки связи</value>
</data>
<data name="AsyncHandler_Description_a03678a5178b4a4f9c0efb5d2ddbef33" xml:space="preserve">
<value>Получить и обработать входящее сообщение DCI</value>
</data>
<data name="AsyncHandler_Description_76d6a6af4016471da784780ffaf23255" xml:space="preserve">
<value>Найти изменения типа сущности и отправить исходящее сообщение DCI</value>
</data>
<data name="JobDisplayName_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
<value>Межсистемное взаимодействие. Отправка изменений во внешнюю систему</value>
</data>
<data name="CoverAction_DciProcessKinds" xml:space="preserve">
<value>Виды межсистемных процессов</value>
</data>
<data name="CoverDescription_DciProcessKinds" xml:space="preserve">
<value>Открыть список межсистемных процессов</value>
</data>
</root>
\ No newline at end of file