Commit 784f12bf 784f12bfe1a40fab920dbe6a70a612c2ac63f4b0 by Марк Денисенко

Merge branch 'create_data_synchronization_base' into 'master'

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

See merge request !1
2 parents 5446fcc6 2e412ead
Showing 82 changed files with 6640 additions and 0 deletions
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Client
8 {
9 public class ModuleFunctions
10 {
11
12 }
13 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Client
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Client
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9 public class ModuleAsyncHandlers
10 {
11
12 }
13 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9 partial class DciHandlers
10 {
11 }
12 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9 public class ModuleJobs
10 {
11
12 }
13 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" ?>
2 <queries>
3 </queries>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9 public class ModuleFunctions
10 {
11
12 }
13 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Server
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 {
2 "$type": "Sungero.Metadata.SolutionMetadata, Sungero.Metadata",
3 "NameGuid": "f380c872-469a-4014-9ce5-ffb840907fc6",
4 "Name": "Dci",
5 "AsyncHandlers": [],
6 "ClientAssemblyName": "DirRX.Dci.Client",
7 "ClientBaseAssemblyName": "DirRX.Dci.ClientBase",
8 "ClientBaseNamespace": "DirRX.Dci.ClientBase",
9 "ClientNamespace": "DirRX.Dci.Client",
10 "Code": "Dci",
11 "CompanyCode": "DirRX",
12 "Cover": {
13 "NameGuid": "b41ac586-e41b-4b5c-99a2-d09d81032728",
14 "Actions": [],
15 "Background": null,
16 "Footer": {
17 "NameGuid": "b9ace2f4-94cc-49a4-834f-c73df793fb4d",
18 "BackgroundPosition": "Stretch"
19 },
20 "Groups": [],
21 "Header": {
22 "NameGuid": "6e9571a3-229f-4173-9651-503932893c1c",
23 "BackgroundPosition": "Stretch"
24 },
25 "Tabs": []
26 },
27 "DesktopViews": [],
28 "IconResourcesKeys": [],
29 "Importance": "Medium",
30 "InterfaceAssemblyName": "Sungero.Domain.Interfaces",
31 "InterfaceNamespace": "DirRX.Dci",
32 "OrderedSpecialFolders": [],
33 "PublicStructures": [],
34 "ResourceInterfaceAssemblyName": "Sungero.Domain.Interfaces",
35 "ResourceInterfaceNamespace": "DirRX.Dci",
36 "ResourcesKeys": [],
37 "ServerAssemblyName": "DirRX.Dci.Server",
38 "ServerNamespace": "DirRX.Dci.Server",
39 "SharedAssemblyName": "DirRX.Dci.Shared",
40 "SharedNamespace": "DirRX.Dci.Shared",
41 "SpecialFolders": [],
42 "Version": "1.0.4427.0",
43 "Widgets": [],
44 "Versions": [
45 {
46 "Type": "SolutionMetadata",
47 "Number": 8
48 },
49 {
50 "Type": "ModuleMetadata",
51 "Number": 8
52 },
53 {
54 "Type": "DomainApi",
55 "Number": 3
56 }
57 ]
58 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using Sungero.Core;
3
4 namespace DirRX.Dci.Constants
5 {
6 public static class Module
7 {
8
9 }
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Shared
8 {
9 public class ModuleFunctions
10 {
11
12 }
13 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.Dci.Structures.Module
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="DisplayName" xml:space="preserve">
121 <value>Dci</value>
122 </data>
123 <data name="CoverTitle" xml:space="preserve">
124 <value>Dci</value>
125 </data>
126 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore.Client
9 {
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore.Client
9 {
10 partial class DciProcessKindFunctions
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore
9 {
10 partial class DciProcessKindClientHandlers
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 <Collection175cf31544274d6b81205bd7b57bd993 FormGuid="e3903018-e6ef-4336-a294-2ccdc8d0bf63">
5 <XtraSerializer version="1.0" application="GridControl">
6 <property name="#LayoutVersion" isnull="true" />
7 <property name="$GridControl" iskey="true" value="GridControl">
8 <property name="GroupSummary" iskey="true" value="0" />
9 <property name="View" isnull="true" iskey="true">
10 <property name="ShowTotalSummary">false</property>
11 <property name="AllowMoveColumnToDropArea">false</property>
12 <property name="AllowColumnMoving">true</property>
13 <property name="ColumnChooserState" isnull="true" iskey="true">
14 <property name="Location">1011,-2</property>
15 <property name="Size">220,250</property>
16 </property>
17 <property name="AutoWidth">false</property>
18 <property name="AllowGrouping">false</property>
19 <property name="AllowSorting">true</property>
20 <property name="ShowGroupPanel">false</property>
21 <property name="LinesPerRowMode">None</property>
22 <property name="IsRowCellMenuEnabled">false</property>
23 </property>
24 <property name="GroupCount">0</property>
25 <property name="TotalSummary" iskey="true" value="0" />
26 <property name="Columns" iskey="true" value="2">
27 <property name="Item1" isnull="true" iskey="true">
28 <property name="FieldName">Name</property>
29 <property name="Visible">true</property>
30 <property name="Name">DciProcessKind_Messages_Name</property>
31 <property name="VisibleIndex">0</property>
32 <property name="Width">337</property>
33 <property name="ActualWidth">28*</property>
34 </property>
35 <property name="Item2" isnull="true" iskey="true">
36 <property name="FieldName">Note</property>
37 <property name="Visible">true</property>
38 <property name="Name">DciProcessKind_Messages_Note</property>
39 <property name="VisibleIndex">1</property>
40 <property name="ActualWidth">57*</property>
41 </property>
42 </property>
43 <property name="SortInfo" iskey="true" value="0" />
44 <property name="GroupSummarySortInfo" iskey="true" value="0" />
45 </property>
46 </XtraSerializer>
47 </Collection175cf31544274d6b81205bd7b57bd993>
48 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 <Collection FormGuid="cddd4c25-da1e-45d4-ab4b-0250a22ce940">
5 <XtraSerializer version="1.0" application="GridControl">
6 <property name="#LayoutVersion" isnull="true" />
7 <property name="$GridControl" iskey="true" value="GridControl">
8 <property name="GroupSummary" iskey="true" value="0" />
9 <property name="View" isnull="true" iskey="true">
10 <property name="ColumnChooserState" isnull="true" iskey="true">
11 <property name="Location">840,-194</property>
12 <property name="Size">220,250</property>
13 </property>
14 <property name="AllowGrouping">true</property>
15 <property name="AllowSorting">true</property>
16 <property name="LinesPerRowMode">OneLineMode</property>
17 <property name="IsRowCellMenuEnabled">false</property>
18 </property>
19 <property name="TotalSummary" iskey="true" value="0" />
20 <property name="GroupCount">0</property>
21 <property name="Columns" iskey="true" value="8">
22 <property name="Item1" isnull="true" iskey="true">
23 <property name="MinWidth">32</property>
24 <property name="FieldName">T</property>
25 <property name="FixedWidth">true</property>
26 <property name="Visible">true</property>
27 <property name="ExtendedVisibleIndex">0</property>
28 <property name="VisibleIndex">0</property>
29 <property name="Width">32</property>
30 <property name="ActualWidth">3*</property>
31 </property>
32 <property name="Item2" isnull="true" iskey="true">
33 <property name="FieldName">Id</property>
34 <property name="Visible">false</property>
35 <property name="Name">DciProcessKind_Id</property>
36 <property name="ExtendedVisibleIndex">7</property>
37 <property name="VisibleIndex">5</property>
38 <property name="ActualWidth">6*</property>
39 </property>
40 <property name="Item3" isnull="true" iskey="true">
41 <property name="FieldName">Status</property>
42 <property name="Visible">true</property>
43 <property name="Name">DciProcessKind_Status</property>
44 <property name="ExtendedVisibleIndex">6</property>
45 <property name="VisibleIndex">4</property>
46 <property name="ActualWidth">15*</property>
47 </property>
48 <property name="Item4" isnull="true" iskey="true">
49 <property name="FieldName">Name</property>
50 <property name="Visible">true</property>
51 <property name="Name">DciProcessKind_Name</property>
52 <property name="ExtendedVisibleIndex">3</property>
53 <property name="VisibleIndex">1</property>
54 <property name="ActualWidth">17*</property>
55 </property>
56 <property name="Item5" isnull="true" iskey="true">
57 <property name="FieldName">GUID</property>
58 <property name="Visible">false</property>
59 <property name="Name">DciProcessKind_GUID</property>
60 <property name="ExtendedVisibleIndex">1</property>
61 <property name="ActualWidth">NaN</property>
62 </property>
63 <property name="Item6" isnull="true" iskey="true">
64 <property name="FieldName">ProcessType</property>
65 <property name="Visible">true</property>
66 <property name="Name">DciProcessKind_ProcessType</property>
67 <property name="ExtendedVisibleIndex">5</property>
68 <property name="VisibleIndex">3</property>
69 <property name="ActualWidth">14*</property>
70 </property>
71 <property name="Item7" isnull="true" iskey="true">
72 <property name="FieldName">Description</property>
73 <property name="Visible">true</property>
74 <property name="Name">DciProcessKind_Description</property>
75 <property name="ExtendedVisibleIndex">4</property>
76 <property name="VisibleIndex">2</property>
77 <property name="ActualWidth">24*</property>
78 </property>
79 <property name="Item8" isnull="true" iskey="true">
80 <property name="FieldName">Note</property>
81 <property name="Visible">false</property>
82 <property name="Name">DciProcessKind_Note</property>
83 <property name="ExtendedVisibleIndex">2</property>
84 <property name="ActualWidth">NaN</property>
85 </property>
86 </property>
87 <property name="SortInfo" iskey="true" value="0" />
88 <property name="GroupSummarySortInfo" iskey="true" value="0" />
89 </property>
90 </XtraSerializer>
91 </Collection>
92 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 <Folder FormGuid="8dbb6507-6d7b-4ef2-9247-a64a15eb5dbb">
5 <XtraSerializer version="1.0" application="GridControl">
6 <property name="#LayoutVersion" isnull="true" />
7 <property name="$GridControl" iskey="true" value="GridControl">
8 <property name="Columns" iskey="true" value="3">
9 <property name="Item1" isnull="true" iskey="true">
10 <property name="FieldName">T</property>
11 <property name="Visible">true</property>
12 <property name="VisibleIndex">0</property>
13 </property>
14 <property name="Item2" isnull="true" iskey="true">
15 <property name="FieldName">Id</property>
16 <property name="Visible">true</property>
17 <property name="Name">DciProcessKind_Id</property>
18 <property name="VisibleIndex">1</property>
19 </property>
20 <property name="Item3" isnull="true" iskey="true">
21 <property name="FieldName">Name</property>
22 <property name="Visible">true</property>
23 <property name="Name">DciProcessKind_Name</property>
24 <property name="VisibleIndex">2</property>
25 </property>
26 </property>
27 </property>
28 </XtraSerializer>
29 </Folder>
30 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore.Client
9 {
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore.Client
9 {
10 partial class DciSettingFunctions
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore
9 {
10 partial class DciSettingClientHandlers
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 <Collection FormGuid="cddd4c25-da1e-45d4-ab4b-0250a22ce940">
5 <XtraSerializer version="1.0" application="GridControl">
6 <property name="#LayoutVersion" isnull="true" />
7 <property name="$GridControl" iskey="true" value="GridControl">
8 <property name="Columns" iskey="true" value="3">
9 <property name="Item1" isnull="true" iskey="true">
10 <property name="FieldName">T</property>
11 <property name="Visible">true</property>
12 <property name="VisibleIndex">0</property>
13 </property>
14 <property name="Item2" isnull="true" iskey="true">
15 <property name="FieldName">Id</property>
16 <property name="Visible">true</property>
17 <property name="Name">DciSetting_Id</property>
18 <property name="VisibleIndex">1</property>
19 </property>
20 <property name="Item3" isnull="true" iskey="true">
21 <property name="FieldName">Name</property>
22 <property name="Visible">true</property>
23 <property name="Name">DciSetting_Name</property>
24 <property name="VisibleIndex">2</property>
25 </property>
26 </property>
27 </property>
28 </XtraSerializer>
29 </Collection>
30 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
2 <settings>
3 <ViewName>Default</ViewName>
4 <Folder FormGuid="8dbb6507-6d7b-4ef2-9247-a64a15eb5dbb">
5 <XtraSerializer version="1.0" application="GridControl">
6 <property name="#LayoutVersion" isnull="true" />
7 <property name="$GridControl" iskey="true" value="GridControl">
8 <property name="Columns" iskey="true" value="3">
9 <property name="Item1" isnull="true" iskey="true">
10 <property name="FieldName">T</property>
11 <property name="Visible">true</property>
12 <property name="VisibleIndex">0</property>
13 </property>
14 <property name="Item2" isnull="true" iskey="true">
15 <property name="FieldName">Id</property>
16 <property name="Visible">true</property>
17 <property name="Name">DciSetting_Id</property>
18 <property name="VisibleIndex">1</property>
19 </property>
20 <property name="Item3" isnull="true" iskey="true">
21 <property name="FieldName">Name</property>
22 <property name="Visible">true</property>
23 <property name="Name">DciSetting_Name</property>
24 <property name="VisibleIndex">2</property>
25 </property>
26 </property>
27 </property>
28 </XtraSerializer>
29 </Folder>
30 </settings>
...\ No newline at end of file ...\ No newline at end of file
1 <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 ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Client
8 {
9 public class ModuleFunctions
10 {
11
12 /// <summary>
13 /// Открыть настройки DCI.
14 /// </summary>
15 [Public]
16 public virtual void ShowDciSettings()
17 {
18 var setting = Functions.DciSetting.Remote.GetDciSettings();
19 if (setting == null)
20 setting = Functions.DciSetting.Remote.CreateDciSetting();
21
22 setting.Show();
23 }
24
25 /// <summary>
26 /// Отправить тестовое сообщение для проверки связи.
27 /// </summary>
28 [Public]
29 public virtual void SendDciPingMessage()
30 {
31 var setting = Functions.DciSetting.Remote.GetDciSettings();
32 if (setting == null)
33 {
34 Dialogs.ShowMessage(DirRX.DciCore.Resources.DciSettingsNotFound, MessageType.Warning);
35 return;
36 }
37
38 var processGuid = Functions.Module.Remote.SendDciPing();
39
40 var hyperLink = PublicFunctions.Module.GetHyperlinkToDciProcess(setting, processGuid);
41 Dialogs.ShowMessage(DirRX.DciCore.Resources.SendPingTrackingMessageFormat(hyperLink));
42 }
43
44 }
45 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Client
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Client
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore
9 {
10 partial class DciProcessKindServerHandlers
11 {
12
13 public override void BeforeSave(Sungero.Domain.BeforeSaveEventArgs e)
14 {
15 var validationText = string.Empty;
16 // Проверить корректность имени процесса.
17 validationText = Functions.Module.ValidateDciName(_obj.Name);
18 if (!string.IsNullOrWhiteSpace(validationText))
19 e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectProcessNameFormat(validationText));
20
21 // Проверить корректность имени сообщений.
22 foreach (var row in _obj.Messages)
23 {
24 validationText = Functions.Module.ValidateDciName(row.Name);
25 if (!string.IsNullOrWhiteSpace(validationText))
26 e.AddError(DirRX.DciCore.DciProcessKinds.Resources.IncorrectMessageNameFormat(validationText));
27 }
28
29 // Проверить дубли среди имен сообщений в разрезе сообщения.
30 var doubleName = _obj.Messages.GroupBy(x => x.Name)
31 .Where(g => g.Count() > 1)
32 .Select(y => y.Key)
33 .FirstOrDefault();
34 if (!string.IsNullOrWhiteSpace(doubleName))
35 e.AddError(DirRX.DciCore.DciProcessKinds.Resources.NotUniqueMessageNameFormat(doubleName, _obj.Name));
36 }
37 }
38
39 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" ?>
2 <queries>
3 </queries>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore.Server
9 {
10 partial class DciProcessKindFunctions
11 {
12
13 /// <summary>
14 /// Получить запись справочника по имени процесса.
15 /// </summary>
16 /// <param name="processName">Имя процесса DCI.</param>
17 /// <returns>Запись справочника "Вид межсистемного процесса".</returns>
18 [Public, Remote(IsPure = true)]
19 public static IDciProcessKind GetProcessKindByName(string processName)
20 {
21 var result = DciProcessKinds.GetAll().Where(x => x.Status == Status.Active
22 && x.Name == processName)
23 .FirstOrDefault();
24 return result;
25 }
26
27 /// <summary>
28 /// Проверить существование записи справочника по имени процесса и имени сообщения.
29 /// </summary>
30 /// <param name="processName">Имя процесса DCI.</param>
31 /// <param name="messageName">Имя сообщения DCI.</param>
32 /// <returns>Пустая строка или текст ошибки.</returns>
33 [Public, Remote(IsPure = true)]
34 public static string CheckProcessKindExists(string processName, string messageName)
35 {
36 var process = GetProcessKindByName(processName);
37 if (process == null)
38 return DirRX.DciCore.DciProcessKinds.Resources.NotFoundProcessKindByProcessNameFormat(processName);
39
40 var messageRow = process.Messages.Where(x => x.Name == messageName).FirstOrDefault();
41 if (messageRow == null)
42 return DirRX.DciCore.DciProcessKinds.Resources.NotFoundMessageInProcessKindFormat(processName, messageName);
43
44 return string.Empty;
45 }
46
47 }
48 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore
9 {
10 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" ?>
2 <queries>
3 </queries>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore.Server
9 {
10 partial class DciSettingFunctions
11 {
12
13 /// <summary>
14 /// Создать запись справочника "Настройки DCI".
15 /// </summary>
16 /// <returns>Запись справочника "Настройки DCI".</returns>
17 [Public, Remote]
18 public static IDciSetting CreateDciSetting()
19 {
20 return DciSettings.Create();
21 }
22
23 /// <summary>
24 /// Получить запись справочника "Настройки DCI".
25 /// </summary>
26 /// <returns>Запись справочника "Настройки DCI".</returns>
27 [Public, Remote(IsPure = true)]
28 public static IDciSetting GetDciSettings()
29 {
30 return DciSettings.GetAll().FirstOrDefault();
31 }
32
33 }
34 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using Directum.Dci.Sdk;
7 using Directum.Dci.Common;
8 using Directum.Dci.Entities;
9
10 namespace DirRX.DciCore.Server
11 {
12 public class ModuleAsyncHandlers
13 {
14
15 /// <summary>
16 /// Отправка сообщений в DCI с изменениями с момента последней синхронизации (в разрезе типа сущности).
17 /// Запуск АО инициирует ФП.
18 /// </summary>
19 /// <param name="args">Параметры вызова асинхронного обработчика.</param>
20 public virtual void SendProcessMessage(DirRX.DciCore.Server.AsyncHandlerInvokeArgs.SendProcessMessageInvokeArgs args)
21 {
22 var handlerName = "SendProcessMessage"; // Имя АО, для логов.
23 var idProcessKind = args.IdProcessKind;
24 var processName = args.NameProcessKind;
25 var startSyncDate = Calendar.Now;
26 Logger.Debug(string.Format("{0}. {1} (ИД={2}). Начало отправки изменений во внешнюю систему.", handlerName, processName, idProcessKind));
27
28 var errors = new List<string>();
29
30 try
31 {
32 var processKind = DciProcessKinds.Get(idProcessKind);
33 var entityTypeGuid = processKind.EntityTypeGUID;
34 var lastSyncDate = processKind.LastOutSyncDate.Value;
35 processName = processKind.Name;
36
37 var setting = Functions.DciSetting.GetDciSettings();
38 if (setting == null)
39 throw AppliedCodeException.Create(DirRX.DciCore.Resources.DciSettingsNotFound);
40 var processFactory = Functions.Module.GetProcessFactory(setting);
41
42 // TODO нужна адаптация кода под поиск изменения документов и сквозных процессов.
43 var changedDatabookRecordIds = Functions.Module.GetChangedDatabookRecords(entityTypeGuid, lastSyncDate, startSyncDate);
44
45 Logger.Debug(string.Format("{0}. {1} (ИД={2}). Изменений найдено: {3}", handlerName, processName, idProcessKind, changedDatabookRecordIds.Count()));
46
47 foreach (var entityId in changedDatabookRecordIds)
48 {
49 try
50 {
51 Logger.Debug(string.Format("{0}. {1} (ИД={2}). Обработка записи с ИД {3}.", handlerName, processName, idProcessKind, entityId));
52 var entity = Functions.Module.GetDatabookEntityById(entityId, entityTypeGuid);
53 var messageName = Functions.Module.GetDCIMessageNameByEntity(entity);
54
55 // TODO вынести проверку из цикла
56 // Выполнить проверку существования настройки для процесса и сообщения.
57 var checkResult = Functions.DciProcessKind.CheckProcessKindExists(processName, messageName);
58 if (!string.IsNullOrWhiteSpace(checkResult))
59 throw AppliedCodeException.Create(checkResult);
60
61 var dciMessage = Functions.Module.CreateMessage(processName, messageName, string.Empty, entityId, entityTypeGuid, processFactory, setting, true);
62 // TODO Есть небольшое дублирование вычисления, глобальный ИД уже хранится в process.Params "RecordGUID", но что быстрее - получить из extLinks или из параметров?
63 var externalSystemID = dciMessage.Receiver;
64 var entityLink = Functions.Module.GetExternalEntityLink(entityId, entityTypeGuid, externalSystemID);
65 var globalEntityId = entityLink.ExtEntityId.ToString();
66 // TODO не создавать ссылку если ее еще нет и происходит удаление записи?
67 // if (messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion && entityLink.IsDeleted != true)
68 // {
69 // entityLink.IsDeleted = true;
70 // entityLink.Save();
71 // }
72
73 dciMessage = Functions.Module.PrepareDCIMessageAttach(dciMessage, entity, globalEntityId);
74
75 // TODO Извлечь из вложения ведущее сообщение. Добавить зависимость от ведущего.
76
77 //Отправка сообщения DCI.
78 try
79 {
80 dciMessage.Send();
81 }
82 catch (Exception ex)
83 {
84 errors.Add(string.Format("Ошибка при отправке сообщения DCI. {0}\n{1}", ex.Message, ex.StackTrace));
85 }
86 }
87 catch (Exception ex)
88 {
89 errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
90 }
91 }
92
93 if (!errors.Any())
94 {
95 processKind.LastOutSyncDate = startSyncDate;
96 processKind.Save();
97 }
98
99 }
100 catch (Exception ex)
101 {
102 errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
103 }
104
105 if (errors.Any())
106 {
107 try
108 {
109 Logger.Error(string.Format("{0}. {1} (ИД={2}). При отправке изменений во внешнюю систему произошли ошибки: {3}", handlerName, processName, idProcessKind, string.Join(Environment.NewLine, errors)));
110 // TODO возможен спам задачами.
111 // TODO сделать новую функцию SendNotificatiobAboutSendErrors на основе SendNotificatiobAboutReceiveErrors
112 // Functions.Module.SendNotificatiobAboutReceiveErrors(errors, processName, processGUID, messageName, messageGUID);
113 }
114 catch (Exception ex)
115 {
116 Logger.Error(string.Format("{0}. Ошибка при отправке уведомления об ошибках.", handlerName), ex);
117 }
118 }
119
120 Logger.Debug(string.Format("{0}. {1} (ИД={2}). Конец отправки изменений во внешнюю систему.", handlerName, processName, idProcessKind));
121 }
122
123 /// <summary>
124 /// Прием сообщения из DCI.
125 /// Запуск АО инициирует плагин DCI.
126 /// </summary>
127 /// <param name="args">Параметры вызова асинхронного обработчика.</param>
128 public virtual void ReceiveProcessMessage(DirRX.DciCore.Server.AsyncHandlerInvokeArgs.ReceiveProcessMessageInvokeArgs args)
129 {
130 var handlerName = "ReceiveProcessMessage"; // Имя АО, для логов.
131 var messageGUID = args.MessageGUID;
132 var messageName = string.Empty;
133 var processGUID = string.Empty;
134 var processName = string.Empty;
135 var messageFolderPath = string.Empty;
136 Logger.Debug(string.Format("{0}. {1}. Начало обработки сообщения.", handlerName, messageGUID));
137
138 var errors = new List<string>();
139
140 try
141 {
142 var setting = Functions.DciSetting.GetDciSettings();
143 if (setting == null)
144 throw AppliedCodeException.Create(DirRX.DciCore.Resources.DciSettingsNotFound);
145 var processFactory = Functions.Module.GetProcessFactory(setting);
146 var message = processFactory.GetProcessMessageByGlobalId(messageGUID);
147 if (message == null)
148 throw AppliedCodeException.Create(DirRX.DciCore.Resources.NotFoundMessageByGlobalIdFormat(messageGUID));
149 var process = processFactory.GetProcessByMessage(message);
150 if (process == null)
151 throw AppliedCodeException.Create(DirRX.DciCore.Resources.NotFoundProcessByMessageFormat(messageGUID));
152
153 messageName = message.Name;
154 processGUID = process.GlobalId;
155 processName = process.ProcessKindName;
156 messageFolderPath = message.FolderName;
157
158 var messageError = string.Empty;
159 try
160 {
161 // Выполнить проверку существования настройки для процесса и сообщения.
162 var checkResult = Functions.DciProcessKind.CheckProcessKindExists(processName, messageName);
163 if (!string.IsNullOrWhiteSpace(checkResult))
164 throw AppliedCodeException.Create(checkResult);
165
166 Logger.Debug(string.Format("{0}. Процесс: {1} ({2}). Сообщение: {3} ({4}). Подбор обработчика для сообщения.",
167 handlerName, processGUID, processName, messageGUID, messageName));
168
169 // Найти и выполнить обработчик для сообщения.
170 messageError = Functions.Module.ProcessDCIMessage(message);
171 }
172 catch (Exception ex)
173 {
174 messageError = DirRX.DciCore.Resources.ReceiveHandlerErrorFormat(ex.Message, ex.StackTrace);
175 }
176
177 var stopProcess = false;
178 if (string.IsNullOrEmpty(messageError))
179 {
180 message.MarkAsReceived();
181 stopProcess = true;
182 }
183 else
184 {
185 // При блокировке записи, отложить обработку сообщения.
186 if (messageError == Constants.Module.ErrorType.EntityIsLocked)
187 {
188 message.MessageState = MessageState.Pending;
189 message.PostponeProcessing(60); // TODO в секундах. можно вынести в настройки
190 // TODO добавить ограничение по количеству попыток обработки
191 }
192 else
193 {
194 message.MarkAsErroneous(messageError);
195
196 var messageLink = string.Empty;
197 if (setting != null)
198 messageLink = Functions.Module.GetHyperlinkToDciProcess(setting, processGUID);
199 var errorText = DirRX.DciCore.Resources.ReceiveErrorDetailTextFormat(processName, processGUID, messageName, messageGUID, messageFolderPath, messageLink, messageError);
200 errors.Add(errorText);
201 }
202 }
203 message.Save();
204
205 // Остановить процесс по синхронизации данных.
206 if (stopProcess)
207 Functions.Module.StopSynchronizationProcess(process);
208 }
209 catch (Exception ex)
210 {
211 errors.Add(string.Format("{0}\n{1}", ex.Message, ex.StackTrace));
212 }
213
214 if (errors.Any())
215 {
216 try
217 {
218 Logger.Error(string.Format("{0}. {1}. При обработке входящего сообщения DCI произошла ошибка. {2}", handlerName, messageGUID, string.Join(Environment.NewLine, errors)));
219 // TODO возможен спам задачами. Отправку уведомления в системе можно заменить на ФП по периодической проверке сообщений в состоянии Ошибка.
220 Functions.Module.SendNotificatiobAboutReceiveErrors(errors, processName, processGUID, messageName, messageGUID);
221 }
222 catch (Exception ex)
223 {
224 Logger.Error(string.Format("{0}. Ошибка при отправке уведомления об ошибках.", handlerName), ex);
225 }
226 }
227
228 Logger.Debug(string.Format("{0}. {1}. Конец обработки сообщения.", handlerName, messageGUID));
229 }
230
231 }
232 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Server
8 {
9 partial class DciCoreHandlers
10 {
11 }
12 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using Sungero.Domain.Initialization;
7
8 namespace DirRX.DciCore.Server
9 {
10 public partial class ModuleInitializer
11 {
12
13 public override void Initializing(Sungero.Domain.ModuleInitializingEventArgs e)
14 {
15 CreateDatabookRecords();
16 }
17
18 /// <summary>
19 /// Создание записей справочника.
20 /// </summary>
21 public static void CreateDatabookRecords()
22 {
23 var processKind = DciProcessKinds.Null;
24
25 #region Процесс DCICheckLink.
26
27 processKind = CreateProcessKind(Constants.DciProcessKind.DCICheckLinkProcess.RecordGUID,
28 Constants.DciProcessKind.DCICheckLinkProcess.Name,
29 Constants.DciProcessKind.DCICheckLinkProcess.Note,
30 Constants.DciProcessKind.DCICheckLinkProcess.Description,
31 DciCore.DciProcessKind.ProcessType.Process,
32 Guid.Empty,
33 Calendar.SqlMinValue);
34 AddProcessMessage(processKind,
35 Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.RowGUID,
36 Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name,
37 Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Note);
38 AddProcessMessage(processKind,
39 Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.RowGUID,
40 Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Name,
41 Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Note);
42
43 #endregion
44 }
45
46 /// <summary>
47 /// Создание записи в справочнике Виды межсистемных процессов.
48 /// </summary>
49 /// <param name="guid">Случайный GUID, ключевое поле записи - позволяет не привязываться к имени процесса и менять его.</param>
50 /// <param name="processName">Имя процесса.</param>
51 /// <param name="note">Примечания (заполняется один раз - при создании записи).</param>
52 /// <param name="description">Описание межсистемного процесса.</param>
53 /// <param name="processType">Тип процесса - синхронизация или сквозной бизнес-процесс.</param>
54 /// <param name="entityTypeGuid">GUID типа сущности.</param>
55 /// <param name="startSyncDate">Дата и время, от которой выполняется поиск измененных сущностей.</param>
56 /// <returns>Запись справочника Виды межсистемных процессов.</returns>
57 [Public]
58 public static IDciProcessKind CreateProcessKind(Guid guid, string processName, string note, string description, Enumeration processType, Guid entityTypeGuid, DateTime startSyncDate)
59 {
60 var record = DciProcessKinds.GetAll(x => x.GUID == guid.ToString()).FirstOrDefault();
61 if (record == null)
62 {
63 InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Создание записи для процесса {0}.", processName));
64 record = DciProcessKinds.Create();
65 record.GUID = guid.ToString();
66 record.Note = note;
67 }
68
69 if (processName != record.Name)
70 record.Name = processName;
71 if (description != record.Description)
72 record.Description = description;
73 if (processType != record.ProcessType)
74 record.ProcessType = processType;
75 if (entityTypeGuid.ToString() != record.EntityTypeGUID)
76 record.EntityTypeGUID = entityTypeGuid.ToString();
77 if (startSyncDate != record.LastOutSyncDate)
78 record.LastOutSyncDate = startSyncDate;
79
80 if (record.State.IsChanged)
81 {
82 InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение записи для процесса {0}.", processName));
83 record.Save();
84 }
85
86 return record;
87 }
88
89 /// <summary>
90 /// Заполнение таблицы Сообщения в записи в справочника Виды межсистемных процессов.
91 /// </summary>
92 /// <param name="processKind">Запись справочника Виды межсистемных процессов.</param>
93 /// <param name="rowGUID">Случайный GUID, ключевое поле в таблице - позволяет не привязываться к имени сообщения и менять его.</param>
94 /// <param name="messageName">Имя сообщения.</param>
95 /// <param name="messageNote">Примечание.</param>
96 [Public]
97 public static void AddProcessMessage(IDciProcessKind processKind, Guid rowGUID, string messageName, string messageNote)
98 {
99 var row = processKind.Messages.Where(x => x.RowGUID == rowGUID.ToString()).FirstOrDefault();
100 if (row == null)
101 {
102 InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Добавление сообщения {0} для процесса {1}.", messageName, processKind.Name));
103 row = processKind.Messages.AddNew();
104 row.RowGUID = rowGUID.ToString();
105 }
106
107 if (messageName != row.Name)
108 row.Name = messageName;
109 if (messageNote != row.Note)
110 row.Note = messageNote;
111
112 if (processKind.State.IsChanged)
113 {
114 InitializationLogger.Debug(string.Format("Виды межсистемных процессов. Сохранение сообщения {0} для процесса {1}.", messageName, processKind.Name));
115 processKind.Save();
116 }
117 }
118 }
119 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Server
8 {
9 public class ModuleJobs
10 {
11
12 /// <summary>
13 /// ФП запускает АО для отправки изменений из RX в DCI.
14 /// </summary>
15 public virtual void SendEntitiesToDciSynchronization()
16 {
17
18 var activeProcessKinds = DciProcessKinds.GetAll()
19 .Where(x => x.Status == Sungero.CoreEntities.DatabookEntry.Status.Active)
20 .Where(x => x.ProcessType == DciCore.DciProcessKind.ProcessType.DataSync || x.ProcessType == DciCore.DciProcessKind.ProcessType.DocSync);
21
22 foreach (var processKind in activeProcessKinds)
23 {
24 var asyncHandler = DciCore.AsyncHandlers.SendProcessMessage.Create();
25 asyncHandler.IdProcessKind = processKind.Id;
26 asyncHandler.NameProcessKind = processKind.Name;
27 asyncHandler.ExecuteAsync();
28 }
29
30 // TODO нет обработки ошибок
31 // TODO нет логов
32 }
33
34 }
35 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8" ?>
2 <queries>
3 </queries>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using Directum.Dci.Sdk;
7 using Directum.Dci.Common;
8
9 namespace DirRX.DciCore.Server
10 {
11 public class ModuleFunctions
12 {
13 /// <summary>
14 /// Запустить асинхронный обработчик для обработки входящего сообщения DCI.
15 /// </summary>
16 /// <param name="processMessageGlobalId">GUID сообщения DCI.</param>
17 /// <returns>Текст ошибки или строка "Success".</returns>
18 [Public(WebApiRequestType = RequestType.Post)]
19 public string EnqueueDciMessage(string processMessageGlobalId)
20 {
21 var logPrefix = string.Format("EnqueueDciMessageHandler. Received DCI message GUID = {0}", processMessageGlobalId);
22
23 try
24 {
25 Logger.DebugFormat("{0}. Start RX async handler.", logPrefix);
26
27 var handler = DirRX.DciCore.AsyncHandlers.ReceiveProcessMessage.Create();
28 handler.MessageGUID = processMessageGlobalId;
29 handler.ExecuteAsync();
30
31 Logger.DebugFormat("{0}. The end of the function.", logPrefix);
32
33 // DCI не принимает string.Empty в качестве результата.
34 return "Success";
35 }
36 catch (Exception ex)
37 {
38 var errorMessage = string.Format("{0}. The ended with error.", logPrefix);
39 Logger.Error(errorMessage, ex);
40 return errorMessage;
41 }
42 }
43
44 #region Подбор обработчиков по switch-case
45
46 /// <summary>
47 /// Обработать входящее сообщение из DCI.
48 /// </summary>
49 /// <param name="messageGUID">GUID сообщения DCI.</param>
50 /// <returns>Текст ошибки при обработке сообщения из DCI.</returns>
51 public virtual string ProcessDCIMessage(Directum.Dci.Sdk.IProcessMessage message)
52 {
53 var processName = message.ProcessKindName;
54 var messageName = message.Name;
55
56 #region DCICheckLink.
57 if (processName == Constants.DciProcessKind.DCICheckLinkProcess.Name)
58 {
59 switch (messageName)
60 {
61 case Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name:
62 return ProcessPingDciMessage(message);
63 case Constants.DciProcessKind.DCICheckLinkProcess.PongMessage.Name:
64 return ProcessPongDciMessage(message);
65 default:
66 break;
67 }
68 }
69 #endregion
70
71 return DirRX.DciCore.Resources.NotFoundReceiveHandlerByProcessFormat(messageName, processName);
72 }
73
74 /// <summary>
75 /// Подобрать имя исходящего сообщения для сущности.
76 /// </summary>
77 /// <param name="entity">Сущность.</param>
78 /// <returns>Имя сообщения.</returns>
79 [Public]
80 public virtual string GetDCIMessageNameByEntity(Sungero.CoreEntities.IDatabookEntry entity)
81 {
82 // Реализован самый простой способ вычислить имя сообщения - изменена/удалена. Данный фрагмент используется по умолчанию для всех типов сущности.
83 var messageName = string.Empty;
84
85 if (entity == null)
86 messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion;
87 else
88 messageName = Constants.DciProcessKind.DefaultDciMessageName.RecordChanges;
89
90 return messageName;
91
92 #region Шаблон кода для реализации функции в перекрытии.
93 //// var messageName = string.Empty;
94 //// if (<Репозиторий типа сущности>.Is(entity))
95 //// {
96 /// // Поиск нужной операции в истории типа сущности и подбор имени сообщения.
97 /// return messageName
98 //// }
99 //// return base.GetDCIMessageNameByEntity(entity);
100 #endregion
101 }
102
103 /// <summary>
104 /// Подготовить вложение для исходящего сообщения DCI.
105 /// </summary>
106 /// <param name="message">Сообщение DCI.</param>
107 /// <param name="entity">Сущность.</param>
108 /// <param name="globalEntityId">Глобальный ИД сущности.</param>
109 /// <returns>Обновленное сообщение DCI.</returns>
110 public virtual Directum.Dci.Sdk.IProcessMessage PrepareDCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, Sungero.CoreEntities.IDatabookEntry entity, string globalEntityId)
111 {
112 var processName = message.ProcessKindName;
113 var messageName = message.Name;
114
115 #region Шаблон кода для реализации функции в перекрытии.
116 //// var processName = message.ProcessKindName;
117 //// var messageName = message.Name;
118 ////
119 //// switch (processName)
120 //// {
121 //// #region <Имя типа справочника>.
122 //// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
123 //// switch (messageName)
124 //// {
125 //// case Constants.DciProcessKind.DefaultDciMessageName.RecordChanges:
126 //// return Fill<Имя типа сущности>DCIMessageAttach(message, entity, globalEntityId);
127 ////
128 //// case Constants.DciProcessKind.DefaultDciMessageName.RecordDeletion:
129 //// return CreateDeletionDCIMessageAttach(message, globalEntityId);
130 ////
131 //// default:
132 //// break;
133 //// }
134 //// break;
135 //// #endregion
136 //// }
137 ////
138 //// return base.PrepareDCIMessageAttach(message, entity, globalEntityId);
139 #endregion
140
141 throw new AppliedCodeException(DirRX.DciCore.Resources.NotFoundPrepareHandlerByProcessFormat(messageName, processName));
142 }
143
144 #endregion
145
146 #region API DCI.
147
148 /// <summary>
149 /// Получить фабрику работы с процессами DCI.
150 /// </summary>
151 /// <returns>Фабрика.</returns>
152 public Directum.Dci.Sdk.ProcessFactory GetProcessFactory()
153 {
154 var setting = Functions.DciSetting.GetDciSettings();
155 return GetProcessFactory(setting);
156 }
157
158 /// <summary>
159 /// Получить фабрику работы с процессами DCI.
160 /// </summary>
161 /// <param name="setting">Запись справочника "Настройки DCI".</param>
162 /// <returns>Фабрика.</returns>
163 public Directum.Dci.Sdk.ProcessFactory GetProcessFactory(IDciSetting setting)
164 {
165 return ProcessFactory.GetFactory(setting.ExchangeFolder, setting.AdapterServiceUrl);
166 }
167
168 /// <summary>
169 /// Получить процесс по сообщению DCI.
170 /// </summary>
171 /// <param name="message">Сообщение DCI.</param>
172 /// <returns>Процесс DCI.</returns>
173 public Directum.Dci.Sdk.IProcess GetProcessByMessage(Directum.Dci.Sdk.IProcessMessage message)
174 {
175 var factory = GetProcessFactory();
176 return factory.GetProcessByMessage(message);
177 }
178
179 /// <summary>
180 /// Получить глобальный ИД предыдущего отправленного сообщения по процессу.
181 /// </summary>
182 /// <param name="entityGlobalId">Глобальный ИД объекта.</param>
183 /// <param name="processName"></param>
184 /// <param name="externalSystemID">Идентификатор внешней системы.</param>
185 /// <returns>Глобальный ИД ведущего сообщения</returns>
186 public string GetLastSentMessageGloblalId(string entityGlobalId, string processName, string externalSystemID)
187 {
188 var processFactory = GetProcessFactory();
189
190 var lastSentMessageGlobalId = string.Empty;
191 if (string.IsNullOrEmpty(entityGlobalId))
192 return lastSentMessageGlobalId;
193
194 // Найти последнее отправленное сообщение по процессу, для указания его ведущим.
195 var processParams = new ObjectDictionary();
196 processParams.SetVar("RecordGUID", entityGlobalId);
197 var foundProcesses = processFactory.GetProcessesByParameters(processParams);
198 if (foundProcesses.Count == 0)
199 return lastSentMessageGlobalId;
200
201 while (!foundProcesses.EOF)
202 {
203 var process = (Directum.Dci.Sdk.IProcess)foundProcesses.Value;
204 if (process.ProcessKindName == processName)
205 {
206 var lastSentMessage = process.GetLastSentDependentMessage(externalSystemID);
207 if (lastSentMessage != null)
208 {
209 // Делам связь с предыдущим сообщением не зависимо от его состояния (Ошибка/Отправлено), так как неизвестно состояние сообщения на принимающей стороне.
210 lastSentMessageGlobalId = lastSentMessage.GlobalId;
211 //break;
212 }
213 else
214 {
215 // HACK в случае когда метод GetLastSentDependentMessage ничего не вернул, выполняем поиск единственного отправленного сообщения.
216 // HACK как альтернатива поиску - помечать все сообщения как имеющее зависимость (isDepended), но при этом не заполнять ведущее сообщение (LeaderMessageGlobalId) - тогда GetLastSentDependentMessage вернет последнее отправленное сообщение.
217 var allMessages = process.GetAllMessages();
218 if (allMessages.Count == 1)
219 {
220 var firstMessage = (Directum.Dci.Sdk.IProcessMessage)allMessages.Value;
221 if (firstMessage != null)
222 lastSentMessageGlobalId = firstMessage.GlobalId;
223 //break;
224 }
225 }
226 }
227 foundProcesses.Next();
228 }
229 return lastSentMessageGlobalId;
230 }
231
232 /// <summary>
233 /// Создать сообщение.
234 /// </summary>
235 /// <param name="processName">Имя процесса.</param>
236 /// <param name="messageName">Имя сообщения.</param>
237 /// <param name="processGlobalId">GUID процесса.</param>
238 /// <param name="entityId">ИД синхронизируемого объекта.</param>
239 /// <param name="objectTypeGlobalId">GUID типа синхронизируемого объекта.</param>
240 /// <param name="processFactory">Фабрика DCI.</param>
241 /// <param name="setting">Запись справочника "Настройки DCI".</param>
242 /// <param name="stopWhenConfirmed">Признак автоматического закрытия процесса при подтверждении всех отправленных сообщений.</param>
243 /// <returns>Сообщение.</returns>
244 public Directum.Dci.Sdk.IProcessMessage CreateMessage(string processName, string messageName,
245 string processGlobalId, int entityId,
246 string objectTypeGlobalId, Directum.Dci.Sdk.ProcessFactory processFactory,
247 IDciSetting setting, bool stopWhenConfirmed)
248 {
249 // Определить процесс по синхронизируемому объекту
250 var entityGlobalId = string.Empty;
251 var lastSentMessageGlobalId = string.Empty;
252 var isDepended = false;
253 if (entityId > int.MinValue)
254 {
255 // // TODO доп. действия для документов. Реализовать при проработке отправки сообщений.
256 // // // Для документов переопределить гуид типа сущности.
257 // // if (processName == "DocumentSynchronization")
258 // // {
259 // // if (string.IsNullOrEmpty(objectTypeGlobalId))
260 // // {
261 // // var document = Content.ElectronicDocuments.Get(entityId);
262 // // var meta = document.GetEntityMetadata();
263 // // objectTypeGlobalId = meta.NameGuid.ToString();
264 // // }
265 // // }
266 // TODO вынести из функции
267 var entityLink = GetExternalEntityLink(entityId, objectTypeGlobalId, setting.ExternalSystemID);
268 entityGlobalId = entityLink.ExtEntityId.ToString();
269
270 lastSentMessageGlobalId = GetLastSentMessageGloblalId(entityGlobalId, processName, setting.ExternalSystemID);
271 if (!string.IsNullOrEmpty(lastSentMessageGlobalId))
272 {
273 isDepended = true;
274 // По ведущему сообщению получить GUID процесса.
275 var leadMessage = processFactory.GetProcessMessageByGlobalId(lastSentMessageGlobalId);
276 processGlobalId = leadMessage.ProcessGlobalId;
277 }
278 }
279
280 // Создать новый процесс или использовать существующий.
281 var process = string.IsNullOrEmpty(processGlobalId) ? processFactory.CreateProcess(processName) : processFactory.GetProcessByGlobalId(processGlobalId);
282 // Указать GUID синхронизируемого объекта в параметрах процесса.
283 // TODO вынести RecordGUID в константы. Реализовать при проработке отправки сообщений.
284 if (!string.IsNullOrEmpty(entityGlobalId) && process.Params.FindItem("RecordGUID") == null)
285 process.Params.SetVar("RecordGUID", entityGlobalId);
286 process.StopWhenConfirmed = stopWhenConfirmed;
287 process.Save();
288
289 var message = process.CreateProcessMessage(messageName, setting.SystemID, setting.ExternalSystemID, string.Empty, isDepended);
290 if (isDepended)
291 message.LeaderMessageGlobalId = lastSentMessageGlobalId;
292 message.Save();
293
294 return message;
295 }
296
297 /// <summary>
298 /// Остановить межсистемный процесс по синхронизации.
299 /// </summary>
300 /// <param name="process">Процесс DCI.</param>
301 public void StopSynchronizationProcess(Directum.Dci.Sdk.IProcess process)
302 {
303 var processKind = Functions.DciProcessKind.GetProcessKindByName(process.ProcessKindName);
304 // Если тип процесса - синхронизация (справочников/документов), то завершить процесс.
305 if (processKind.ProcessType == DciCore.DciProcessKind.ProcessType.DataSync || processKind.ProcessType == DciCore.DciProcessKind.ProcessType.DocSync)
306 {
307 Logger.Debug(string.Format("Процесс {0}. Завершение процесса синхронизации.", process.GlobalId));
308 try
309 {
310 var endDate = process.EndDate;
311 if (endDate != null && !string.IsNullOrWhiteSpace(endDate.ToString()))
312 {
313 Logger.Debug(string.Format("Процесс {0}. Процесс уже завершен. Дата завершения: {1}", process.GlobalId, endDate));
314 }
315 else
316 {
317 process.Stop();
318 Logger.Debug(string.Format("Процесс {0}. Процесс завершен.", process.GlobalId));
319 }
320 }
321 catch (Exception ex)
322 {
323 Logger.Error(string.Format("Процесс {0}. Ошибка завершения процесса.\n{1}\n{2}", process.GlobalId, ex.Message, ex.StackTrace));
324 }
325 }
326 }
327
328 #endregion
329
330 #region API для ExternalEntityLinks.
331
332 /// <summary>
333 /// Получить запись справочника "Ссылки внешней системы" для экземпляра сущности.
334 /// </summary>
335 /// <param name="entityId">ИД сущности.</param>
336 /// <param name="entityTypeGuid">GUID типа сущности.</param>
337 /// <param name="externalSystemID">Идентификатор внешней системы.</param>
338 /// <returns>Запись справочника "Ссылки внешней системы" для экземпляра сущности.</returns>
339 [Public, Remote]
340 public Sungero.Commons.IExternalEntityLink GetExternalEntityLink(int entityId, string entityTypeGuid, string externalSystemID)
341 {
342 // TODO Использовать ли поле ExtSystemId в ExternalEntityLinks для нескольких внешних систем. Проработать когда будет несколько систем.
343 var externalLink = Sungero.Commons.ExternalEntityLinks.GetAll()
344 .Where(l => l.EntityId == entityId && l.EntityType == entityTypeGuid)
345 .FirstOrDefault();
346 if (externalLink == null)
347 {
348 var newGuid = Guid.NewGuid().ToString();
349 externalLink = SetExternalEntityLinkGuid(entityId, entityTypeGuid, externalSystemID, newGuid);
350 }
351 return externalLink;
352 }
353
354 /// <summary>
355 /// Установить GUID внешней ссылки для экземпляра сущности.
356 /// </summary>
357 /// <param name="entityId">Ид сущности.</param>
358 /// <param name="entityTypeGuid">GUID типа сущности.</param>
359 /// <param name="externalSystemID">Идентификатор внешней системы.</param>
360 /// <param name="externalEntityGuid">Внешний GUID сущности.</param>
361 [Public, Remote]
362 public Sungero.Commons.IExternalEntityLink SetExternalEntityLinkGuid(int entityId, string entityTypeGuid, string externalSystemID, string externalEntityGuid)
363 {
364 var externalLink = Sungero.Commons.ExternalEntityLinks.Create();
365 externalLink.EntityId = entityId;
366 externalLink.EntityType = entityTypeGuid;
367 externalLink.ExtSystemId = externalSystemID;
368 externalLink.ExtEntityId = Guid.Parse(externalEntityGuid).ToString();
369 externalLink.Save();
370
371 return externalLink;
372 }
373
374 /// <summary>
375 /// Получить все записи справочника по глобальному идентификатору сущности.
376 /// </summary>
377 /// <param name="guid">Глобальный идентификатор.</param>
378 /// <returns>Коллекция сущностей или null.</returns>
379 [Public, Remote(IsPure = true)]
380 public IQueryable<Sungero.Commons.IExternalEntityLink> GetAllEntityLinksByGuid(string guid)
381 {
382 var globalId = Guid.Parse(guid).ToString();
383 // TODO Использовать ли поле ExtSystemId в ExternalEntityLinks для нескольких внешних систем.Проработать когда будет несколько систем.
384 var externalLinks = Sungero.Commons.ExternalEntityLinks.GetAll()
385 .Where(x => x.ExtEntityId == globalId);
386 return externalLinks;
387 }
388
389 /// <summary>
390 /// Получить запись справочника по глобальному идентификатору сущности.
391 /// </summary>
392 /// <param name="guid">Глобальный идентификатор.</param>
393 /// <returns>Сущность или null.</returns>
394 [Public, Remote(IsPure = true)]
395 public Sungero.Commons.IExternalEntityLink GetEntityLinkByGuid(string guid)
396 {
397 if (string.IsNullOrWhiteSpace(guid))
398 return null;
399
400 return GetAllEntityLinksByGuid(guid).FirstOrDefault();
401 }
402
403 /// <summary>
404 /// Получить ИД сущности по глобальному идентификатору сущности.
405 /// </summary>
406 /// <param name="guid">Глобальный идентификатор.</param>
407 /// <returns>ИД сущности или 0.</returns>
408 [Public, Remote(IsPure = true)]
409 public int GetEntityIdByGuid(string guid)
410 {
411 var externalLink = GetEntityLinkByGuid(guid);
412 return externalLink != null ? externalLink.EntityId.Value : 0;
413 }
414 #endregion
415
416 #region Функции по преобразованию даты.
417
418 /// <summary>
419 /// Преобразовать строку в дату.
420 /// </summary>
421 /// <param name="value">Строка формата ДД.ММ.ГГГГ (наличие ведущего нуля не принципиально).</param>
422 /// <returns>Дата-время или null.</returns>
423 /// <remarks>Генерирует исключение в случае ошибки преобразования.</remarks>
424 [Public]
425 public virtual DateTime? StringToDate(string value)
426 {
427 if (string.IsNullOrWhiteSpace(value))
428 return null;
429
430 var util = new Directum.Dci.Sdk.Utils();
431 return util.StringToDate(value);
432 }
433
434 /// <summary>
435 /// Преобразовать строку в дату со временем.
436 /// </summary>
437 /// <param name="value">Строка формата ДД.ММ.ГГГГ ЧЧ:ММ:СС.мс (наличие ведущего нуля не принципиально).</param>
438 /// <returns>Дата-время или null.</returns>
439 /// <remarks>Генерирует исключение в случае ошибки преобразования.</remarks>
440 [Public]
441 public virtual DateTime? StringToDateTime(string value)
442 {
443 if (string.IsNullOrWhiteSpace(value))
444 return null;
445
446 var util = new Directum.Dci.Sdk.Utils();
447 return util.StringToDateTime(value);
448 }
449
450 /// <summary>
451 /// Преобразовать дату в строку.
452 /// </summary>
453 /// <param name="value">Дата-время.</param>
454 /// <returns>Строка формата ДД.ММ.ГГГГ.</returns>
455 [Public]
456 public virtual string DateToDciString(DateTime value)
457 {
458 var util = new Directum.Dci.Sdk.Utils();
459 return util.DateToString(value);
460 }
461
462 /// <summary>
463 /// Преобразовать дату со временем в строку.
464 /// </summary>
465 /// <param name="value">Дата-время.</param>
466 /// <returns>Строка формата ДД.ММ.ГГГГ ЧЧ:ММ:СС.мс.</returns>
467 [Public]
468 public virtual string DateTimeToDciString(DateTime value)
469 {
470 var util = new Directum.Dci.Sdk.Utils();
471 return util.DateTimeToString(value);
472 }
473
474 #endregion
475
476 #region Прочие функции.
477
478 /// <summary>
479 /// Отправить уведомление об ошибках.
480 /// </summary>
481 /// <param name="errors">Список ошибок.</param>
482 /// <param name="processName">Имя процесса DCI.</param>
483 /// <param name="processGUID">GUID процесса DCI.</param>
484 /// <param name="messageName">Имя сообщения DCI.</param>
485 /// <param name="messageGUID">GUID сообщения DCI.</param>
486 [Public]
487 public virtual void SendNotificatiobAboutReceiveErrors(System.Collections.Generic.IList<string> errors, string processName, string processGUID, string messageName, string messageGUID)
488 {
489 var task = Sungero.Workflow.SimpleTasks.Create();
490 var step = task.RouteSteps.AddNew();
491 step.AssignmentType = Sungero.Workflow.SimpleTaskRouteSteps.AssignmentType.Notice;
492 step.Performer = Roles.Administrators; // TODO отправлять на спец роль. например Roles.GetAll(r => r.Sid == PublicConstants.Module.RoleGuid.DCIResponsible).First();
493 task.Subject = DirRX.DciCore.Resources.ReceiveErrorTaskSubjectFormat(messageName, processName);
494 task.ActiveText = DirRX.DciCore.Resources.ReceiveErrorTaskTextFormat(string.Join(Environment.NewLine, errors));
495 task.NeedsReview = false;
496 task.Start();
497 }
498
499 /// <summary>
500 /// Найти запись справочника системы по ИД.
501 /// </summary>
502 /// <param name="entityId">ИД сущности.</param>
503 /// <param name="entityTypeGuid">GUID типа сущности.</param>
504 /// <returns>Сущность или null.</returns>
505 [Public, Remote(IsPure = true)]
506 public virtual Sungero.CoreEntities.IDatabookEntry GetDatabookEntityById(int entityId, string entityTypeGuid)
507 {
508 // HACK универсальный код по поиску записи справочника.
509 var targetEntity = Sungero.CoreEntities.Databooks.Null;
510 var entityList = Sungero.CoreEntities.Databooks.GetAll(e => e.Id == entityId);
511 // В linq-запросе не работает вызов GetType(), поэтому дальнейший перебор в цикле.
512 foreach (var entity in entityList)
513 {
514 var entityType = entity.GetType();
515 if (entityType != null)
516 {
517 var guid = Sungero.Domain.Shared.TypeExtension.GetTypeGuid(entityType);
518 if (guid.ToString().ToLower() == entityTypeGuid.ToLower())
519 {
520 if (targetEntity == null)
521 targetEntity = entity;
522 else
523 // Это исключение никогда не должно сработать, но если оно случится - нужно пересмотреть подход к поиску сущностей.
524 throw AppliedCodeException.Create(DirRX.DciCore.Resources.MultipleEntitiesFoundToDeleteFormat(entityId, entityTypeGuid));
525 }
526 }
527 }
528
529 return targetEntity;
530 }
531
532 /// <summary>
533 /// Получить список измененных записей справочника за период.
534 /// </summary>
535 /// <param name="baseGuid">Базовый GUID типа сущности.</param>
536 /// <param name="dateBegin">Дата начала изменений.</param>
537 /// <param name="dateEnd">Дата конца изменений.</param>
538 /// <returns>Список ИД измененных записей справочника.</returns>
539 [Public]
540 public virtual IQueryable<int> GetChangedDatabookRecords(string baseGuid, DateTime dateBegin, DateTime dateEnd)
541 {
542 // HACK универсальный код по поиску в истории записей справочника.
543
544 var actions = new List<Enumeration?> {
545 Sungero.CoreEntities.History.Action.Create,
546 Sungero.CoreEntities.History.Action.Update,
547 Sungero.CoreEntities.History.Action.Delete};
548
549 return Sungero.CoreEntities.DatabookHistories.GetAll()
550 .Where(h => h.EntityType.ToString() == baseGuid
551 && h.HistoryDate >= dateBegin
552 && h.HistoryDate <= dateEnd
553 && actions.Contains(h.Action))
554 .Select(h => h.EntityId.Value)
555 .Distinct();
556 }
557
558 #endregion
559
560 #region Шаблоны кода.
561
562 #region Шаблон кода для обработчика приема.
563
564 //// /// <summary>
565 //// /// Обработать сообщение по изменению "Имя типа сущности".
566 //// /// </summary>
567 //// /// <param name="message">Сообщение DCI.</param>
568 //// /// <returns>Пустая строка или текст ошибки.</returns>
569 //// public string Process<Имя типа сущности>DCIMessage(Directum.Dci.Sdk.IProcessMessage message)
570 //// {
571 //// /// -------------------------------------------------
572 //// /// Подготовка к обработке сообщения.
573 //// /// -------------------------------------------------
574 ////
575 //// // Получить данные из сообщения DCI.
576 //// var data = message.LoadData("MainRecord");
577 //// var globalId = Guid.Parse(data.ValueByName("GUID").ToString()).ToString();
578 //// var entityLink = GetEntityLinkByGuid(globalId);
579 ////
580 //// var entity = entityLink != null ? <Репозиторий типа сущности>.Get(entityLink.EntityId.Value) : <Репозиторий типа сущности>.Create();
581 ////
582 //// // Если запись заблокирована, отправить сообщение повторно в очередь.
583 //// if (Locks.GetLockInfo(entity).IsLocked)
584 //// return Constants.Module.ErrorType.EntityIsLocked;
585 ////
586 //// /// -------------------------------------------------
587 //// /// Обновление записи справочника.
588 //// /// -------------------------------------------------
589 //// /// Для преобразования строковых значений в типы .net использовать функции:
590 //// /// StringToDouble - Преобразовать строку в double.
591 //// /// StringToInt - Преобразовать строку в целое число.
592 //// /// StringToDate - Преобразовать строку в дату.
593 //// /// StringToDateTime - Преобразовать строку в дату со временем.
594 //// /// Base64ToString - Раскодировать строку из base64.
595 //// /// и другие функции модуля DciCore.
596 ////
597 //// // Указать GUID базового типа сущности.
598 //// var entityTypeGuid = <GUID типа сущности>;
599 //// var name = data.ValueByName("Наименование").ToString();
600 //// entity.Name = name;
601 //// entity.Save();
602 ////
603 //// /// -------------------------------------------------
604 //// /// Завершение приема сообщения.
605 //// /// -------------------------------------------------
606 ////
607 //// if (entityLink == null)
608 //// SetExternalEntityLinkGuid(entity.Id, entityTypeGuid, message.Sender, globalId);
609 ////
610 //// return string.Empty;
611 //// }
612
613 #endregion
614
615 #region Шаблон кода для обработчика отправки.
616
617 //// /// <summary>
618 //// /// Заполнить сообщение DCI информацией для обновления "Имя типа сущности".
619 //// /// </summary>
620 //// /// <param name="message">Сообщение DCI.</param>
621 //// /// <param name="entity">Сущность.</param>
622 //// /// <param name="globalEntityId">Глобальный ИД сущности.</param>
623 //// /// <returns>Обновленное сообщение DCI.</returns>
624 //// public virtual Directum.Dci.Sdk.IProcessMessage Fill<Имя типа сущности>DCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, Sungero.CoreEntities.IDatabookEntry entity, string globalEntityId)
625 //// {
626 //// /// -------------------------------------------------
627 //// /// Подготовка к формированию сообщения.
628 //// /// -------------------------------------------------
629 //// var attach = new ObjectDictionary();
630 //// attach.Add("GUID", globalEntityId);
631 ////
632 //// var record = <Репозиторий типа сущности>.As(entity);
633 ////
634 //// /// -------------------------------------------------
635 //// /// Заполнение сообщения свойствами записи справочника.
636 //// /// -------------------------------------------------
637 //// /// Для преобразования в строку можно использовать функции:
638 //// /// ConvertRXStatusToD5Status - Преобразовать статус записи RX в состояние записи D5.
639 //// /// StringToBase64 - Закодировать строку из base64.
640 //// /// и другие функции модуля DciCore.
641 //// attach.Add("Наименование", record.Name);
642 //// attach.Add("Состояние", DciCore.PublicFunctions.Module.ConvertD5StatusToRXStatus(record.Status));
643 ////
644 //// /// -------------------------------------------------
645 //// /// Завершение формирования сообщения.
646 //// /// -------------------------------------------------
647 //// message.AttachData(attach, "MainRecord");
648 //// message.Save();
649 //// return message;
650 //// }
651
652 #endregion
653
654 #endregion
655
656 #region Функции-обработчики по приёму.
657
658 #region Обработчик по удалению.
659
660 /// <summary>
661 /// Обработать сообщение по удалению сущности.
662 /// </summary>
663 /// <param name="message">Сообщение DCI.</param>
664 /// <returns>Текст ошибки или пустая строка.</returns>
665 public virtual string ProcessDeletionDCIMessage(Directum.Dci.Sdk.IProcessMessage message)
666 {
667 var data = message.LoadData("DeletedRecordData");
668 var guid = data.ValueByName("GUID");
669
670 var globalId = Guid.Parse(guid.ToString()).ToString();
671 var entityLink = GetEntityLinkByGuid(globalId);
672 if (entityLink == null)
673 return DirRX.DciCore.Resources.NotFoundExternalEntityLinkFormat(globalId);
674
675 // Сперва заполнить свойство IsDelete у ExternalEntityLinks и сохранить. Данное свойство используется в стандартной в событиях до удаления и если оно не означено, то запрещается удаление.
676 if (entityLink.IsDeleted != true)
677 {
678 entityLink.IsDeleted = true;
679 entityLink.Save();
680 }
681
682 // Удалить сущность из системы.
683 var deleteResult = string.Empty;
684 try
685 {
686 var entityId = entityLink.EntityId.Value;
687 var entityTypeGuid = entityLink.EntityType;
688 deleteResult = DeleteEntityByProcessName(entityId, entityTypeGuid, message.ProcessKindName);
689 }
690 catch (Exception ex)
691 {
692 deleteResult = DirRX.DciCore.Resources.DeleteEntityErrorFormat(ex.Message, ex.StackTrace);
693 Logger.Error(string.Format("Процесс {0}. {1}", message.ProcessGlobalId, deleteResult));
694 }
695
696 // Удалить связанные записи из справочника "Ссылки внешней системы".
697 if (string.IsNullOrWhiteSpace(deleteResult))
698 {
699 /// HACK получаем все сущности, так как:
700 /// 1. В стандартной разработке есть код по удалению записи из справочника ссылки "Ссылки внешней системы", соответственно наша ссылка устаревает (ссылаться на отсутствующую запись справочника).
701 /// 2. Есть шанс что в справочнике могли создаться дубли.
702 var entityLinks = GetAllEntityLinksByGuid(globalId);
703 foreach (var link in entityLinks)
704 Sungero.Commons.ExternalEntityLinks.Delete(link);
705 }
706
707 return deleteResult;
708 }
709
710 /// <summary>
711 /// Удалить сущности из системы по ИД.
712 /// </summary>
713 /// <param name="entityId">ИД сущности.</param>
714 /// <param name="entityTypeGuid">GUID типа сущности.</param>
715 /// <param name="processName">Имя процесса DCI.</param>
716 /// <returns>Текст ошибки или пустая строка.</returns>
717 [Public, Remote]
718 public virtual string DeleteEntityByProcessName(int entityId, string entityTypeGuid, string processName)
719 {
720 // HACK универсальный код по удалению записи справочника.
721 // TODO нужна доработка для удаления документов
722
723 var targetEntity = GetDatabookEntityById(entityId, entityTypeGuid);
724
725 if (targetEntity == null)
726 return DirRX.DciCore.Resources.NoEntitiesFoundToDeleteFormat(entityId, entityTypeGuid);
727
728 var lockInfo = Locks.GetLockInfo(targetEntity);
729 if (lockInfo.IsLocked)
730 return DirRX.DciCore.PublicConstants.Module.ErrorType.EntityIsLocked;
731
732 Sungero.CoreEntities.Databooks.Delete(targetEntity);
733
734 return string.Empty;
735
736 #region Шаблон кода для реализации функции в перекрытии.
737 //// switch (processName)
738 //// {
739 //// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
740 //// var entity = <Репозиторий типа сущности>.Get(entityId);
741 //// // Если запись заблокирована, отправить сообщение повторно в очередь.
742 //// var lockInfo = Locks.GetLockInfo(entity);
743 //// if (lockInfo.IsLocked)
744 //// return Constants.Module.ErrorType.EntityIsLocked;
745 //// <Репозиторий типа сущности>.Delete(entity);
746 //// break;
747 //// default:
748 //// return base.DeleteEntityByProcessName(entityId, processName);
749 //// }
750 //// return string.Empty;
751 #endregion
752
753 //return DirRX.DciCore.Resources.NotFoundDeleteHandlerByProcessFormat(processName);
754 }
755
756 #endregion
757
758 #region DCICheckLink
759
760 /// <summary>
761 /// Обработать сообщение Ping.
762 /// </summary>
763 /// <param name="message">Сообщение DCI.</param>
764 /// <returns>Пустая строка или текст ошибки.</returns>
765 public string ProcessPingDciMessage(Directum.Dci.Sdk.IProcessMessage message)
766 {
767 // Получить словарь с данными из сообщения.
768 var data = message.LoadData("TestData");
769 var dataGuid = data.ValueByName("GUID");
770 var dataDate = data.ValueByName("Date");
771 var dataNum1 = data.ValueByName("Num");
772 var dataNum2 = data.ValueByName("Num2");
773
774 if (dataGuid == null || dataDate == null || dataNum1 == null || dataNum2 == null)
775 return DirRX.DciCore.Resources.InsufficientDataError;
776
777 var guid = dataGuid.ToString();
778 var date = dataDate.ToString();
779 var num1 = dataNum1.ToString();
780 var num2 = dataNum2.ToString();
781
782 var stringBuilder = new System.Text.StringBuilder();
783
784 stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Получено сообщение. Значения данных:",
785 message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
786 stringBuilder.AppendLine(string.Format("GUID = {0}", guid));
787 stringBuilder.AppendLine(string.Format("Date = {0}", date));
788 stringBuilder.AppendLine(string.Format("Num = {0}", num1));
789 stringBuilder.AppendLine(string.Format("Num2 = {0}", num2));
790 Logger.Debug(stringBuilder.ToString());
791 stringBuilder.Clear();
792
793 Logger.Debug(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Проверка данных...",
794 message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
795 DateTime tempDate;
796 var isDate = Calendar.TryParseDate(date, out tempDate);
797 var tempNum1 = Functions.Module.StringToDouble(num1);
798 var tempNum2 = Functions.Module.StringToDouble(num2);
799 var isNumber1 = (tempNum1 != null);
800 var isNumber2 = (tempNum2 != null);
801 tempNum1 += 1.5;
802 tempNum2 += 1.0 / 3.0;
803
804 stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Результаты проверки данных:",
805 message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
806 stringBuilder.AppendLine(string.Format("Date = {0}, is date = {1}", date, isDate));
807 stringBuilder.AppendLine(string.Format("Num = {0}, is double = {1}", num1, isNumber1));
808 stringBuilder.AppendLine(string.Format("Num2 = {0}, is double = {1}", num2, isNumber2));
809 stringBuilder.AppendLine(string.Format("Num + 1.5 = {0}", tempNum1));
810 stringBuilder.AppendLine(string.Format("Num2 + 1/3 = {0}", tempNum2));
811 Logger.Debug(stringBuilder.ToString());
812 stringBuilder.Clear();
813
814 Logger.Debug(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Остановка процесса.",
815 message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
816 var process = GetProcessByMessage(message);
817 process.Stop();
818
819 return string.Empty;
820 }
821
822 /// <summary>
823 /// Обработать сообщение Pong.
824 /// </summary>
825 /// <param name="message">Сообщение DCI.</param>
826 /// <returns>Пустая строка или текст ошибки.</returns>
827 public string ProcessPongDciMessage(Directum.Dci.Sdk.IProcessMessage message)
828 {
829 // Получить параметры сообщения.
830 var messageParams = message.Params;
831 var paramDirection = messageParams.ValueByName("Direction").ToString();
832 var paramServiceType = messageParams.ValueByName("ServiceType").ToString();
833 var paramEventTime = messageParams.ValueByName("EventTime").ToString();
834 var paramEndpointType = messageParams.ValueByName("EndpointType").ToString();
835
836 var paramIndex = 0;
837 var paramServiceName = string.Empty;
838 paramIndex = messageParams.IndexOfName("ServiceName");
839 if (paramIndex >= 0)
840 paramServiceName = messageParams.GetValues(paramIndex).ToString();
841
842 var paramEndpointName = string.Empty;
843 paramIndex = messageParams.IndexOfName("EndpointName");
844 if (paramIndex >= 0)
845 paramEndpointName = messageParams.GetValues(paramIndex).ToString();
846
847 // var stringBuilder = new System.Text.StringBuilder();
848 // stringBuilder.AppendLine(string.Format("Процесс: {0} ({1}). Сообщение: {2} ({3}). Получено сообщение. Значения параметров:",
849 // message.ProcessGlobalId, message.ProcessKindName, message.GlobalId, message.Name));
850 // stringBuilder.AppendLine(string.Format("paramDirection = {0}", paramDirection));
851 // stringBuilder.AppendLine(string.Format("paramServiceType = {0}", paramServiceType));
852 // stringBuilder.AppendLine(string.Format("paramEventTime = {0}", paramEventTime));
853 // stringBuilder.AppendLine(string.Format("paramEndpointType = {0}", paramEndpointType));
854 // stringBuilder.AppendLine(string.Format("paramServiceName = {0}", paramServiceName));
855 // stringBuilder.AppendLine(string.Format("paramEndpointName = {0}", paramEndpointName));
856 // Logger.Debug(stringBuilder.ToString());
857 // stringBuilder.Clear();
858
859 var eventStr = new System.Text.StringBuilder();
860 var serviceType = string.Empty;
861 var endpointType = string.Empty;
862 eventStr.AppendFormat("Получатель {0}.", message.Sender);
863 if (paramServiceType == "SystemAdapter")
864 serviceType = "Адаптер к системе";
865 else if (paramServiceType == "TransportAdapter")
866 serviceType = "Адаптер к транспорту";
867 else if (paramServiceType == "Transport")
868 serviceType = "Транспорт";
869 eventStr.AppendFormat(" {0}", serviceType);
870
871 if (!string.IsNullOrWhiteSpace(paramServiceName))
872 eventStr.AppendFormat(" {0}", paramServiceName);
873
874 if (paramDirection == "From")
875 {
876 eventStr.Append(": Сообщение получено");
877
878 if (paramEndpointType == "System")
879 endpointType = "из системы";
880 else if (paramEndpointType == "RoutingService")
881 endpointType = "из сервиса маршрутизации";
882 else if (paramEndpointType == "TransportAdapter")
883 endpointType = "из адаптера к транспорту";
884 else if (paramEndpointType == "Transport")
885 endpointType = "из транспорта";
886
887 eventStr.AppendFormat(" {0}", endpointType);
888 }
889 else
890 {
891 eventStr.Append(": Сообщение отправлено");
892
893 if (paramEndpointType == "System")
894 endpointType = "в систему";
895 else if (paramEndpointType == "RoutingService")
896 endpointType = "в сервис маршрутизации";
897 else if (paramEndpointType == "TransportAdapter")
898 endpointType = "в адаптер к транспорту";
899 else if (paramEndpointType == "Transport")
900 endpointType = "в транспорт";
901
902 eventStr.AppendFormat(" {0}", endpointType);
903 }
904
905 if (!string.IsNullOrWhiteSpace(paramEndpointName))
906 eventStr.AppendFormat(" {0}", paramEndpointName);
907
908 Logger.Debug(eventStr.ToString());
909
910 return string.Empty;
911 }
912 #endregion
913
914 #endregion
915
916 #region Функции-обработчики по отправке.
917
918 #region DCICheckLink
919
920 /// <summary>
921 /// Отправить тестовое сообщение для проверки связи между системами.
922 /// </summary>
923 /// <returns>GUID процесса DCI.</returns>
924 [Public, Remote(IsPure = true)]
925 public string SendDciPing()
926 {
927 var setting = Functions.DciSetting.GetDciSettings();
928 var processFactory = GetProcessFactory(setting);
929
930 var message = CreateMessage(Constants.DciProcessKind.DCICheckLinkProcess.Name, Constants.DciProcessKind.DCICheckLinkProcess.PingMessage.Name, string.Empty, int.MinValue, string.Empty, processFactory, setting, true);
931
932 // Сформировать тестовое сообщение.
933 var attach = new ObjectDictionary();
934 attach.Add("GUID", Guid.NewGuid().ToDelphiGuid()); // TODO сделать более явный вызов ToDelphiGuid из Directum.Dci.Common. Реализовать при проработке отправки сообщений.
935 attach.Add("Date", Calendar.Today);
936 attach.Add("Num", 1.0 / 3.0);
937 attach.Add("Num2", 1.25);
938 attach.Add("TestStatus", Sungero.CoreEntities.DatabookEntry.Status.Active);
939
940 message.AttachData(attach, "TestData");
941 message.Save();
942 message.Send();
943
944 var process = GetProcessByMessage(message);
945 return process.GlobalId;
946 }
947
948 #endregion
949
950 /// <summary>
951 /// Заполнить сообщение DCI информацией для удаления сущности.
952 /// </summary>
953 /// <param name="message">Сообщение DCI.</param>
954 /// <param name="globalEntityId">Глобальный ИД сущности.</param>
955 /// <returns>Обновленное сообщение DCI.</returns>
956 public virtual Directum.Dci.Sdk.IProcessMessage CreateDeletionDCIMessageAttach(Directum.Dci.Sdk.IProcessMessage message, string globalEntityId)
957 {
958 var attach = new ObjectDictionary();
959 attach.Add("GUID", globalEntityId);
960 message.AttachData(attach, "DeletedRecordData");
961 message.Save();
962 return message;
963 // TODO помечать запись удаленной в extlinks
964
965 #region Шаблон кода для реализации функции в перекрытии.
966 //// switch (message.ProcessKindName)
967 //// {
968 //// case <Имя процесса синхронизации, обычно заканчивается на ReferenceSynchronization>:
969 //// var attach = new ObjectDictionary();
970 //// attach.Add("GUID", globalEntityId);
971 //// message.AttachData(attach, "DeletedRecordData");
972 ////
973 //// var entityId = GetEntityIdByGuid(globalEntityId);
974 //// var entity = <Репозиторий типа сущности>.Get(entityId);
975 //// var customAttach = new ObjectDictionary();
976 //// //customAttach.Add("", entity.);
977 //// message.AttachData(customAttach, "CustomData");
978 ////
979 //// message.Save();
980 //// break;
981 ////
982 //// default:
983 //// return base.CreateDeletionDCIMessageAttach(message, globalEntityId);
984 //// }
985 //// return message;
986 #endregion
987 }
988
989 #endregion
990
991 }
992 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Server
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 {
2 "$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
3 "NameGuid": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
4 "Name": "DciProcessKind",
5 "BaseGuid": "04581d26-0780-4cfd-b3cd-c2cafc5798b0",
6 "CanBeNavigationPropertyType": true,
7 "Code": "DciProcessKind",
8 "CreationAreaMetadata": {
9 "NameGuid": "f7766750-eee2-4fcd-8003-5c06a90d1f44",
10 "Name": "CreationArea",
11 "Buttons": [],
12 "IsAncestorMetadata": true
13 },
14 "ExtraSearchProperties": [],
15 "FilterPanel": {
16 "NameGuid": "b0125fbd-3b91-4dbb-914a-689276216404",
17 "Name": "FilterPanel",
18 "Controls": [],
19 "IsAncestorMetadata": true
20 },
21 "Forms": [
22 {
23 "$type": "Sungero.Metadata.StandaloneFormMetadata, Sungero.Metadata",
24 "NameGuid": "e3903018-e6ef-4336-a294-2ccdc8d0bf63",
25 "Name": "Card",
26 "Controls": [
27 {
28 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
29 "NameGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
30 "Name": "ControlGroup"
31 },
32 {
33 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
34 "NameGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
35 "Name": "Main",
36 "ColumnDefinitions": [
37 {
38 "Percentage": 49.96
39 },
40 {
41 "Percentage": 50.04
42 }
43 ],
44 "ColumnNumber": 0,
45 "ColumnSpan": 1,
46 "ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
47 "RowNumber": 0,
48 "RowSpan": 1
49 },
50 {
51 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
52 "NameGuid": "3193c97c-1a9f-499f-95a3-9168dc1bc0b3",
53 "Name": "Control",
54 "ColumnNumber": 0,
55 "ColumnSpan": 2,
56 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
57 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
58 "PropertyGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce",
59 "RowNumber": 0,
60 "RowSpan": 1,
61 "Settings": []
62 },
63 {
64 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
65 "NameGuid": "03aa2121-2040-4083-9730-169604e1ebd6",
66 "Name": "ProcessType",
67 "ColumnNumber": 0,
68 "ColumnSpan": 1,
69 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
70 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
71 "PropertyGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed",
72 "RowNumber": 2,
73 "RowSpan": 1,
74 "Settings": []
75 },
76 {
77 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
78 "NameGuid": "940f57df-25e6-4130-acb3-bc1aae6659f4",
79 "Name": "Status",
80 "ColumnNumber": 0,
81 "ColumnSpan": 1,
82 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
83 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
84 "PropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1",
85 "RowNumber": 3,
86 "RowSpan": 1,
87 "Settings": []
88 },
89 {
90 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
91 "NameGuid": "0fa43e10-6d48-4828-add2-5632c0b1c4c6",
92 "Name": "Description",
93 "ColumnNumber": 0,
94 "ColumnSpan": 2,
95 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
96 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
97 "PropertyGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b",
98 "RowNumber": 1,
99 "RowSpan": 1,
100 "Settings": []
101 },
102 {
103 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
104 "NameGuid": "c424d5cc-88b4-4f81-a951-b57d2eabb9da",
105 "Name": "Additional",
106 "ColumnNumber": 0,
107 "ColumnSpan": 1,
108 "ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
109 "RowNumber": 1,
110 "RowSpan": 1
111 },
112 {
113 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
114 "NameGuid": "3c299716-5b10-4c75-b130-49533d077c3d",
115 "Name": "Note",
116 "ColumnNumber": 0,
117 "ColumnSpan": 1,
118 "GroupType": "WithTitleNoBorder",
119 "ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
120 "RowNumber": 2,
121 "RowSpan": 1
122 },
123 {
124 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
125 "NameGuid": "462ec2b8-adee-4c71-930c-660c2eeb52c8",
126 "Name": "Messages",
127 "ColumnNumber": 0,
128 "ColumnSpan": 1,
129 "GroupType": "WithTitleNoBorder",
130 "ParentGuid": "ae9b3c49-c2d9-4028-ad33-4fa8226dcea8",
131 "RowNumber": 3,
132 "RowSpan": 1
133 },
134 {
135 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
136 "NameGuid": "175cf315-4427-4d6b-8120-5bd7b57bd993",
137 "Name": "Messages",
138 "ColumnNumber": 0,
139 "ColumnSpan": 1,
140 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.GridControlToChildCollectionBinder",
141 "HeaderLocation": "None",
142 "ParentGuid": "462ec2b8-adee-4c71-930c-660c2eeb52c8",
143 "PropertyGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11",
144 "RowNumber": 0,
145 "RowSpan": 1,
146 "Settings": [
147 {
148 "Name": "NeedExpand",
149 "Value": true
150 }
151 ]
152 },
153 {
154 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
155 "NameGuid": "5834aee8-ab03-4ea3-a8f5-fb9e23a1167d",
156 "Name": "Note",
157 "ColumnNumber": 0,
158 "ColumnSpan": 1,
159 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.TextEditorToTextBinder",
160 "HeaderLocation": "None",
161 "ParentGuid": "3c299716-5b10-4c75-b130-49533d077c3d",
162 "PropertyGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a",
163 "RowNumber": 0,
164 "RowSpan": 1,
165 "Settings": [
166 {
167 "Name": "Height",
168 "Value": 80
169 }
170 ]
171 },
172 {
173 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
174 "NameGuid": "3753bf8a-804c-4607-bf29-16b90ec2c4ca",
175 "Name": "LastDciSyncDate",
176 "ColumnNumber": 1,
177 "ColumnSpan": 1,
178 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DateTimeEditorToDateTimeBinder",
179 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
180 "PropertyGuid": "6519340c-d9ae-4a12-a6c9-819f964eda5d",
181 "RowNumber": 3,
182 "RowSpan": 1,
183 "Settings": []
184 },
185 {
186 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
187 "NameGuid": "93969610-fafe-4fc3-981f-8e0ba52bca9e",
188 "Name": "EntityTypeGUID",
189 "ColumnNumber": 1,
190 "ColumnSpan": 1,
191 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
192 "ParentGuid": "7329a31f-6786-41d3-a5fc-cdd3fde0e7bf",
193 "PropertyGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318",
194 "RowNumber": 2,
195 "RowSpan": 1,
196 "Settings": []
197 }
198 ]
199 }
200 ],
201 "HandledEvents": [
202 "BeforeSaveServer"
203 ],
204 "HideFromCreationArea": true,
205 "HideFromNavigationEditorCreationArea": true,
206 "IconResourcesKeys": [],
207 "IsAutoCreated": true,
208 "IsStatusEnabled": true,
209 "OperationsClass": "",
210 "Overridden": [
211 "IsStatusEnabled",
212 "IsAutoCreated",
213 "HideFromCreationArea",
214 "HideFromNavigationEditorCreationArea"
215 ],
216 "Properties": [
217 {
218 "$type": "Sungero.Metadata.EnumPropertyMetadata, Sungero.Metadata",
219 "NameGuid": "1dcedc29-5140-4770-ac92-eabc212326a1",
220 "Name": "Status",
221 "IsAncestorMetadata": true,
222 "Overridden": [
223 "IsShowedInList",
224 "IsVisibility",
225 "CanBeSearch",
226 "PreviousPropertyGuid"
227 ],
228 "PreviousPropertyGuid": "d7319199-3333-49cc-a7b9-8467617ccf20"
229 },
230 {
231 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
232 "NameGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce",
233 "Name": "Name",
234 "Code": "Name",
235 "IsDisplayValue": true,
236 "IsEnabled": false,
237 "IsQuickSearchAllowed": true,
238 "IsRequired": true,
239 "IsUnique": true,
240 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
241 "PreviousPropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1"
242 },
243 {
244 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
245 "NameGuid": "41103636-132e-49d5-91ea-020c1603cd16",
246 "Name": "GUID",
247 "Code": "GUID",
248 "IsEnabled": false,
249 "IsRequired": true,
250 "IsUnique": true,
251 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
252 "PreviousPropertyGuid": "9ce7f50e-38ac-4ce4-96e6-631b6a0524ce"
253 },
254 {
255 "$type": "Sungero.Metadata.CollectionPropertyMetadata, Sungero.Metadata",
256 "NameGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11",
257 "Name": "Messages",
258 "Code": "DciProcessKin1",
259 "EntityGuid": "97a41c12-ed37-4790-afd4-529b70493184",
260 "IsEnabled": false,
261 "IsShowedInList": false,
262 "PreviousPropertyGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b"
263 },
264 {
265 "$type": "Sungero.Metadata.EnumPropertyMetadata, Sungero.Metadata",
266 "NameGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed",
267 "Name": "ProcessType",
268 "Code": "ProcessType",
269 "DirectValues": [
270 {
271 "NameGuid": "7581b95a-e6d8-4937-a3b2-4d9c5079d8ac",
272 "Name": "DataSync",
273 "Code": "DataSync"
274 },
275 {
276 "NameGuid": "7ffd482a-9555-4b61-b220-b032071636e2",
277 "Name": "DocSync",
278 "Code": "DocSync"
279 },
280 {
281 "NameGuid": "704fc64b-e29d-4b94-a639-cd683fffc2e0",
282 "Name": "Process",
283 "Code": "Process"
284 }
285 ],
286 "IsEnabled": false,
287 "IsRequired": true,
288 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DropDownEditorToEnumerationBinder",
289 "PreviousPropertyGuid": "be1c954e-af9a-4fd0-b0c6-3f9bdcf93f11"
290 },
291 {
292 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
293 "NameGuid": "93e6d0ee-f8cd-4418-ab62-fe087e38669b",
294 "Name": "Description",
295 "Code": "Description",
296 "Length": 1000,
297 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
298 "PreviousPropertyGuid": "41103636-132e-49d5-91ea-020c1603cd16"
299 },
300 {
301 "$type": "Sungero.Metadata.TextPropertyMetadata, Sungero.Metadata",
302 "NameGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a",
303 "Name": "Note",
304 "Code": "Note",
305 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToTextBinder",
306 "PreviousPropertyGuid": "a0d0f428-c7aa-47fb-95bb-3227ab2b48ed"
307 },
308 {
309 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
310 "NameGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318",
311 "Name": "EntityTypeGUID",
312 "Code": "EntityTypeGUID",
313 "IsEnabled": false,
314 "IsRequired": true,
315 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
316 "PreviousPropertyGuid": "4bdb3aae-6cc0-41de-8a82-5f548a5d9d6a"
317 },
318 {
319 "$type": "Sungero.Metadata.DateTimePropertyMetadata, Sungero.Metadata",
320 "NameGuid": "6519340c-d9ae-4a12-a6c9-819f964eda5d",
321 "Name": "LastOutSyncDate",
322 "Code": "LastOutSyncDat",
323 "DateTimeFormat": "DateTime",
324 "IsRequired": true,
325 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.DateTimeEditorToDateTimeBinder",
326 "PreviousPropertyGuid": "dcba824d-c55b-4d07-92b3-ec2fc5bee318"
327 }
328 ],
329 "PublicConstants": [
330 {
331 "Name": "Name",
332 "ParentClasses": [
333 "DciProcessKind",
334 "DCICheckLinkProcess"
335 ],
336 "TypeName": "System.String",
337 "Value": "\"DCICheckLink\""
338 },
339 {
340 "Name": "Name",
341 "ParentClasses": [
342 "DciProcessKind",
343 "DCICheckLinkProcess",
344 "PingMessage"
345 ],
346 "TypeName": "System.String",
347 "Value": "\"Ping\""
348 },
349 {
350 "Name": "Name",
351 "ParentClasses": [
352 "DciProcessKind",
353 "DCICheckLinkProcess",
354 "PongMessage"
355 ],
356 "TypeName": "System.String",
357 "Value": "\"Pong\""
358 },
359 {
360 "Name": "RecordChanges",
361 "ParentClasses": [
362 "DciProcessKind",
363 "DefaultDciMessageName"
364 ],
365 "TypeName": "System.String",
366 "Value": "\"SynchronizeRecordChanges\""
367 },
368 {
369 "Name": "RecordDeletion",
370 "ParentClasses": [
371 "DciProcessKind",
372 "DefaultDciMessageName"
373 ],
374 "TypeName": "System.String",
375 "Value": "\"SynchronizeRecordDeletion\""
376 },
377 {
378 "Name": "RecordGUID",
379 "ParentClasses": [
380 "DciProcessKind",
381 "DCICheckLinkProcess"
382 ],
383 "TypeName": "System.Guid",
384 "Value": "new System.Guid(\"FF629668-7663-406C-A89E-D57C0F0F4D0C\")"
385 },
386 {
387 "Name": "RowGUID",
388 "ParentClasses": [
389 "DciProcessKind",
390 "DCICheckLinkProcess",
391 "PingMessage"
392 ],
393 "TypeName": "System.Guid",
394 "Value": "new System.Guid(\"7A39F16B-7F3E-4D54-8807-947371282914\")"
395 },
396 {
397 "Name": "RowGUID",
398 "ParentClasses": [
399 "DciProcessKind",
400 "DCICheckLinkProcess",
401 "PongMessage"
402 ],
403 "TypeName": "System.Guid",
404 "Value": "new System.Guid(\"72EC2A7B-5CAF-464A-A89E-AA9D3A40AF95\")"
405 }
406 ],
407 "PublicFunctions": [
408 {
409 "Name": "CheckProcessKindExists",
410 "IsRemote": true,
411 "Parameters": [
412 {
413 "Name": "processName",
414 "ParameterType": "global::System.String",
415 "ParameterTypeFullName": "System.String"
416 },
417 {
418 "Name": "messageName",
419 "ParameterType": "global::System.String",
420 "ParameterTypeFullName": "System.String"
421 }
422 ],
423 "Placement": "Shared",
424 "ReturnType": "global::System.String",
425 "ReturnTypeFullName": "System.String"
426 },
427 {
428 "Name": "GetProcessKindByName",
429 "IsRemote": true,
430 "Parameters": [
431 {
432 "Name": "processName",
433 "ParameterType": "global::System.String",
434 "ParameterTypeFullName": "System.String"
435 }
436 ],
437 "Placement": "Shared",
438 "ReturnType": "global::DirRX.DciCore.IDciProcessKind",
439 "ReturnTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
440 }
441 ],
442 "PublicStructures": [],
443 "ResourcesKeys": [
444 "NotFoundProcessKindByProcessName",
445 "NotFoundMessageInProcessKind",
446 "NotValidDciName",
447 "IncorrectProcessName",
448 "IncorrectMessageName",
449 "NotUniqueMessageName"
450 ],
451 "RibbonCardMetadata": {
452 "NameGuid": "3deae715-fa8f-4776-8f98-e287417462bb",
453 "Name": "RibbonCard",
454 "Categories": [],
455 "Elements": [],
456 "Groups": [],
457 "IsAncestorMetadata": true,
458 "Pages": [],
459 "RibbonKind": "Card"
460 },
461 "RibbonCollectionMetadata": {
462 "NameGuid": "34141cb0-eeb0-49d8-8b86-6ce14ac8b481",
463 "Name": "RibbonCollection",
464 "Categories": [],
465 "Elements": [],
466 "Groups": [],
467 "IsAncestorMetadata": true,
468 "Pages": []
469 },
470 "Versions": [
471 {
472 "Type": "EntityMetadata",
473 "Number": 11
474 }
475 ]
476 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="NotFoundProcessKindByProcessName" xml:space="preserve">
121 <value>В справочнике "Виды межсистемных процессов" не найдена действующая запись для процесса с именем {0}. Выполните инициализацию решения, проверьте что запись действующая.</value>
122 </data>
123 <data name="NotFoundMessageInProcessKind" xml:space="preserve">
124 <value>В справочнике "Виды межсистемных процессов" для процесса {0} не найдено сообщение с именем {1}. Выполните инициализацию решения.</value>
125 </data>
126 <data name="NotValidDciName" xml:space="preserve">
127 <value>Некорректное имя {0}. Имя должно содержать только буквы (латиница, кириллица), цифры и символ подчеркивания. Имя не должно начинаться с цифры.</value>
128 </data>
129 <data name="IncorrectProcessName" xml:space="preserve">
130 <value>Измените имя вида процесса. {0}</value>
131 </data>
132 <data name="IncorrectMessageName" xml:space="preserve">
133 <value>Измените имя сообщения. {0}</value>
134 </data>
135 <data name="NotUniqueMessageName" xml:space="preserve">
136 <value>Имя сообщения "{0}" должно быть уникальным в разрезе процесса "{1}".</value>
137 </data>
138 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="NotFoundProcessKindByProcessName" xml:space="preserve">
121 <value>В справочнике "Виды межсистемных процессов" не найдена действующая запись для процесса с именем {0}. Выполните инициализацию решения, проверьте что запись действующая.</value>
122 </data>
123 <data name="NotFoundMessageInProcessKind" xml:space="preserve">
124 <value>В справочнике "Виды межсистемных процессов" для процесса {0} не найдено сообщение с именем {1}. Выполните инициализацию решения.</value>
125 </data>
126 <data name="NotValidDciName" xml:space="preserve">
127 <value>Некорректное имя {0}. Имя должно содержать только буквы (латиница, кириллица), цифры и символ подчеркивания. Имя не должно начинаться с цифры.</value>
128 </data>
129 <data name="IncorrectProcessName" xml:space="preserve">
130 <value>Измените имя вида процесса. {0}</value>
131 </data>
132 <data name="IncorrectMessageName" xml:space="preserve">
133 <value>Измените имя сообщения. {0}</value>
134 </data>
135 <data name="NotUniqueMessageName" xml:space="preserve">
136 <value>Имя сообщения "{0}" должно быть уникальным в разрезе процесса "{1}".</value>
137 </data>
138 </root>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using Sungero.Core;
3
4 namespace DirRX.DciCore.Constants
5 {
6 public static class DciProcessKind
7 {
8
9 /// <summary>
10 /// Стандартные имена сообщений для синхронизации записей справочника через DCI.
11 /// </summary>
12 public static class DefaultDciMessageName
13 {
14 [Public]
15 public const string RecordChanges = "SynchronizeRecordChanges";
16 [Public]
17 public const string RecordDeletion = "SynchronizeRecordDeletion";
18 }
19
20 #region Процесс DCICheckLink.
21
22 /// <summary>
23 /// Значения полей для записи справочника.
24 /// </summary>
25 public static class DCICheckLinkProcess
26 {
27 [Public]
28 public static readonly Guid RecordGUID = Guid.Parse("FF629668-7663-406C-A89E-D57C0F0F4D0C");
29 [Public]
30 public const string Name = "DCICheckLink";
31 public const string Description = "Проверка связи между системами";
32 public const string Note = "Отправка тестового сообщения. Используется на обложке решения.";
33
34 public static class PingMessage
35 {
36 [Public]
37 public static readonly Guid RowGUID = Guid.Parse("7A39F16B-7F3E-4D54-8807-947371282914");
38 [Public]
39 public const string Name = "Ping";
40
41 public const string Note = "Сообщение с тестовыми данными";
42 }
43
44 public static class PongMessage
45 {
46 [Public]
47 public static readonly Guid RowGUID = Guid.Parse("72EC2A7B-5CAF-464A-A89E-AA9D3A40AF95");
48 [Public]
49 public const string Name = "Pong";
50
51 public const string Note = "Отбойник о получении сообщения";
52 }
53 }
54 #endregion
55
56 }
57 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore
9 {
10 partial class DciProcessKindSharedHandlers
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciProcessKind;
7
8 namespace DirRX.DciCore.Shared
9 {
10 partial class DciProcessKindFunctions
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Structures.DciProcessKind
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_Name" xml:space="preserve">
121 <value>Name</value>
122 </data>
123 <data name="DisplayName" xml:space="preserve">
124 <value>Вид межсистемного процесса</value>
125 </data>
126 <data name="AccusativeDisplayName" xml:space="preserve">
127 <value>Виды межсистемных процессов</value>
128 </data>
129 <data name="CollectionDisplayName" xml:space="preserve">
130 <value>Виды межсистемных процессов</value>
131 </data>
132 <data name="Property_GUID" xml:space="preserve">
133 <value>GUID записи</value>
134 </data>
135 <data name="Property_Messages" xml:space="preserve">
136 <value>Сообщения</value>
137 </data>
138 <data name="Property_ProcessType" xml:space="preserve">
139 <value>Тип процесса</value>
140 </data>
141 <data name="Enum_ProcessType_DataSync" xml:space="preserve">
142 <value>Синхронизация справочника</value>
143 </data>
144 <data name="Enum_ProcessType_DocSync" xml:space="preserve">
145 <value>Синхронизация документа</value>
146 </data>
147 <data name="Enum_ProcessType_Process" xml:space="preserve">
148 <value>Сквозной бизнес-процесс</value>
149 </data>
150 <data name="ControlGroup_7329a31f678641d3a5fccdd3fde0e7bf" xml:space="preserve">
151 <value />
152 </data>
153 <data name="ControlGroup_3c2997165b104c75b13049533d077c3d" xml:space="preserve">
154 <value>Примечания</value>
155 </data>
156 <data name="Property_Description" xml:space="preserve">
157 <value>Описание</value>
158 </data>
159 <data name="Property_Note" xml:space="preserve">
160 <value>Примечание</value>
161 </data>
162 <data name="ControlGroup_c424d5cc88b44f81a951b57d2eabb9da" xml:space="preserve">
163 <value />
164 </data>
165 <data name="ControlGroup_462ec2b8adee4c71930c660c2eeb52c8" xml:space="preserve">
166 <value>Сообщения</value>
167 </data>
168 <data name="Property_EntityTypeGUID" xml:space="preserve">
169 <value>GUID типа сущности</value>
170 </data>
171 <data name="Property_LastOutSyncDate" xml:space="preserve">
172 <value>Дата последней отправки</value>
173 </data>
174 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_Name" xml:space="preserve">
121 <value>Имя</value>
122 </data>
123 <data name="DisplayName" xml:space="preserve">
124 <value>Вид межсистемного процесса</value>
125 </data>
126 <data name="AccusativeDisplayName" xml:space="preserve">
127 <value>Виды межсистемных процессов</value>
128 </data>
129 <data name="CollectionDisplayName" xml:space="preserve">
130 <value>Виды межсистемных процессов</value>
131 </data>
132 <data name="Property_GUID" xml:space="preserve">
133 <value>GUID записи</value>
134 </data>
135 <data name="Property_ProcessType" xml:space="preserve">
136 <value>Тип процесса</value>
137 </data>
138 <data name="Enum_ProcessType_DataSync" xml:space="preserve">
139 <value>Синхронизация справочника</value>
140 </data>
141 <data name="Enum_ProcessType_Process" xml:space="preserve">
142 <value>Сквозной бизнес-процесс</value>
143 </data>
144 <data name="Enum_ProcessType_DocSync" xml:space="preserve">
145 <value>Синхронизация документа</value>
146 </data>
147 <data name="ControlGroup_3c2997165b104c75b13049533d077c3d" xml:space="preserve">
148 <value>Примечания</value>
149 </data>
150 <data name="Property_Description" xml:space="preserve">
151 <value>Описание</value>
152 </data>
153 <data name="Property_Messages" xml:space="preserve">
154 <value>Сообщения</value>
155 </data>
156 <data name="Property_Note" xml:space="preserve">
157 <value>Примечание</value>
158 </data>
159 <data name="ControlGroup_462ec2b8adee4c71930c660c2eeb52c8" xml:space="preserve">
160 <value>Сообщения</value>
161 </data>
162 <data name="Property_EntityTypeGUID" xml:space="preserve">
163 <value>GUID типа сущности</value>
164 </data>
165 <data name="Property_LastOutSyncDate" xml:space="preserve">
166 <value>Дата последней отправки</value>
167 </data>
168 </root>
...\ No newline at end of file ...\ No newline at end of file
1 {
2 "$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
3 "NameGuid": "97a41c12-ed37-4790-afd4-529b70493184",
4 "Name": "DciProcessKindMessages",
5 "AccessRightsMode": "NoRight",
6 "BaseGuid": "a3d38bf5-0414-41f6-bb33-a4621d2e5a60",
7 "CanBeNavigationPropertyType": true,
8 "Code": "DciProcessKin1",
9 "ExtraSearchProperties": [],
10 "IsChildEntity": true,
11 "Properties": [
12 {
13 "$type": "Sungero.Metadata.NavigationPropertyMetadata, Sungero.Metadata",
14 "NameGuid": "298ffbfe-b9e8-49b2-9f67-50503d28bfaa",
15 "Name": "DciProcessKind",
16 "CanBeSearch": false,
17 "Code": "DciProcessKind",
18 "EntityGuid": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
19 "IsReferenceToRootEntity": true,
20 "IsShowedInList": false
21 },
22 {
23 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
24 "NameGuid": "a041d7a7-df7b-4973-8edf-c09e9b64d46a",
25 "Name": "Name",
26 "CanBeSearch": false,
27 "Code": "Name",
28 "IsEnabled": false,
29 "IsRequired": true,
30 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
31 "PreviousPropertyGuid": "298ffbfe-b9e8-49b2-9f67-50503d28bfaa"
32 },
33 {
34 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
35 "NameGuid": "72f6b57a-e893-430d-855b-1658630682bc",
36 "Name": "Note",
37 "CanBeSearch": false,
38 "Code": "Note",
39 "Length": 1000,
40 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
41 "PreviousPropertyGuid": "a041d7a7-df7b-4973-8edf-c09e9b64d46a"
42 },
43 {
44 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
45 "NameGuid": "43b48378-c48c-4631-b22c-c8ccbdae3bf4",
46 "Name": "RowGUID",
47 "CanBeSearch": false,
48 "Code": "RowGUID",
49 "IsEnabled": false,
50 "IsRequired": true,
51 "IsUnique": true,
52 "IsVisibility": false,
53 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
54 "PreviousPropertyGuid": "72f6b57a-e893-430d-855b-1658630682bc"
55 }
56 ],
57 "PublicStructures": [],
58 "RibbonCardMetadata": {
59 "NameGuid": "99f6c7c3-a806-41f5-bdae-9069316f5626",
60 "Name": "RibbonCard",
61 "Categories": [],
62 "Elements": [],
63 "Groups": [],
64 "IsAncestorMetadata": true,
65 "Pages": [],
66 "RibbonKind": "Card"
67 },
68 "RibbonCollectionMetadata": {
69 "NameGuid": "53c4e4be-6d89-4fc2-8003-44582166fc12",
70 "Name": "RibbonCollection",
71 "Categories": [],
72 "Elements": [],
73 "Groups": [],
74 "IsAncestorMetadata": true,
75 "Pages": []
76 },
77 "Versions": [
78 {
79 "Type": "EntityMetadata",
80 "Number": 11
81 }
82 ]
83 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_Name" xml:space="preserve">
121 <value>Имя сообщения</value>
122 </data>
123 <data name="Property_Note" xml:space="preserve">
124 <value>Примечание</value>
125 </data>
126 <data name="Property_RowGUID" xml:space="preserve">
127 <value>GUID строки</value>
128 </data>
129 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_Name" xml:space="preserve">
121 <value>Имя сообщения</value>
122 </data>
123 <data name="Property_Note" xml:space="preserve">
124 <value>Примечание</value>
125 </data>
126 <data name="Property_RowGUID" xml:space="preserve">
127 <value>GUID строки</value>
128 </data>
129 </root>
...\ No newline at end of file ...\ No newline at end of file
1 {
2 "$type": "Sungero.Metadata.EntityMetadata, Sungero.Metadata",
3 "NameGuid": "0a291244-941b-4006-8497-06ecd1fabca4",
4 "Name": "DciSetting",
5 "BaseGuid": "04581d26-0780-4cfd-b3cd-c2cafc5798b0",
6 "CanBeNavigationPropertyType": true,
7 "Code": "DciSetting",
8 "CreationAreaMetadata": {
9 "NameGuid": "f7766750-eee2-4fcd-8003-5c06a90d1f44",
10 "Name": "CreationArea",
11 "Buttons": [],
12 "IsAncestorMetadata": true
13 },
14 "ExtraSearchProperties": [],
15 "FilterPanel": {
16 "NameGuid": "b0125fbd-3b91-4dbb-914a-689276216404",
17 "Name": "FilterPanel",
18 "Controls": [],
19 "IsAncestorMetadata": true
20 },
21 "Forms": [
22 {
23 "$type": "Sungero.Metadata.StandaloneFormMetadata, Sungero.Metadata",
24 "NameGuid": "f345093b-e6c2-4742-85eb-bc661cd50bee",
25 "Name": "Card",
26 "Controls": [
27 {
28 "$type": "Sungero.Metadata.ControlGroupMetadata, Sungero.Metadata",
29 "NameGuid": "be475439-282f-4f2d-b313-5efcff782627",
30 "Name": "ControlGroup"
31 },
32 {
33 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
34 "NameGuid": "662ffa75-a86a-4ed0-98f8-a0ee5d7d5b63",
35 "Name": "Control",
36 "ColumnNumber": 0,
37 "ColumnSpan": 1,
38 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
39 "ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
40 "PropertyGuid": "f9c79369-67c9-44e3-9f14-48aaec8cf3cd",
41 "RowNumber": 0,
42 "RowSpan": 1,
43 "Settings": []
44 },
45 {
46 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
47 "NameGuid": "d2fb7766-a0ad-4991-b508-9c86ac60d5df",
48 "Name": "AdapterServiceUrl",
49 "ColumnNumber": 0,
50 "ColumnSpan": 1,
51 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
52 "ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
53 "PropertyGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f",
54 "RowNumber": 1,
55 "RowSpan": 1,
56 "Settings": []
57 },
58 {
59 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
60 "NameGuid": "2ef7e302-252c-4213-b34a-8c82631497ec",
61 "Name": "AdapterSiteUrl",
62 "ColumnNumber": 0,
63 "ColumnSpan": 1,
64 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
65 "ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
66 "PropertyGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357",
67 "RowNumber": 2,
68 "RowSpan": 1,
69 "Settings": []
70 },
71 {
72 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
73 "NameGuid": "a434e717-94c3-4087-81c4-0f073cd77490",
74 "Name": "ExchangeFolder",
75 "ColumnNumber": 0,
76 "ColumnSpan": 1,
77 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
78 "ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
79 "PropertyGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b",
80 "RowNumber": 3,
81 "RowSpan": 1,
82 "Settings": []
83 },
84 {
85 "$type": "Sungero.Metadata.ControlMetadata, Sungero.Metadata",
86 "NameGuid": "f6c42c4c-6cf9-4f56-a9a6-388d6f2ae07f",
87 "Name": "ExternalSystemID",
88 "ColumnNumber": 0,
89 "ColumnSpan": 1,
90 "DataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
91 "ParentGuid": "be475439-282f-4f2d-b313-5efcff782627",
92 "PropertyGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e",
93 "RowNumber": 4,
94 "RowSpan": 1,
95 "Settings": []
96 }
97 ]
98 }
99 ],
100 "HideFromCreationArea": true,
101 "HideFromNavigationEditorCreationArea": true,
102 "IconResourcesKeys": [],
103 "IsAutoCreated": true,
104 "IsVisible": false,
105 "OperationsClass": "",
106 "Overridden": [
107 "HideFromCreationArea",
108 "HideFromNavigationEditorCreationArea",
109 "IsAutoCreated",
110 "IsVisible"
111 ],
112 "Properties": [
113 {
114 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
115 "NameGuid": "f9c79369-67c9-44e3-9f14-48aaec8cf3cd",
116 "Name": "SystemID",
117 "Code": "SystemID",
118 "IsDisplayValue": true,
119 "IsQuickSearchAllowed": true,
120 "IsRequired": true,
121 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
122 "PreviousPropertyGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e"
123 },
124 {
125 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
126 "NameGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f",
127 "Name": "AdapterServiceUrl",
128 "Code": "AdapterService",
129 "IsRequired": true,
130 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
131 "PreviousPropertyGuid": "1dcedc29-5140-4770-ac92-eabc212326a1"
132 },
133 {
134 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
135 "NameGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357",
136 "Name": "AdapterSiteUrl",
137 "Code": "AdapterSiteUrl",
138 "IsRequired": true,
139 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
140 "PreviousPropertyGuid": "e3ba2ddd-ad59-4ace-9688-67417dfb265f"
141 },
142 {
143 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
144 "NameGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b",
145 "Name": "ExchangeFolder",
146 "Code": "ExchangeFolder",
147 "IsRequired": true,
148 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
149 "PreviousPropertyGuid": "f9c3fb20-883c-4ba7-984b-2224755a3357"
150 },
151 {
152 "$type": "Sungero.Metadata.StringPropertyMetadata, Sungero.Metadata",
153 "NameGuid": "7a5df22a-5e04-408b-a8c3-907e030a2b9e",
154 "Name": "ExternalSystemID",
155 "Code": "ExternalSystem",
156 "IsRequired": true,
157 "ListDataBinderTypeName": "Sungero.Presentation.CommonDataBinders.StringEditorToStringBinder",
158 "PreviousPropertyGuid": "7c6189ac-312c-4db9-9a12-e616c925ad8b"
159 }
160 ],
161 "PublicFunctions": [
162 {
163 "Name": "CreateDciSetting",
164 "IsRemote": true,
165 "Placement": "Shared",
166 "ReturnType": "global::DirRX.DciCore.IDciSetting",
167 "ReturnTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
168 },
169 {
170 "Name": "GetDciSettings",
171 "IsRemote": true,
172 "Placement": "Shared",
173 "ReturnType": "global::DirRX.DciCore.IDciSetting",
174 "ReturnTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
175 }
176 ],
177 "PublicStructures": [],
178 "ResourcesKeys": [],
179 "RibbonCardMetadata": {
180 "NameGuid": "c1dff1ab-43e0-497c-85fb-e8027625d8ef",
181 "Name": "RibbonCard",
182 "Categories": [],
183 "Elements": [],
184 "Groups": [],
185 "IsAncestorMetadata": true,
186 "Pages": [],
187 "RibbonKind": "Card"
188 },
189 "RibbonCollectionMetadata": {
190 "NameGuid": "4a2db3f3-683e-470a-a1b3-ead1b910d269",
191 "Name": "RibbonCollection",
192 "Categories": [],
193 "Elements": [],
194 "Groups": [],
195 "IsAncestorMetadata": true,
196 "Pages": []
197 },
198 "Versions": [
199 {
200 "Type": "EntityMetadata",
201 "Number": 11
202 }
203 ]
204 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 </root>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using Sungero.Core;
3
4 namespace DirRX.DciCore.Constants
5 {
6 public static class DciSetting
7 {
8
9 }
10 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore
9 {
10 partial class DciSettingSharedHandlers
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6 using DirRX.DciCore.DciSetting;
7
8 namespace DirRX.DciCore.Shared
9 {
10 partial class DciSettingFunctions
11 {
12
13 }
14 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Structures.DciSetting
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_SystemID" xml:space="preserve">
121 <value>Идентификатор системы</value>
122 </data>
123 <data name="DisplayName" xml:space="preserve">
124 <value>Настройка DCI</value>
125 </data>
126 <data name="AccusativeDisplayName" xml:space="preserve">
127 <value>Настройки DCI</value>
128 </data>
129 <data name="CollectionDisplayName" xml:space="preserve">
130 <value>Настройки DCI</value>
131 </data>
132 <data name="Property_AdapterServiceUrl" xml:space="preserve">
133 <value>Url адаптера</value>
134 </data>
135 <data name="Property_AdapterSiteUrl" xml:space="preserve">
136 <value>Адрес сайта адаптера</value>
137 </data>
138 <data name="Property_ExchangeFolder" xml:space="preserve">
139 <value>Папка обмена</value>
140 </data>
141 <data name="Property_ExternalSystemID" xml:space="preserve">
142 <value>Идентификатор внешней системы</value>
143 </data>
144 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="Property_SystemID" xml:space="preserve">
121 <value>Идентификатор системы</value>
122 </data>
123 <data name="DisplayName" xml:space="preserve">
124 <value>Настройка DCI</value>
125 </data>
126 <data name="AccusativeDisplayName" xml:space="preserve">
127 <value>Настройки DCI</value>
128 </data>
129 <data name="CollectionDisplayName" xml:space="preserve">
130 <value>Настройки DCI</value>
131 </data>
132 <data name="Property_AdapterServiceUrl" xml:space="preserve">
133 <value>Url адаптера</value>
134 </data>
135 <data name="Property_AdapterSiteUrl" xml:space="preserve">
136 <value>Адрес сайта адаптера</value>
137 </data>
138 <data name="Property_ExchangeFolder" xml:space="preserve">
139 <value>Папка обмена</value>
140 </data>
141 <data name="Property_ExternalSystemID" xml:space="preserve">
142 <value>Идентификатор внешней системы</value>
143 </data>
144 </root>
...\ No newline at end of file ...\ No newline at end of file
1 {
2 "$type": "Sungero.Metadata.ModuleMetadata, Sungero.Metadata",
3 "NameGuid": "9467e108-745e-47d5-ab30-7e82cb4d5f13",
4 "Name": "DciCore",
5 "AsyncHandlers": [
6 {
7 "NameGuid": "a03678a5-178b-4a4f-9c0e-fb5d2ddbef33",
8 "Name": "ReceiveProcessMessage",
9 "DelayPeriod": 5,
10 "DelayStrategy": "RegularDelayStrategy",
11 "IsHandlerGenerated": true,
12 "Parameters": [
13 {
14 "NameGuid": "7a48357c-a513-4920-972a-07c2f5904c12",
15 "Name": "MessageGUID",
16 "ParameterType": "String"
17 }
18 ]
19 },
20 {
21 "NameGuid": "76d6a6af-4016-471d-a784-780ffaf23255",
22 "Name": "SendProcessMessage",
23 "DelayPeriod": 5,
24 "DelayStrategy": "RegularDelayStrategy",
25 "IsHandlerGenerated": true,
26 "Parameters": [
27 {
28 "NameGuid": "56b7aed1-4256-4fd0-a0a4-dbf8bea4a0be",
29 "Name": "NameProcessKind",
30 "ParameterType": "String"
31 },
32 {
33 "NameGuid": "97c34765-74ad-45d7-9941-163e93180b5b",
34 "Name": "IdProcessKind",
35 "ParameterType": "Integer"
36 }
37 ]
38 }
39 ],
40 "ClientAssemblyName": "DirRX.DciCore.Client",
41 "ClientBaseAssemblyName": "DirRX.DciCore.ClientBase",
42 "ClientBaseNamespace": "DirRX.DciCore.ClientBase",
43 "ClientNamespace": "DirRX.DciCore.Client",
44 "Code": "DciCore",
45 "CompanyCode": "DirRX",
46 "Cover": {
47 "NameGuid": "65e41069-aeb8-4d31-89f5-48d2ef52d6fc",
48 "Actions": [
49 {
50 "$type": "Sungero.Metadata.CoverFunctionActionMetadata, Sungero.Metadata",
51 "NameGuid": "11ef9367-22e7-4afc-b340-21ae67bd2720",
52 "Name": "Settings",
53 "FunctionName": "ShowDciSettings",
54 "GroupId": "19b2648e-125a-4c5f-8421-79d45577097f"
55 },
56 {
57 "$type": "Sungero.Metadata.CoverEntityListActionMetadata, Sungero.Metadata",
58 "NameGuid": "7f422a54-2157-4ecb-bca1-31820e781997",
59 "Name": "DciProcessKinds",
60 "EntityTypeId": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
61 "GroupId": "19b2648e-125a-4c5f-8421-79d45577097f",
62 "PreviousItemGuid": "11ef9367-22e7-4afc-b340-21ae67bd2720"
63 },
64 {
65 "$type": "Sungero.Metadata.CoverFunctionActionMetadata, Sungero.Metadata",
66 "NameGuid": "a0a59ad8-8975-4014-8aa1-f55021a9461c",
67 "Name": "PingMessage",
68 "FunctionName": "SendDciPingMessage",
69 "GroupId": "19b2648e-125a-4c5f-8421-79d45577097f",
70 "PreviousItemGuid": "7f422a54-2157-4ecb-bca1-31820e781997"
71 }
72 ],
73 "Background": null,
74 "Footer": {
75 "NameGuid": "203ad4b2-8694-45db-953c-0a575e4463c7",
76 "BackgroundPosition": "Stretch"
77 },
78 "Groups": [
79 {
80 "NameGuid": "19b2648e-125a-4c5f-8421-79d45577097f",
81 "Name": "GroupSettings",
82 "BackgroundPosition": "Stretch",
83 "IconName": "GroupIconGroupSettings_19b2648e125a4c5f842179d45577097f.png",
84 "TabId": "cd167a53-6a5b-4f1a-bfda-dee3daa70d51"
85 }
86 ],
87 "Header": {
88 "NameGuid": "235fce62-6dfd-4824-8bfd-e566dccbd864",
89 "BackgroundPosition": "Stretch"
90 },
91 "Tabs": [
92 {
93 "NameGuid": "cd167a53-6a5b-4f1a-bfda-dee3daa70d51",
94 "Name": "Tab"
95 }
96 ]
97 },
98 "Dependencies": [
99 {
100 "Id": "f380c872-469a-4014-9ce5-ffb840907fc6",
101 "IsSolutionModule": true,
102 "MaxVersion": "",
103 "MinVersion": ""
104 },
105 {
106 "Id": "92491aa6-c4df-4f46-a807-ebdd337bda74",
107 "MaxVersion": "",
108 "MinVersion": "1.1.0.0"
109 },
110 {
111 "Id": "ec7b606a-21ee-4f16-aba8-ab8c2af76d12",
112 "MaxVersion": "",
113 "MinVersion": "0.0.1.0"
114 }
115 ],
116 "ExplorerTreeOrder": [
117 {
118 "ItemId": "0a291244-941b-4006-8497-06ecd1fabca4"
119 },
120 {
121 "ItemId": "b8fb59dc-559f-40b8-8ad3-2df642ff71d5",
122 "PreviousItemId": "0a291244-941b-4006-8497-06ecd1fabca4"
123 }
124 ],
125 "HandledEvents": [
126 "InitializingServer"
127 ],
128 "IconResourcesKeys": [],
129 "Importance": "Low",
130 "InitializationFunctions": [
131 {
132 "Name": "AddProcessMessage",
133 "Parameters": [
134 {
135 "Name": "processKind",
136 "ParameterType": "global::DirRX.DciCore.IDciProcessKind",
137 "ParameterTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
138 },
139 {
140 "Name": "rowGUID",
141 "ParameterType": "global::System.Guid",
142 "ParameterTypeFullName": "System.Guid"
143 },
144 {
145 "Name": "messageName",
146 "ParameterType": "global::System.String",
147 "ParameterTypeFullName": "System.String"
148 },
149 {
150 "Name": "messageNote",
151 "ParameterType": "global::System.String",
152 "ParameterTypeFullName": "System.String"
153 }
154 ],
155 "ReturnType": "void",
156 "ReturnTypeFullName": "System.Void"
157 },
158 {
159 "Name": "CreateProcessKind",
160 "Parameters": [
161 {
162 "Name": "guid",
163 "ParameterType": "global::System.Guid",
164 "ParameterTypeFullName": "System.Guid"
165 },
166 {
167 "Name": "processName",
168 "ParameterType": "global::System.String",
169 "ParameterTypeFullName": "System.String"
170 },
171 {
172 "Name": "note",
173 "ParameterType": "global::System.String",
174 "ParameterTypeFullName": "System.String"
175 },
176 {
177 "Name": "description",
178 "ParameterType": "global::System.String",
179 "ParameterTypeFullName": "System.String"
180 },
181 {
182 "Name": "processType",
183 "ParameterType": "global::Sungero.Core.Enumeration",
184 "ParameterTypeFullName": "Sungero.Core.Enumeration, Sungero.Domain.Shared"
185 },
186 {
187 "Name": "entityTypeGuid",
188 "ParameterType": "global::System.Guid",
189 "ParameterTypeFullName": "System.Guid"
190 },
191 {
192 "Name": "startSyncDate",
193 "ParameterType": "global::System.DateTime",
194 "ParameterTypeFullName": "System.DateTime"
195 }
196 ],
197 "ReturnType": "global::DirRX.DciCore.IDciProcessKind",
198 "ReturnTypeFullName": "DirRX.DciCore.IDciProcessKind, Sungero.Domain.Interfaces"
199 }
200 ],
201 "InterfaceAssemblyName": "Sungero.Domain.Interfaces",
202 "InterfaceNamespace": "DirRX.DciCore",
203 "Jobs": [
204 {
205 "NameGuid": "c22dcae5-4d53-4637-a2b8-136f4e75666d",
206 "Name": "SendEntitiesToDciSynchronization",
207 "Daily": "Repeat",
208 "GenerateHandler": true,
209 "IsEnabled": false,
210 "MonthSchedule": "Monthly",
211 "TimePeriod": 30
212 }
213 ],
214 "Libraries": [
215 {
216 "NameGuid": "eb3bcb57-e730-4f30-b9e3-7eb254b7fd6c",
217 "Name": "Dci",
218 "Scope": "Server"
219 }
220 ],
221 "Overridden": [
222 "Importance"
223 ],
224 "PublicConstants": [
225 {
226 "Name": "Active",
227 "ParentClasses": [
228 "Module",
229 "D5StatusName"
230 ],
231 "TypeName": "System.String",
232 "Value": "\"Действующая\""
233 },
234 {
235 "Name": "Closed",
236 "ParentClasses": [
237 "Module",
238 "D5StatusName"
239 ],
240 "TypeName": "System.String",
241 "Value": "\"Закрытая\""
242 },
243 {
244 "Name": "EntityIsLocked",
245 "ParentClasses": [
246 "Module",
247 "ErrorType"
248 ],
249 "TypeName": "System.String",
250 "Value": "\"EntityIsLocked\""
251 }
252 ],
253 "PublicFunctions": [
254 {
255 "Name": "Base64ToString",
256 "Parameters": [
257 {
258 "Name": "value",
259 "ParameterType": "global::System.String",
260 "ParameterTypeFullName": "System.String"
261 }
262 ],
263 "Placement": "Shared",
264 "ReturnType": "global::System.String",
265 "ReturnTypeFullName": "System.String"
266 },
267 {
268 "Name": "ConvertD5StatusToRXStatus",
269 "Parameters": [
270 {
271 "Name": "d5Status",
272 "ParameterType": "global::System.String",
273 "ParameterTypeFullName": "System.String"
274 }
275 ],
276 "Placement": "Shared",
277 "ReturnType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
278 "ReturnTypeFullName": "System.Nullable"
279 },
280 {
281 "Name": "ConvertRXStatusToD5Status",
282 "Parameters": [
283 {
284 "Name": "rxStatus",
285 "ParameterType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
286 "ParameterTypeFullName": "System.Nullable"
287 }
288 ],
289 "Placement": "Shared",
290 "ReturnType": "global::System.String",
291 "ReturnTypeFullName": "System.String"
292 },
293 {
294 "Name": "ConvertTextRXStatusToRXStatus",
295 "Parameters": [
296 {
297 "Name": "stringStatus",
298 "ParameterType": "global::System.String",
299 "ParameterTypeFullName": "System.String"
300 }
301 ],
302 "Placement": "Shared",
303 "ReturnType": "global::System.Nullable<global::Sungero.Core.Enumeration>",
304 "ReturnTypeFullName": "System.Nullable"
305 },
306 {
307 "Name": "DateTimeToDciString",
308 "Parameters": [
309 {
310 "Name": "value",
311 "ParameterType": "global::System.DateTime",
312 "ParameterTypeFullName": "System.DateTime"
313 }
314 ],
315 "ReturnType": "global::System.String",
316 "ReturnTypeFullName": "System.String"
317 },
318 {
319 "Name": "DateToDciString",
320 "Parameters": [
321 {
322 "Name": "value",
323 "ParameterType": "global::System.DateTime",
324 "ParameterTypeFullName": "System.DateTime"
325 }
326 ],
327 "ReturnType": "global::System.String",
328 "ReturnTypeFullName": "System.String"
329 },
330 {
331 "Name": "DeleteEntityByProcessName",
332 "IsRemote": true,
333 "Parameters": [
334 {
335 "Name": "entityId",
336 "ParameterType": "global::System.Int32",
337 "ParameterTypeFullName": "System.Int32"
338 },
339 {
340 "Name": "entityTypeGuid",
341 "ParameterType": "global::System.String",
342 "ParameterTypeFullName": "System.String"
343 },
344 {
345 "Name": "processName",
346 "ParameterType": "global::System.String",
347 "ParameterTypeFullName": "System.String"
348 }
349 ],
350 "Placement": "Shared",
351 "ReturnType": "global::System.String",
352 "ReturnTypeFullName": "System.String"
353 },
354 {
355 "Name": "EnqueueDciMessage",
356 "Parameters": [
357 {
358 "Name": "processMessageGlobalId",
359 "ParameterType": "global::System.String",
360 "ParameterTypeFullName": "System.String"
361 }
362 ],
363 "ReturnType": "global::System.String",
364 "ReturnTypeFullName": "System.String",
365 "WebApiRequestType": "Post"
366 },
367 {
368 "Name": "GetAllEntityLinksByGuid",
369 "IsRemote": true,
370 "Parameters": [
371 {
372 "Name": "guid",
373 "ParameterType": "global::System.String",
374 "ParameterTypeFullName": "System.String"
375 }
376 ],
377 "Placement": "Shared",
378 "ReturnType": "global::System.Linq.IQueryable<global::Sungero.Commons.IExternalEntityLink>",
379 "ReturnTypeFullName": "System.Linq.IQueryable"
380 },
381 {
382 "Name": "GetChangedDatabookRecords",
383 "Parameters": [
384 {
385 "Name": "baseGuid",
386 "ParameterType": "global::System.String",
387 "ParameterTypeFullName": "System.String"
388 },
389 {
390 "Name": "dateBegin",
391 "ParameterType": "global::System.DateTime",
392 "ParameterTypeFullName": "System.DateTime"
393 },
394 {
395 "Name": "dateEnd",
396 "ParameterType": "global::System.DateTime",
397 "ParameterTypeFullName": "System.DateTime"
398 }
399 ],
400 "ReturnType": "global::System.Linq.IQueryable<global::System.Int32>",
401 "ReturnTypeFullName": "System.Linq.IQueryable"
402 },
403 {
404 "Name": "GetDatabookEntityById",
405 "IsRemote": true,
406 "Parameters": [
407 {
408 "Name": "entityId",
409 "ParameterType": "global::System.Int32",
410 "ParameterTypeFullName": "System.Int32"
411 },
412 {
413 "Name": "entityTypeGuid",
414 "ParameterType": "global::System.String",
415 "ParameterTypeFullName": "System.String"
416 }
417 ],
418 "Placement": "Shared",
419 "ReturnType": "global::Sungero.CoreEntities.IDatabookEntry",
420 "ReturnTypeFullName": "Sungero.CoreEntities.IDatabookEntry, Sungero.Domain.Shared"
421 },
422 {
423 "Name": "GetDCIMessageNameByEntity",
424 "Parameters": [
425 {
426 "Name": "entity",
427 "ParameterType": "global::Sungero.CoreEntities.IDatabookEntry",
428 "ParameterTypeFullName": "Sungero.CoreEntities.IDatabookEntry, Sungero.Domain.Shared"
429 }
430 ],
431 "ReturnType": "global::System.String",
432 "ReturnTypeFullName": "System.String"
433 },
434 {
435 "Name": "GetEntityIdByGuid",
436 "IsRemote": true,
437 "Parameters": [
438 {
439 "Name": "guid",
440 "ParameterType": "global::System.String",
441 "ParameterTypeFullName": "System.String"
442 }
443 ],
444 "Placement": "Shared",
445 "ReturnType": "global::System.Int32",
446 "ReturnTypeFullName": "System.Int32"
447 },
448 {
449 "Name": "GetEntityLinkByGuid",
450 "IsRemote": true,
451 "Parameters": [
452 {
453 "Name": "guid",
454 "ParameterType": "global::System.String",
455 "ParameterTypeFullName": "System.String"
456 }
457 ],
458 "Placement": "Shared",
459 "ReturnType": "global::Sungero.Commons.IExternalEntityLink",
460 "ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
461 },
462 {
463 "Name": "GetExternalEntityLink",
464 "IsRemote": true,
465 "Parameters": [
466 {
467 "Name": "entityId",
468 "ParameterType": "global::System.Int32",
469 "ParameterTypeFullName": "System.Int32"
470 },
471 {
472 "Name": "entityTypeGuid",
473 "ParameterType": "global::System.String",
474 "ParameterTypeFullName": "System.String"
475 },
476 {
477 "Name": "externalSystemID",
478 "ParameterType": "global::System.String",
479 "ParameterTypeFullName": "System.String"
480 }
481 ],
482 "Placement": "Shared",
483 "ReturnType": "global::Sungero.Commons.IExternalEntityLink",
484 "ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
485 },
486 {
487 "Name": "GetHyperlinkToDciProcess",
488 "Parameters": [
489 {
490 "Name": "setting",
491 "ParameterType": "global::DirRX.DciCore.IDciSetting",
492 "ParameterTypeFullName": "DirRX.DciCore.IDciSetting, Sungero.Domain.Interfaces"
493 },
494 {
495 "Name": "processGUID",
496 "ParameterType": "global::System.String",
497 "ParameterTypeFullName": "System.String"
498 }
499 ],
500 "Placement": "Shared",
501 "ReturnType": "global::System.String",
502 "ReturnTypeFullName": "System.String"
503 },
504 {
505 "Name": "SendDciPing",
506 "IsRemote": true,
507 "Placement": "Shared",
508 "ReturnType": "global::System.String",
509 "ReturnTypeFullName": "System.String"
510 },
511 {
512 "Name": "SendDciPingMessage",
513 "Placement": "Client",
514 "ReturnType": "void",
515 "ReturnTypeFullName": "System.Void"
516 },
517 {
518 "Name": "SendNotificatiobAboutReceiveErrors",
519 "Parameters": [
520 {
521 "Name": "errors",
522 "ParameterType": "System.Collections.Generic.IList<global::System.String>"
523 },
524 {
525 "Name": "processName",
526 "ParameterType": "global::System.String",
527 "ParameterTypeFullName": "System.String"
528 },
529 {
530 "Name": "processGUID",
531 "ParameterType": "global::System.String",
532 "ParameterTypeFullName": "System.String"
533 },
534 {
535 "Name": "messageName",
536 "ParameterType": "global::System.String",
537 "ParameterTypeFullName": "System.String"
538 },
539 {
540 "Name": "messageGUID",
541 "ParameterType": "global::System.String",
542 "ParameterTypeFullName": "System.String"
543 }
544 ],
545 "ReturnType": "void",
546 "ReturnTypeFullName": "System.Void"
547 },
548 {
549 "Name": "SetExternalEntityLinkGuid",
550 "IsRemote": true,
551 "Parameters": [
552 {
553 "Name": "entityId",
554 "ParameterType": "global::System.Int32",
555 "ParameterTypeFullName": "System.Int32"
556 },
557 {
558 "Name": "entityTypeGuid",
559 "ParameterType": "global::System.String",
560 "ParameterTypeFullName": "System.String"
561 },
562 {
563 "Name": "externalSystemID",
564 "ParameterType": "global::System.String",
565 "ParameterTypeFullName": "System.String"
566 },
567 {
568 "Name": "externalEntityGuid",
569 "ParameterType": "global::System.String",
570 "ParameterTypeFullName": "System.String"
571 }
572 ],
573 "Placement": "Shared",
574 "ReturnType": "global::Sungero.Commons.IExternalEntityLink",
575 "ReturnTypeFullName": "Sungero.Commons.IExternalEntityLink, Sungero.Domain.Interfaces"
576 },
577 {
578 "Name": "ShowDciSettings",
579 "Placement": "Client",
580 "ReturnType": "void",
581 "ReturnTypeFullName": "System.Void"
582 },
583 {
584 "Name": "StringToBase64",
585 "Parameters": [
586 {
587 "Name": "value",
588 "ParameterType": "global::System.String",
589 "ParameterTypeFullName": "System.String"
590 }
591 ],
592 "Placement": "Shared",
593 "ReturnType": "global::System.String",
594 "ReturnTypeFullName": "System.String"
595 },
596 {
597 "Name": "StringToDate",
598 "Parameters": [
599 {
600 "Name": "value",
601 "ParameterType": "global::System.String",
602 "ParameterTypeFullName": "System.String"
603 }
604 ],
605 "ReturnType": "global::System.Nullable<global::System.DateTime>",
606 "ReturnTypeFullName": "System.Nullable"
607 },
608 {
609 "Name": "StringToDateTime",
610 "Parameters": [
611 {
612 "Name": "value",
613 "ParameterType": "global::System.String",
614 "ParameterTypeFullName": "System.String"
615 }
616 ],
617 "ReturnType": "global::System.Nullable<global::System.DateTime>",
618 "ReturnTypeFullName": "System.Nullable"
619 },
620 {
621 "Name": "StringToDouble",
622 "Parameters": [
623 {
624 "Name": "value",
625 "ParameterType": "global::System.String",
626 "ParameterTypeFullName": "System.String"
627 }
628 ],
629 "Placement": "Shared",
630 "ReturnType": "global::System.Nullable<global::System.Double>",
631 "ReturnTypeFullName": "System.Nullable"
632 },
633 {
634 "Name": "StringToInt",
635 "Parameters": [
636 {
637 "Name": "value",
638 "ParameterType": "global::System.String",
639 "ParameterTypeFullName": "System.String"
640 }
641 ],
642 "Placement": "Shared",
643 "ReturnType": "global::System.Nullable<global::System.Int32>",
644 "ReturnTypeFullName": "System.Nullable"
645 },
646 {
647 "Name": "ValidateDciName",
648 "Parameters": [
649 {
650 "Name": "name",
651 "ParameterType": "global::System.String",
652 "ParameterTypeFullName": "System.String"
653 }
654 ],
655 "Placement": "Shared",
656 "ReturnType": "global::System.String",
657 "ReturnTypeFullName": "System.String"
658 }
659 ],
660 "PublicStructures": [],
661 "ResourceInterfaceAssemblyName": "Sungero.Domain.Interfaces",
662 "ResourceInterfaceNamespace": "DirRX.DciCore",
663 "ResourcesKeys": [
664 "NotFoundDeleteHandlerByProcess",
665 "NotFoundMessageByGlobalId",
666 "ReceiveErrorDetailText",
667 "ReceiveHandlerError",
668 "InsufficientDataError",
669 "ReceiveErrorTaskText",
670 "NotFoundReceiveHandlerByProcess",
671 "ReceiveErrorTaskSubject",
672 "DciSettingsNotFound",
673 "NotFoundProcessByMessage",
674 "SendPingTrackingMessage",
675 "MultipleEntitiesFoundToDelete",
676 "NoEntitiesFoundToDelete",
677 "DeleteEntityError",
678 "NotFoundExternalEntityLink",
679 "NotFoundPrepareHandlerByProcess"
680 ],
681 "ServerAssemblyName": "DirRX.DciCore.Server",
682 "ServerNamespace": "DirRX.DciCore.Server",
683 "SharedAssemblyName": "DirRX.DciCore.Shared",
684 "SharedNamespace": "DirRX.DciCore.Shared",
685 "SpecialFolders": [],
686 "Version": "1.0.4427.0",
687 "Widgets": [],
688 "Versions": [
689 {
690 "Type": "ModuleMetadata",
691 "Number": 8
692 },
693 {
694 "Type": "DomainApi",
695 "Number": 3
696 }
697 ]
698 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="NotFoundDeleteHandlerByProcess" xml:space="preserve">
121 <value>В разработке не реализован обработчик для удаления сущности по процессу "{0}".</value>
122 </data>
123 <data name="NotFoundMessageByGlobalId" xml:space="preserve">
124 <value>Сообщение DCI с GUID {0} не существует. Проверьте наличие сообщения в адаптере DCI.</value>
125 </data>
126 <data name="ReceiveErrorDetailText" xml:space="preserve">
127 <value>Процесс: {0} {1}
128 Сообщение: {2} {3}
129 Путь к папке обмена: {4}
130 Ссылка на сообщение: {5}
131 Текст ошибки: {6}</value>
132 </data>
133 <data name="ReceiveHandlerError" xml:space="preserve">
134 <value>Ошибка обработки: {0}
135 {1}</value>
136 </data>
137 <data name="InsufficientDataError" xml:space="preserve">
138 <value>В сообщении недостаточно данных для обработки сообщения.</value>
139 </data>
140 <data name="ReceiveErrorTaskText" xml:space="preserve">
141 <value>При обработке входящего сообщения произошла ошибки. См. в логах службы Worker.
142 {0}</value>
143 </data>
144 <data name="NotFoundReceiveHandlerByProcess" xml:space="preserve">
145 <value>В разработке не реализован обработчик для приема сообщения "{0}" по процессу "{1}".</value>
146 </data>
147 <data name="ReceiveErrorTaskSubject" xml:space="preserve">
148 <value>Ошибка при приеме сообщения DCI {0} по процессу {1}</value>
149 </data>
150 <data name="DciSettingsNotFound" xml:space="preserve">
151 <value>Не найдена запись справочника "Настройки DCI". Выполните настройку решения.</value>
152 </data>
153 <data name="NotFoundProcessByMessage" xml:space="preserve">
154 <value>Процесс DCI по сообщению с GUID {0} не найден. Проверьте наличие данного сообщения и процесса в адаптере DCI.</value>
155 </data>
156 <data name="SendPingTrackingMessage" xml:space="preserve">
157 <value>Тестовое сообщение отправлено. Для отслеживания состояние межсистемного процесса откройте сайт адаптера DCI {0}</value>
158 </data>
159 <data name="MultipleEntitiesFoundToDelete" xml:space="preserve">
160 <value>Найдено несколько сущностей с ИД {0} и GUID типа сущности {1}.</value>
161 </data>
162 <data name="NoEntitiesFoundToDelete" xml:space="preserve">
163 <value>Не найдена сущность с ИД {0} и GUID типа сущности {1}.</value>
164 </data>
165 <data name="DeleteEntityError" xml:space="preserve">
166 <value>Ошибка удаления сущности из системы.
167 {0}
168 {1}</value>
169 </data>
170 <data name="NotFoundExternalEntityLink" xml:space="preserve">
171 <value>В справочнике "Ссылки внешней системы" не найдена ссылка с GUID {0}. Вероятно запись не была синхронизирована ранее.</value>
172 </data>
173 <data name="NotFoundPrepareHandlerByProcess" xml:space="preserve">
174 <value>В разработке не реализован обработчик для подготовки исходящего сообщения "{0}" по процессу "{1}".</value>
175 </data>
176 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <!--
4 Microsoft ResX Schema
5
6 Version 2.0
7
8 The primary goals of this format is to allow a simple XML format
9 that is mostly human readable. The generation and parsing of the
10 various data types are done through the TypeConverter classes
11 associated with the data types.
12
13 Example:
14
15 ... ado.net/XML headers & schema ...
16 <resheader name="resmimetype">text/microsoft-resx</resheader>
17 <resheader name="version">2.0</resheader>
18 <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19 <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20 <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21 <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22 <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23 <value>[base64 mime encoded serialized .NET Framework object]</value>
24 </data>
25 <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26 <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27 <comment>This is a comment</comment>
28 </data>
29
30 There are any number of "resheader" rows that contain simple
31 name/value pairs.
32
33 Each data row contains a name, and value. The row also contains a
34 type or mimetype. Type corresponds to a .NET class that support
35 text/value conversion through the TypeConverter architecture.
36 Classes that don't support this are serialized and stored with the
37 mimetype set.
38
39 The mimetype is used for serialized objects, and tells the
40 ResXResourceReader how to depersist the object. This is currently not
41 extensible. For a given mimetype the value must be set accordingly:
42
43 Note - application/x-microsoft.net.object.binary.base64 is the format
44 that the ResXResourceWriter will generate, however the reader can
45 read any of the formats listed below.
46
47 mimetype: application/x-microsoft.net.object.binary.base64
48 value : The object must be serialized with
49 : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50 : and then encoded with base64 encoding.
51
52 mimetype: application/x-microsoft.net.object.soap.base64
53 value : The object must be serialized with
54 : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55 : and then encoded with base64 encoding.
56
57 mimetype: application/x-microsoft.net.object.bytearray.base64
58 value : The object must be serialized into a byte array
59 : using a System.ComponentModel.TypeConverter
60 : and then encoded with base64 encoding.
61 -->
62 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64 <xsd:element name="root" msdata:IsDataSet="true">
65 <xsd:complexType>
66 <xsd:choice maxOccurs="unbounded">
67 <xsd:element name="metadata">
68 <xsd:complexType>
69 <xsd:sequence>
70 <xsd:element name="value" type="xsd:string" minOccurs="0" />
71 </xsd:sequence>
72 <xsd:attribute name="name" use="required" type="xsd:string" />
73 <xsd:attribute name="type" type="xsd:string" />
74 <xsd:attribute name="mimetype" type="xsd:string" />
75 <xsd:attribute ref="xml:space" />
76 </xsd:complexType>
77 </xsd:element>
78 <xsd:element name="assembly">
79 <xsd:complexType>
80 <xsd:attribute name="alias" type="xsd:string" />
81 <xsd:attribute name="name" type="xsd:string" />
82 </xsd:complexType>
83 </xsd:element>
84 <xsd:element name="data">
85 <xsd:complexType>
86 <xsd:sequence>
87 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89 </xsd:sequence>
90 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93 <xsd:attribute ref="xml:space" />
94 </xsd:complexType>
95 </xsd:element>
96 <xsd:element name="resheader">
97 <xsd:complexType>
98 <xsd:sequence>
99 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100 </xsd:sequence>
101 <xsd:attribute name="name" type="xsd:string" use="required" />
102 </xsd:complexType>
103 </xsd:element>
104 </xsd:choice>
105 </xsd:complexType>
106 </xsd:element>
107 </xsd:schema>
108 <resheader name="resmimetype">
109 <value>text/microsoft-resx</value>
110 </resheader>
111 <resheader name="version">
112 <value>2.0</value>
113 </resheader>
114 <resheader name="reader">
115 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116 </resheader>
117 <resheader name="writer">
118 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119 </resheader>
120 <data name="NotFoundDeleteHandlerByProcess" xml:space="preserve">
121 <value>В разработке не реализован обработчик для удаления сущности по процессу "{0}".</value>
122 </data>
123 <data name="NotFoundMessageByGlobalId" xml:space="preserve">
124 <value>Сообщение DCI с GUID {0} не существует. Проверьте наличие сообщения в адаптере DCI.</value>
125 </data>
126 <data name="ReceiveErrorDetailText" xml:space="preserve">
127 <value>Процесс: {0} {1}
128 Сообщение: {2} {3}
129 Путь к папке обмена: {4}
130 Ссылка на сообщение: {5}
131 Текст ошибки: {6}</value>
132 </data>
133 <data name="ReceiveHandlerError" xml:space="preserve">
134 <value>Ошибка обработки: {0}
135 {1}</value>
136 </data>
137 <data name="InsufficientDataError" xml:space="preserve">
138 <value>В сообщении недостаточно данных для обработки сообщения.</value>
139 </data>
140 <data name="ReceiveErrorTaskText" xml:space="preserve">
141 <value>При обработке входящего сообщения произошла ошибки. См. в логах службы Worker.
142 {0}</value>
143 </data>
144 <data name="NotFoundReceiveHandlerByProcess" xml:space="preserve">
145 <value>В разработке не реализован обработчик для приема сообщения "{0}" по процессу "{1}".</value>
146 </data>
147 <data name="ReceiveErrorTaskSubject" xml:space="preserve">
148 <value>Ошибка при приеме сообщения DCI {0} по процессу {1}</value>
149 </data>
150 <data name="DciSettingsNotFound" xml:space="preserve">
151 <value>Не найдена запись справочника "Настройки DCI". Выполните настройку решения.</value>
152 </data>
153 <data name="NotFoundProcessByMessage" xml:space="preserve">
154 <value>Процесс DCI по сообщению с GUID {0} не найден. Проверьте наличие данного сообщения и процесса в адаптере DCI.</value>
155 </data>
156 <data name="SendPingTrackingMessage" xml:space="preserve">
157 <value>Тестовое сообщение отправлено. Для отслеживания состояние межсистемного процесса откройте сайт адаптера DCI {0}</value>
158 </data>
159 <data name="MultipleEntitiesFoundToDelete" xml:space="preserve">
160 <value>Найдено несколько сущностей с ИД {0} и GUID типа сущности {1}.</value>
161 </data>
162 <data name="NoEntitiesFoundToDelete" xml:space="preserve">
163 <value>Не найдена сущность с ИД {0} и GUID типа сущности {1}.</value>
164 </data>
165 <data name="DeleteEntityError" xml:space="preserve">
166 <value>Ошибка удаления сущности из системы.
167 {0}
168 {1}</value>
169 </data>
170 <data name="NotFoundExternalEntityLink" xml:space="preserve">
171 <value>В справочнике "Ссылки внешней системы" не найдена ссылка с GUID {0}. Вероятно запись не была синхронизирована ранее.</value>
172 </data>
173 <data name="NotFoundPrepareHandlerByProcess" xml:space="preserve">
174 <value>В разработке не реализован обработчик для подготовки исходящего сообщения "{0}" по процессу "{1}".</value>
175 </data>
176 </root>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using Sungero.Core;
3
4 namespace DirRX.DciCore.Constants
5 {
6 public static class Module
7 {
8
9 /// <summary>
10 /// Константы для типов ошибок.
11 /// </summary>
12 public static class ErrorType
13 {
14 [Public]
15 public const string EntityIsLocked = "EntityIsLocked";
16 }
17
18 /// <summary>
19 /// Константы для наименований статусов записи Directum 5.
20 /// </summary>
21 public static class D5StatusName
22 {
23 [Public]
24 public const string Active = "Действующая";
25 [Public]
26 public const string Closed = "Закрытая";
27 }
28
29 }
30 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Shared
8 {
9 public class ModuleFunctions
10 {
11
12 #region Полезные функции
13
14 /// <summary>
15 /// Сформировать гиперссылку на сайт адаптера DCI для просмотра сообщений по процессу.
16 /// </summary>
17 /// <param name="setting">Запись справочника "Настройки DCI".</param>
18 /// <param name="processGUID">GUID процесса DCI.</param>
19 /// <returns>Гиперссылка.</returns>
20 [Public]
21 public string GetHyperlinkToDciProcess(IDciSetting setting, string processGUID)
22 {
23 // TODO в адресе может сформироваться два //.
24 return string.Format(@"{0}/Messages?processGuid={1}", setting.AdapterSiteUrl, System.Net.WebUtility.UrlEncode(processGUID));
25 }
26
27 /// <summary>
28 /// Проверить строку на наличие символов, недопустимых для имени вида процесса или сообщения.
29 /// </summary>
30 /// <param name="name">Проверяемая строка.</param>
31 /// <returns>Пустая строка или текст ошибки.</returns>
32 [Public]
33 public string ValidateDciName(string name)
34 {
35 // Буквы (латиница, кириллица), цифры и символ "_", и начинается с буквы или "_".
36 var pattern = @"^[_A-Za-zА-Яа-я]+[_0-9A-Za-zА-Яа-я]*$";
37 var regex = new System.Text.RegularExpressions.Regex(pattern);
38 if (!regex.IsMatch(name))
39 return DirRX.DciCore.DciProcessKinds.Resources.NotValidDciNameFormat(name);
40
41 return string.Empty;
42 }
43
44 #endregion
45
46 #region Функции по преобразованию данных из строки в объект.
47
48 /// <summary>
49 /// Преобразовать строку в double.
50 /// </summary>
51 /// <param name="value">Строка.</param>
52 /// <returns>Число типа double или null.</returns>
53 /// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles"></seealso>
54 /// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.getcultureinfo"></seealso>
55 /// <seealso cref="https://en.wikipedia.org/wiki/Decimal_separator"></seealso>
56 [Public]
57 public virtual double? StringToDouble(string value)
58 {
59 if (string.IsNullOrWhiteSpace(value))
60 return null;
61
62 double result;
63 // Попробовать выполнить преобразование в ru-RU культуре.
64 if (!double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("ru-RU"), out result) &&
65 // Затем попробовать выполнить преобразование в en-US культуре.
66 !double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US"), out result) &&
67 // Затем попробовать выполнить преобразование в es-ES культуре.
68 !double.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("es-ES"), out result))
69 // "NumberStyles.Any" + локаль "ru-RU"/"en-US" покрывает большую часть форматов написания числа - комбинаций из десятичного разделителя ("," и ".") и разделителя групп разрядов (" ", "," и ".").
70 // Еще часть комбинаций закрывается поиском по локали "es-ES" (например "1.234.567,89"), но остаются другие экзотические форматы (например "1 234 567.89") и арабский разделитель "мумаййиз".
71 {
72 return null;
73 }
74
75 return result;
76 }
77
78 /// <summary>
79 /// Преобразовать строку в целое число.
80 /// </summary>
81 /// <param name="value">Строка с числом.</param>
82 /// <returns>Целое число или null.</returns>
83 /// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.numberstyles"></seealso>
84 /// <seealso cref="https://docs.microsoft.com/en-us/dotnet/api/system.globalization.cultureinfo.getcultureinfo"></seealso>
85 /// <seealso cref="https://en.wikipedia.org/wiki/Decimal_separator"></seealso>
86 [Public]
87 public virtual int? StringToInt(string value)
88 {
89 if (string.IsNullOrWhiteSpace(value))
90 return null;
91
92 int result;
93
94 // Попробовать выполнить преобразование в ru-RU культуре.
95 if (!int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("ru-RU"), out result) &&
96 // Затем попробовать выполнить преобразование в en-US культуре.
97 !int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("en-US"), out result) &&
98 // Затем попробовать выполнить преобразование в es-ES культуре.
99 !int.TryParse(value, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.GetCultureInfo("es-ES"), out result))
100 {
101 return null;
102 }
103
104 return result;
105 }
106
107 /// <summary>
108 /// Преобразовать статус записи RX из строки в перечисление.
109 /// </summary>
110 /// <param name="stringStatus">Статус записи RX (строка).</param>
111 /// <returns>Статус записи RX (перечисление).</returns>
112 [Public]
113 public virtual Enumeration? ConvertTextRXStatusToRXStatus(string stringStatus)
114 {
115 Enumeration? result = null;
116
117 if (stringStatus == Sungero.CoreEntities.DatabookEntry.Status.Active.Value)
118 return Sungero.CoreEntities.DatabookEntry.Status.Active;
119
120 if (stringStatus == Sungero.CoreEntities.DatabookEntry.Status.Closed.Value)
121 return Sungero.CoreEntities.DatabookEntry.Status.Closed;
122
123 return result;
124 }
125
126 /// <summary>
127 /// Преобразовать состояние записи D5 в статус записи RX (перечисление).
128 /// </summary>
129 /// <param name="d5Status">Состояния записи из D5.</param>
130 /// <returns>Статус записи RX.</returns>
131 [Public]
132 public virtual Enumeration? ConvertD5StatusToRXStatus(string d5Status)
133 {
134 Enumeration? result = null;
135
136 if (d5Status == Constants.Module.D5StatusName.Active)
137 return Sungero.CoreEntities.DatabookEntry.Status.Active;
138
139 if (d5Status == Constants.Module.D5StatusName.Closed)
140 return Sungero.CoreEntities.DatabookEntry.Status.Closed;
141
142 return result;
143 }
144
145 /// <summary>
146 /// Раскодировать строку из base64.
147 /// </summary>
148 /// <param name="value">Строка в base64.</param>
149 /// <returns>Строка.</returns>
150 [Public]
151 public virtual string Base64ToString(string value)
152 {
153 var b = Convert.FromBase64String(value);
154 var strOriginal = System.Text.Encoding.UTF8.GetString(b);
155 return strOriginal;
156 }
157
158 #endregion
159
160 #region Функции по преобразованию данных в строку.
161
162 /// <summary>
163 /// Преобразовать статус записи RX в состояние записи D5.
164 /// </summary>
165 /// <param name="rxStatus">Статус записи RX.</param>
166 /// <returns>Состояние записи в D5.</returns>
167 [Public]
168 public virtual string ConvertRXStatusToD5Status(Enumeration? rxStatus)
169 {
170 var result = string.Empty;
171
172 if (rxStatus == Sungero.CoreEntities.DatabookEntry.Status.Active)
173 return Constants.Module.D5StatusName.Active;
174
175 if (rxStatus == Sungero.CoreEntities.DatabookEntry.Status.Closed)
176 return Constants.Module.D5StatusName.Closed;
177
178 return result;
179 }
180
181 /// <summary>
182 /// Закодировать строку в base64.
183 /// </summary>
184 /// <param name="value">Строка.</param>
185 /// <returns>Закодированная строка.</returns>
186 [Public]
187 public virtual string StringToBase64(string value)
188 {
189 var b = System.Text.Encoding.UTF8.GetBytes(value);
190 var strModified = Convert.ToBase64String(b);
191 return strModified;
192 }
193
194 #endregion
195
196 }
197 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using Sungero.Core;
5 using Sungero.CoreEntities;
6
7 namespace DirRX.DciCore.Structures.Module
8 {
9
10 }
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
4 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
5 <xsd:element name="root" msdata:IsDataSet="true">
6 <xsd:complexType>
7 <xsd:choice maxOccurs="unbounded">
8 <xsd:element name="metadata">
9 <xsd:complexType>
10 <xsd:sequence>
11 <xsd:element name="value" type="xsd:string" minOccurs="0" />
12 </xsd:sequence>
13 <xsd:attribute name="name" use="required" type="xsd:string" />
14 <xsd:attribute name="type" type="xsd:string" />
15 <xsd:attribute name="mimetype" type="xsd:string" />
16 <xsd:attribute ref="xml:space" />
17 </xsd:complexType>
18 </xsd:element>
19 <xsd:element name="assembly">
20 <xsd:complexType>
21 <xsd:attribute name="alias" type="xsd:string" />
22 <xsd:attribute name="name" type="xsd:string" />
23 </xsd:complexType>
24 </xsd:element>
25 <xsd:element name="data">
26 <xsd:complexType>
27 <xsd:sequence>
28 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
29 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
30 </xsd:sequence>
31 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
32 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
33 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
34 <xsd:attribute ref="xml:space" />
35 </xsd:complexType>
36 </xsd:element>
37 <xsd:element name="resheader">
38 <xsd:complexType>
39 <xsd:sequence>
40 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
41 </xsd:sequence>
42 <xsd:attribute name="name" type="xsd:string" use="required" />
43 </xsd:complexType>
44 </xsd:element>
45 </xsd:choice>
46 </xsd:complexType>
47 </xsd:element>
48 </xsd:schema>
49 <resheader name="resmimetype">
50 <value>text/microsoft-resx</value>
51 </resheader>
52 <resheader name="version">
53 <value>2.0</value>
54 </resheader>
55 <resheader name="reader">
56 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
57 </resheader>
58 <resheader name="writer">
59 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
60 </resheader>
61 <data name="DisplayName" xml:space="preserve">
62 <value>Межсистемное взаимодействие</value>
63 </data>
64 <data name="CoverTitle" xml:space="preserve">
65 <value>Механизмы межсистемного взаимодействия</value>
66 </data>
67 <data name="CoverGroup_GroupSettings" xml:space="preserve">
68 <value>Настройки</value>
69 </data>
70 <data name="CoverDescription" xml:space="preserve">
71 <value>Модуль предназначен для организации сквозных бизнес-процессов и синхронизации данных между системами</value>
72 </data>
73 <data name="CoverAction_Settings" xml:space="preserve">
74 <value>Настройки DCI</value>
75 </data>
76 <data name="CoverDescription_Settings" xml:space="preserve">
77 <value>Основные параметры для работы с модулем</value>
78 </data>
79 <data name="CoverDescription_PingMessage" xml:space="preserve">
80 <value>Отправка тестового сообщения во внешнюю систему для проверки связи</value>
81 </data>
82 <data name="CoverAction_PingMessage" xml:space="preserve">
83 <value>Отправить тестовое сообщение</value>
84 </data>
85 <data name="AsyncHandler_Description_a03678a5178b4a4f9c0efb5d2ddbef33" xml:space="preserve">
86 <value>Получить и обработать входящее сообщение DCI</value>
87 </data>
88 <data name="JobDisplayName_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
89 <value>Межсистемное взаимодействие. Отправка изменений во внешнюю систему</value>
90 </data>
91 <data name="JobDescription_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
92 <value>Выполняет поиск сущностей системы, которые были изменены с моменты последней синхронизации</value>
93 </data>
94 <data name="AsyncHandler_Description_76d6a6af4016471da784780ffaf23255" xml:space="preserve">
95 <value>Найти изменения типа сущности и отправить исходящее сообщение DCI</value>
96 </data>
97 <data name="CoverTab_Tab" xml:space="preserve">
98 <value>Tab</value>
99 </data>
100 <data name="CoverAction_DciProcessKinds" xml:space="preserve">
101 <value>Виды межсистемных процессов</value>
102 </data>
103 <data name="CoverDescription_DciProcessKinds" xml:space="preserve">
104 <value>Открыть список межсистемных процессов</value>
105 </data>
106 </root>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <root>
3 <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
4 <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
5 <xsd:element name="root" msdata:IsDataSet="true">
6 <xsd:complexType>
7 <xsd:choice maxOccurs="unbounded">
8 <xsd:element name="metadata">
9 <xsd:complexType>
10 <xsd:sequence>
11 <xsd:element name="value" type="xsd:string" minOccurs="0" />
12 </xsd:sequence>
13 <xsd:attribute name="name" use="required" type="xsd:string" />
14 <xsd:attribute name="type" type="xsd:string" />
15 <xsd:attribute name="mimetype" type="xsd:string" />
16 <xsd:attribute ref="xml:space" />
17 </xsd:complexType>
18 </xsd:element>
19 <xsd:element name="assembly">
20 <xsd:complexType>
21 <xsd:attribute name="alias" type="xsd:string" />
22 <xsd:attribute name="name" type="xsd:string" />
23 </xsd:complexType>
24 </xsd:element>
25 <xsd:element name="data">
26 <xsd:complexType>
27 <xsd:sequence>
28 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
29 <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
30 </xsd:sequence>
31 <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
32 <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
33 <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
34 <xsd:attribute ref="xml:space" />
35 </xsd:complexType>
36 </xsd:element>
37 <xsd:element name="resheader">
38 <xsd:complexType>
39 <xsd:sequence>
40 <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
41 </xsd:sequence>
42 <xsd:attribute name="name" type="xsd:string" use="required" />
43 </xsd:complexType>
44 </xsd:element>
45 </xsd:choice>
46 </xsd:complexType>
47 </xsd:element>
48 </xsd:schema>
49 <resheader name="resmimetype">
50 <value>text/microsoft-resx</value>
51 </resheader>
52 <resheader name="version">
53 <value>2.0</value>
54 </resheader>
55 <resheader name="reader">
56 <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
57 </resheader>
58 <resheader name="writer">
59 <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
60 </resheader>
61 <data name="CoverTitle" xml:space="preserve">
62 <value>Механизмы межсистемного взаимодействия</value>
63 </data>
64 <data name="CoverGroup_GroupSettings" xml:space="preserve">
65 <value>Настройки</value>
66 </data>
67 <data name="CoverAction_Settings" xml:space="preserve">
68 <value>Настройки DCI</value>
69 </data>
70 <data name="DisplayName" xml:space="preserve">
71 <value>Межсистемное взаимодействие</value>
72 </data>
73 <data name="CoverDescription" xml:space="preserve">
74 <value>Модуль предназначен для организации сквозных бизнес-процессов и синхронизации данных между системами</value>
75 </data>
76 <data name="CoverAction_PingMessage" xml:space="preserve">
77 <value>Отправить тестовое сообщение</value>
78 </data>
79 <data name="CoverDescription_PingMessage" xml:space="preserve">
80 <value>Отправка тестового сообщения во внешнюю систему для проверки связи</value>
81 </data>
82 <data name="AsyncHandler_Description_a03678a5178b4a4f9c0efb5d2ddbef33" xml:space="preserve">
83 <value>Получить и обработать входящее сообщение DCI</value>
84 </data>
85 <data name="AsyncHandler_Description_76d6a6af4016471da784780ffaf23255" xml:space="preserve">
86 <value>Найти изменения типа сущности и отправить исходящее сообщение DCI</value>
87 </data>
88 <data name="JobDisplayName_c22dcae54d534637a2b8136f4e75666d" xml:space="preserve">
89 <value>Межсистемное взаимодействие. Отправка изменений во внешнюю систему</value>
90 </data>
91 <data name="CoverAction_DciProcessKinds" xml:space="preserve">
92 <value>Виды межсистемных процессов</value>
93 </data>
94 <data name="CoverDescription_DciProcessKinds" xml:space="preserve">
95 <value>Открыть список межсистемных процессов</value>
96 </data>
97 </root>
...\ No newline at end of file ...\ No newline at end of file