рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдлрд╝рд╛рдЙрдВрдбреЗрд╢рди рдХрд╛ рдЕрд╡рд▓реЛрдХрди [рднрд╛рдЧ 2]

рдХреНрдпрд╛ рдПрдХ рдЫреЛрдЯреА рд╕реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдПрдХ рдЕрд╕рдВрднрд╡ рдХрд╛рд░реНрдп рд╣реИ?



рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдореИрдВрдиреЗ WF рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрдм рдЗрд╕ рддрдХрдиреАрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХрд░реВрдБрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдбрдмреНрд▓реНрдпреВрдПрдл рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЗрд╕рд▓рд┐рдП, рдХрд╛рд░реНрдп рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред



рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрдИ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рддреЛрдбрд╝ рджреВрдВрдЧрд╛ред


рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдП рд░рдЦрдирд╛

рдпрд╣ рдореЙрдбреНрдпреВрд▓ ASP.NET MVC рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрди рдкрд░ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдпрд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред


рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рд▓рдЧрднрдЧ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ *:


/// <summary> ///   /// </summary> public interface IDocument { /// <summary> ///   /// </summary> int DocumentId { get; set; } /// <summary> ///   /// </summary> User Author { get; set; } /// <summary> ///    /// </summary> int AuthorId { get; set; } } 

* рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдХреЗ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐рдпрд╛рдБ

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (рдмрд╛рдж рдореЗрдВ - рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐)ред рд╕рд╛рдЭрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ 2 рдЗрдирдкреБрдЯ рддрд░реНрдХ рд╣реИрдВ:


 /// <summary> ///      /// </summary> public interface IDocumentWorkflow { /// <summary> ///   ( ) /// </summary> InArgument<int> DocumentId { get; set; } /// <summary> ///  ,   ( ) /// </summary> Inrgument<int> UserId { get; set; } } 

, рдпрд╣рд╛рдБ DocumentId рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдВрдЬреА рд╣реИ, рдФрд░ UserId рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреБрдВрдЬреА рд╣реИред


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ, рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдВрдЬреА рдШреБрдорд╛рдИ рдЬрд╛рддреА рд╣реИ, рди рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬреЛ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрд╣рд╛рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдпрджрд┐ рд╣рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ)ред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рдЕрд▓рдЧ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░, рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рддреА рд╣реИ, рдбрд╛рдпрдиреЗрдорд┐рдХ LINQ - рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдпрд╣ рдЬрд╛рдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдпред


рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ - рд╣рдорд╛рд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдХрд╕реНрдЯрдо рднрд╛рдЧ - рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рджреНрд╡рд╛рд░рд╛ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ XAML рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдиреАрдЪреЗ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд WF рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред


 /// <summary> ///         /// </summary> /// <typeparam name="T">  </typeparam> /// <param name="documentId"> </param> /// <param name="userId"> </param> public static void StartDocumentWorkflow<T>(int documentId, int userId) where T: Activity, IDocumentWorkflow, new() { //              var wfApp = new WorkflowApplication(new T(), new Dictionary<string, object>() { { "DocumentId", documentid}, { "UserId", userId}}); //     wfApp.InstanceStore = new SqlWorkflowInstanceStore(ApplicationData.ConnectionString); wfApp.PersistableIdle = (e) => { // ,    тАУ    return PersistableIdleAction.Unload; }; wfApp.Completed = (completeArg) => { //   }; wfApp.Aborted = (abortArg) => { //  }; wfApp.OnUnhandledException = (exceptionArg) => { //    return UnhandledExceptionAction.Abort; }; wfApp.Run(); } 

рдпрд╣рд╛рдВ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрдВрдбрд╛рд░рдг рд╡рд░реНрдЧ SqlWorkflowInstanceStore рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд░рдирдЯрд╛рдЗрдо рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдХрд┐рд╕реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рддрд░реНрдХ рдкрд╛рд╕ рдХрд░рдирд╛

рддреЛ, рд╕рдордЧреНрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдКрдкрд░ рдФрд░ рдЪрд▓ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдЙрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрд╕рдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд╣ рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рдХреНрд░рд┐рдпрд╛рдПрдВ рднреА рдХрд░рддрд╛ рд╣реИред


рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдбреЗрдЯрд╛ (рдмрд╛рдж рдореЗрдВ - рддрд░реНрдХ) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред 2 рд╡рд┐рдХрд▓реНрдк рдереЗред рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░рдХрд╛рд░ (рдХреБрдВрдЬреА-рдореВрд▓реНрдп рд╕рдВрдЧреНрд░рд╣) рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдордЬрдмреВрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдпрд╛ рдФрд░ рдХрд╕реНрдЯрдо рддрд░реНрдХ рдХреА рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдХрдХреНрд╖рд╛рдПрдВ IAssignArgument рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:


 /// <summary> ///        /// </summary> public interface IAssignArgument { /// <summary> ///  ,   /// </summary> int UserId { get; set; } } /// <summary> ///          /// </summary> public abstract class AssignArgumentBase : IAssignArgument { /// <summary> ///  ,   /// </summary> [DisplayName(" ")] [EditorBrowsable(EditorBrowsableState.Never)] public int UserId { get; set; } } [DisplayName("")] [Category("")] public sealed class Learn : AssignArgumentBase { } [DisplayName(" , , ")] [Category("")] public sealed class EnterNumberDateFile : AssignArgumentBase { [Required, DisplayName(" ")] public string Number {get; set;} [Required, DisplayName(" ")] public DateTime Date {get; set;} [FileId, Required, DisplayName("")] public int? FileId {get; set;} } 

рдЬрд╣рд╛рдБ UserId рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЗ рд▓рд┐рдП Argument рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреБрдВрдЬреА рд╣реИред


рдЕрдм рд╣рдо рд╕реНрд╡рдпрдВ рдЙрд╕ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрдирдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реА рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, NativeActivity <T> рд╡рд░реНрдЧ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ T рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ - рд╣рдорд╛рд░рд╛ рддрд░реНрдХред рд╣рдо рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рджреЗрддреЗ рд╣реИрдВ:


 [DisplayName(" ...")] [Category("")] [Designer("DocWorkflow.Activities.Designer.GenericActivityDesigner, DocWorkflow.Activities.Designer")] public class AssignDocumentActivity<T> : NativeActivity<T> where T : class, IAssignArgument, new() { /// <summary> ///    /// </summary> [DisplayName("")] public new OutArgument<T> Result { get { return base.Result; } set { base.Result = value; } } /// <summary> ///    /// </summary> [DisplayName("")] [RequiredArgument] public InArgument<int> DocumentId { get; set; } /// <summary> ///  ,     /// </summary> [DisplayName(" ")] [RequiredArgument] public InArgument<int> UserId { get; set; } /// <summary> /// 1-  (   ): /// -       ,     ; /// -  . /// </summary> protected override void Execute(NativeActivityContext context) { var bookmarkName = Guid.NewGuid().ToString(); using (var store = new DataStore()) { store.Add(new AssignedDocumentInfo() { UserId = context.GetValue(this.UserId), WorkflowInstanceId = context.WorkflowInstanceId.ToString(), ActivityInstanceId = context.ActivityInstanceId.ToString(), WorkflowType = context.GetExtension<WorkflowInstInfo>().GetProxy().WorkflowDefinition.GetType().FullName, ArgumentType = typeof(T).FullName, BookmarkName = bookmarkName, DocumentId = context.GetValue(this.DocumentId), ActivityName = this.DisplayName, AssignedDate = DateTime.Now }); } context.CreateBookmark(bookmarkName, new BookmarkCallback(this.Continue)); } /// <summary> /// 2-  (   ): /// -       ; /// -    . /// </summary> protected void Continue(NativeActivityContext context, Bookmark bookmark, object obj) { using (var store = new DataStore()) { foreach (var item in store.AssignedDocumentInfo.Where(aa => aa.WorkflowInstanceId == context.WorkflowInstanceId.ToString() && aa.ActivityInstanceId == context.ActivityInstanceId.ToString() && aa.UserId == context.GetValue(this.UserId) && aa.BookmarkName == bookmark.Name).ToArray()) { store.Remove(item); } } Result.Set(context, (T)obj); } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐ рд░рд╛рдЬреНрдп рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреБрдВрдЬреА, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдВрдЬреА рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдп рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░, рддрд░реНрдХ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдирд╛рдо, "рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмреБрдХрдорд╛рд░реНрдХ") рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, рдпрд╣ рдЗрдирдкреБрдЯ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрдирд░рд▓ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред




рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛рд░реНрдп рдореЙрдбреНрдпреВрд▓, рдмрджрд▓реЗ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдЬрдм рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд░рд┐рдХрд╡рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рддрд░реНрдХ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рджреГрд╢реНрдп рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рдпрд╣ рдХрд╕реНрдЯрдо рджреГрд╢реНрдп рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред ред





рддрд░реНрдХ рдХреА рд╕рдЦреНрдд рдЯрд╛рдЗрдкрд┐рдВрдЧ ( рдкреНрд░рддрд┐рдкрдХреНрд╖реА рддрд░реНрдХ рд╣реИ ["Prop1"] ) рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЪрд░рдг рдореЗрдВ рддрд░реНрдХ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрд▓ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред



рдПрдХ рдзрд╛рд░рд╛ рдЬреЛ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддреА рд╣реИ, рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣реА рд╣реИ, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕рдВрдХрд▓рди рдЪрд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ, рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдордВрдЪ рдкрд░ рдирд╣реАрдВ, рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗред


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЛрдб рд╣реИред


 public static void ResumeWorkflow<T>(int assignedDocumentInfoKey, T arg) where T: IAssignArgument { AssignedDocumentInfo assignedDocumentInfo = null; using (var store = new DataStore()) { //     assignedDocumentInfo = store.AssignedDocumentInfo .Where(aa => aa.AssignedDocumentInfoId=assignedDocumentInfoKey).First(); } var activity = (Activity) Activator.CreateInstance(Type.GetType(assignedDocumentInfo.WorkflowType)); WorkflowApplication wfApp = new WorkflowApplication(activity); wfApp.InstanceStore = new SqlWorkflowInstanceStore(ApplicationData.ConnectionString); wfApp.PersistableIdle = (e) => { return PersistableIdleAction.Unload; }; //    wfApp.Load(new Guid(assignedDocumentInfo.WorkflowInstanceId)); //           wfApp.ResumeBookmark(new Bookmark(assignedDocumentInfo.BookmarkName), arg); } 

рдореИрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдЧреБрдгреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:


 public class MyActivity<T> : CodeActivity { public InArgument<int> UserId1 {get; set;} public int UserId2 {get; set;} } 

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп (рдпрд╣ OutArgument <T> рдФрд░ рдЪрд░ <T> рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ) рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рднрд╛рдЧреАрджрд╛рд░ рд╣реИ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рднрдВрдбрд╛рд░рдг рдореЗрдВ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЧреБрдг рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рддрддреНрд╡ рд╣реИред XAML рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ ред


рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рди рдПрдХ рд╕реНрдерд┐рд░ рд╣реИ - рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдПрдХреНрд╕рдПрдПрдордПрд▓ рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЧреБрдг рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рддрддреНрд╡ - XAML рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ ред


рдмрд╛рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╢реБрднрд╛рд░рдВрдн рдХрд╛ рдкреНрд░рдмрдВрдзрди

рдЕрдЧрд▓рд╛, рд╣рдо рднрдВрдбрд╛рд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рд╡рд╣рд╛рдБ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЯрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдмрд╛рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рд╣рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЖрдзрд╛рд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХреЛрдбрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


 /// <summary> ///         -  /// </summary> /// <typeparam name="T">  </typeparam> public abstract class ObjectSetPropertyActivity<T> : CodeActivity where T : class { public T Object { get; set; } } /// <summary> ///       -  /// </summary> /// <typeparam name="T">  </typeparam> /// <typeparam name="TProperty">  </typeparam> public class ObjectSetPropertyActivity<T, TProperty> : ObjectSetPropertyActivity<T> where T : class { /// <summary> ///   /// </summary> public string Property { get; set; } /// <summary> ///     ( ) /// </summary> [RequiredArgument] public InArgument<TProperty> Value { get; set; } protected override void Execute(CodeActivityContext context) { //   typeof(T).GetProperty(Property).SetValue(Object, Value.Get(context), null); } } /// <summary> /// ,      /// </summary> /// <typeparam name="T">   </typeparam> /// <typeparam name="TKey">  </typeparam> public class ObjectUpdateActivity<T, TKey> : CodeActivity where T : class { public ObjectUpdateActivity() { this.Activities = new Collection<ObjectSetPropertyActivity<T>>(); } /// <summary> ///     ( ) /// </summary> public InArgument<TKey> Key { get; set; } /// <summary> ///        /// </summary> public Collection<ObjectSetPropertyActivity<T>> Activities { get; set; } protected override void Execute(NativeActivityContext context) { if (this.Activities.Count > 0) { var store = new DocWorkflowDbContext(); var obj = store.LoadObject<T>(context.GetValue(Key)); var index = 0; CompletionCallback callback = (context1, activityInstance) => { index++; //    : //-  ; //-      . if (index < this.Activities.Count) { this.Activities[index].Object = obj; context1.ScheduleActivity(this.Activities[index], callback); } else { store.UpdateObject(obj); store.SaveChanges(); store.Dispose(); } }; //      this.Activities[index].Object = obj; //    context.ScheduleActivity(this.Activities[index], callback); } } } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореВрд▓ рдЧрддрд┐рд╡рд┐рдзрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реЛрдб рдХрд░рддреА рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП WF рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рднреА рдмрд╛рд▓ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд╣реЗрдЬрддреА рд╣реИред рдЧрддрд┐рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдХреЗ рдХрд╛рд░рдг, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдирдП рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рднреА рд╣реИред


рддреЛ рдпрд╣ рдЧрддрд┐рд╡рд┐рдзрд┐ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рджрд┐рдЦ рд╕рдХрддреА рд╣реИред



рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдбрд┐рдЬрд╝рд╛рдЗрдирд░

рдпрд╣ рддрдХрдиреАрдХ рдХрд╛ рд╕рдмрд╕реЗ "рдЪрд┐рдкрдЪрд┐рдкрд╛" рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдЗрд╕ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ "рдбрд╛рдВрд╕ рдФрд░ рдмреАрдЯ рдЯреИрдореНрдмреЛрд░рд┐рди" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣реА


рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА WPF рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдпрд╣рд╛рдВ рдореБрдЦреНрдп рддрддреНрд╡ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдбрд┐рдЬреЗрдирд░ рд╣реИ - рдЧреНрд░рд╛рдлрд┐рдХ рдХреНрд╖реЗрддреНрд░ рдЬрд┐рд╕рдореЗрдВ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред


рдкреНрд░рддреНрдпреЗрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ (рд╡реАрдПрд╕ рдореЗрдВ [рдбрд┐рдЬрд╛рдЗрдирд░] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбрдмреНрд▓реНрдпреВрдПрдл рддрддреНрд╡ - рдЧрддрд┐рд╡рд┐рдзрд┐ рдбрд┐рдЬрд╛рдЗрдирд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рднреА рд╣реИред рд╡рд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ - [рд╕рдВрдкрд╛рджрдХ] рд╡рд┐рд╢реЗрд╖рддрд╛ред рдпрд╛рдиреА рдЗрд╕ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВред


рдореИрдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдРрд╕реА рдЪреАрдЬ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреЛ рдмрд╛рд╣рд░ рдЦрдбрд╝реА рд╣реИ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ред


рдпрд╣рд╛рдВ рдПрдХ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдпрд╣ рдПрдХ рдореЙрдбрд▓ рд╣реИ рдХрд┐ рдХреИрд╕реЗ XAML рдореЗрдВ рдПрдиреНрдХреЛрдб рдХреА рдЧрдИ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рддреБрд░рдВрдд рдирдИ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╕реЗ рд╕рднреА рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╢реБрд░реБрдЖрддреА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ "рд╕реБрд╡рд┐рдзрд╛" рд╣рдореЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдИред


рдФрд░ рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрдХреГрд╖реНрдЯ WF рдкрджреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдк рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдПрдХ рдирдореВрдирд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХрдо рд╕реЗ рдХрдо "рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдирд╛" рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдирд┐рд╖реНрдХрд░реНрд╖

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рдХрд╛рд╕ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╣реИред рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧреБрдгреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред


рдмрд╣реБрдд рдХрд╛рдо рд╣реБрдЖ рдерд╛? рдмрдбрд╝рд╛ рдПрдХред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЫреЛрдЯреА рдЯреАрдо рдХреЗ рджрд╛рдВрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ? рд╣рд╛рдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 3 - 4 рд▓реЛрдЧреЛрдВ рдХреА рдЯреАрдо рдХреЗ рд▓рд┐рдПред рдФрд░ рд╕рдордп рдХреА рдЙрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдореЗрдВ!


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!


рдЫрд╡рд┐


Source: https://habr.com/ru/post/In182746/


All Articles