В этом разделе описано, как разрабатывать систему Документооборота, используя модуль Xafari Docflow. Для примера будет использовано демо-приложение Xafari BCDemo.

Подготовительный этап включает следующие действия:

Для начала работы в приложение необходимо подключить модули Xafari.Docflow и Xafari.Docflow.Web или Xafari.Docflow.Win, в зависимости от того, под какую платформу приложение. Так же в зависимости от того, как будут описаны документы, поддерживающие Документооборот, необходимо будет подключить модуль Xafari.Docflow.DC для Domain Components или Xafari.Docflow.Xpo в случае XPO. Все используемые типы данных будут зарегистрированы автоматически.

Под документом в Xafari Docflow понимается объект, поддерживающий описание и выполнение Регламента. В качестве документа может быть использован любой произвольный тип в системе. Нам необходимо описать Domain Component, который будет реализовывать интерфейс IDocflowSupport и будет служить внешним расширением для документа. Это расширение для документа необходимо зарегистрировать. Регистрация для XPO и DC подходов различна.

Для DC реализации используется механизм Xafari.XF. а для

В случае XPO, для регистрации следует воспользоваться одним из методов, реализованных в XPO модуле Документооборота:

Кроме того имеются методы расширения для типа документа:

Пример DC

Описание документа:

 

    [DomainComponent]

    [XafDefaultProperty("DisplayName")]

    public interface DocflowDocument : Document

    {

    }

 

Описание расширения для документа:

 

      [DomainComponent]

    [MapInheritance(MapInheritanceType.ParentTable)]

    [EntityExtension(typeof(DocflowDocument))]

    public interface DocflowExtension : DocflowSupport

    {

    }

 

Пример регистрации расширения и документа:

 

      void IXFRegistrator.RegisterXF(EntityFactory entityFactory)

        {

            EntityFactory.Instance.RegisterEntity<DocflowDocument>();

            EntityFactory.Instance.RegisterExtension<DocflowDocumentDocflowExtension>();

         }

 

Пример Xpo

Описание документа:

 

    [DefaultClassOptions]

    [XafDefaultProperty("Name")]

    public class XpoDocument : BaseObject

    { 

        public XpoDocument(Session session)

            : base(session)

        {

        }

        

        private string _persistentProperty;

 

        [XafDisplayName("My display name"), ToolTip("My hint message")]

        [ModelDefault("EditMask""(000)-00"), Index(0), VisibleInListView(false)]

        [Persistent("DatabaseColumnName")]

        public string PersistentProperty

        {

            get { return _persistentProperty; }

            set {SetPropertyValue("PersistentProperty"ref _persistentProperty, value);}

        }

 

        private string _name;

        public string Name

        {

            get { return _name; }

            set { SetPropertyValue("Name"ref _name, value); }

        }

    }

 

Описание расширения для документа: 

 

    [DomainComponent]

    [MapInheritance(MapInheritanceType.ParentTable)]

    public interface XpoDocflowExtension : DocflowSupport

    {

        [Term("Docflow")]

        [BackReferenceProperty("BackXpoDocument")]

        XpoDocument XpoDocument { getset; }

    }

 

Атрибут [Term("Docflow")] используется для указания, что именно это поле является ссылкой на документ, атрибут [BackReferenceProperty("BackXpoDocument")] используется, чтоб задать имя генерируемого автоматически в документе поля, являющегося ссылкой на расширение документа. Данные атрибуты используются при регистрации расширения документа без указания наименований полей, если будет использована регистрация с указанием наименований полей, то данные атрибуты будут проигнорированы.

Пример регистрации расширения и документа:

 

      public override void Setup(ApplicationModulesManager moduleManager)

        {

            base.Setup(moduleManager);

            XafTypesInfo.Instance.RegisterEntity<XpoDocflowExtension>();

            typeof(XpoDocument).RegisterDocflow<XpoDocflowExtension>();

        }

 

После этого можно приступать описанию регламента для документа. Проектирование Регламентов Документооборота проводится в Модели Приложения, в узле Xafari|Docflow.

Узел Docflow включает три узла:

В следующих статьях представлена подробная информация об элементах узла Xafari|Docflow:

Documents

- Document

Participants

SchemasRepository

Document Links

Properties

- Property

- BindingProperty

- CollectionProperty

Tasks

- Link

- Tasks Group

Общие свойства всех работ и групп работ.

Общие свойства всех работ.

Задачи (Tasks).

- Task - Instruction.

- Task – Detail View.

- Task – List View.

- Task – Create By Template.

- Task – Create Linked Document.

- Task – Business Operation.

Визы (Signatures).

- Signature - Automatic.

- Signature - Wait.

- Signature - Condition.

- Signature - Approval.