Coder Social home page Coder Social logo

Сделать интерфейсы для удобной работы с Вложениями Диадок about diadocsdk-csharp HOT 10 CLOSED

diadoc avatar diadoc commented on May 30, 2024 2
Сделать интерфейсы для удобной работы с Вложениями Диадок

from diadocsdk-csharp.

Comments (10)

SLenik avatar SLenik commented on May 30, 2024

Уважаемые разработчики. Так что Вы по этому поводу думаете?

from diadocsdk-csharp.

trurl123 avatar trurl123 commented on May 30, 2024

Я не разработчик Diadoc SDK, но разрабатываю интеграционные сервисы для Диадока. На самом деле есть такая проблема и ее хотелось бы решить.

from diadocsdk-csharp.

asvyazin avatar asvyazin commented on May 30, 2024

А откуда вообще эта задача добавлять произвольные вложения берется? Мне кажется, в каждом конкретном месте всегда известно, что именно ты добавляешь, и необходимости в этом методе нет. Я только один пример вижу и то сомнительный - в тестах желание отправить все возможные типы документов, например... А еще?

from diadocsdk-csharp.

trurl123 avatar trurl123 commented on May 30, 2024

Например, у тебя есть отдельный код, который создает вложения и отдельный код, который ставит подписи. Чтобы поставить подписи тебе нужно делать switch по типу вложения, либо через рефлексию обращаться к свойствам. Или нужно получить список номеров документов у полуформализованных.
Вложения имеют общие свойства и эти свойства по логике одинаковы. Поэтому есть смысл работать со списком вложений.

from diadocsdk-csharp.

einfoman avatar einfoman commented on May 30, 2024

@trurl123, А как быть с тем, что некоторые типы (например, полуформализованные) позволяют дополнительную информацию передавать?

from diadocsdk-csharp.

trurl123 avatar trurl123 commented on May 30, 2024

@einfoman Для полуформализованных тоже можно отдельный интерфейс завести, который будет наследоваться от базового интерфейса для документа.

from diadocsdk-csharp.

SLenik avatar SLenik commented on May 30, 2024

А откуда вообще эта задача добавлять произвольные вложения берется? Мне кажется, в каждом конкретном месте всегда известно, что именно ты добавляешь...

@asvyazin Кроме того случая, когда логика отправки документов отделена от логики их обработки.

Система ЭДО, которую я поддерживаю, является мультипровайдерной и, как следствие, имеет несколько слоёв. В частности, у нас логика обработки ЭД, например, создание подписи, генерации парных служебных документов: титула покупателя для подписи им титула продавца, а также создание ИоП или УоУ, - всё это мы делаем самостоятельно, дабы не зависеть от конкретной реализации этих функций у провайдера; и этот код вынесен на отдельный слой системы.
А работа с непосредственно с API провайдера находится уровнем ниже и строится так, чтобы соответствующие классы были лишь простейшими транслятором между сущностями и операциями нашей системы и сущностями и операциями конкретного провайдера.

Именно поэтому мы и хотим избавиться от копипасты при отправке: функция отправки сообщения в адаптере для провайдера Диадок у нас получает аналог Вашего типа MessageToPost: адрес отправителя + адрес получателя + список объектов на отправку (ближе всего это к помеси Entity + SignedContent) – и по факту всё, что ей надо сделать это вызвать PostMessage. Вот только сейчас для этого приходится использовать монструозный код из примера в первом сообщении.

ЗЫ. Кстати, пример с кодом подписи @trurl123 тоже очень показателен: представьте что для доступа к ЭЦП приходится использовать отдельный сервис наподобие КриптоПро DSS.

from diadocsdk-csharp.

SLenik avatar SLenik commented on May 30, 2024

@trurl123, А как быть с тем, что некоторые типы (например, полуформализованные) позволяют дополнительную информацию передавать?

@einfoman Для полуформализованных тоже можно отдельный интерфейс завести, который будет наследоваться от базового интерфейса для документа.

Действительно, вариантов масса. Например для начала сгруппировать дополнительную информацию по её типу и сделать на каждую свой интерфейс:

  • IAttachmentWithComment - если у объекта есть комментарий
  • IAttachmentWithRelatedDocuments - если для объекта можно устанавливать связанные документы и т.п.

А как все такие интерфейсы будут - собрать из них уже составные типа
INonformalizedAttachment : IAttachmentWithComment, IAttachmentWithRelatedDocuments
в которые добавить свойства, которые относятся именно к неформализованным документам и ни к каким либо ещё.

from diadocsdk-csharp.

SLenik avatar SLenik commented on May 30, 2024

Спят усталые игрушки, книжки спят... =)

from diadocsdk-csharp.

atytsky avatar atytsky commented on May 30, 2024

Оставлю ссылки здесь и закрою тикет:

from diadocsdk-csharp.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.