Код программы для документооборота

В рамках нашего приложения мне нужно написать «простую» систему рабочих процессов, которая будет использоваться для поддержки жизненного цикла создания документов. Он должен поддерживать: — различные действия: редактировать документ, проверять документ (утверждать, отклонять), публиковать документ. — назначать эти действия различным людям / пользователям — «параллельное разделение и объединение». Например, я хочу поддержать рабочий процесс следующим образом:

— begin 1.) Create document 2.) Translate document 2.1) Translate into English 2.1.1) Translate document into English 2.1.2) Verify English translation 2.2) Translate into Italian 2.2.1) Translate document into Italian 2.2.2) Verify Italian translation 3.) Verify complete document 4.) Publish document — end

Он будет использоваться в приложении asp.net (C#).

Заключительная часть: я хотел бы знать, есть ли какой-либо шаблон, библиотека или статья, которая поможет мне начать работу с этой задачей? Подойдет ли WWF для этого?

Программа для электронного документооборота

Есть некоторый материал (даже о stackru), но я не знаю, как бороться с параллелизмом?

user91995 03 сен ’09 в 16:30 2009-09-03 16:30
2009-09-03 16:30

6 ответов

Механизм документооборота — обманчиво простая концепция. Создание надежной, администрируемой реализации — гораздо больше работы, чем кажется. Сильно отдавайте предпочтение готовым продуктам, а не создавайте их самостоятельно. WWF (Windows Workflow Foundation) выглядит в соответствии с вашими потребностями.

user82511 03 сен ’09 в 16:44 2009-09-03 16:44
2009-09-03 16:44

Поиграйте с WF Virtual Labs. Как только вы овладеете этой технологией, у вас будет гораздо лучшее понимание того, подходит ли WF, или вам стоит попробовать свою собственную. Кроме того, вы можете проверить K2, но это гораздо более тяжелый вес.

user86473 03 сен ’09 в 22:22 2009-09-03 22:22
2009-09-03 22:22

Я бы просто использовал Windows Workflow, для этого было бы относительно легко смоделировать рабочий процесс, и вам не придется беспокоиться о проблемах, которые вас не волнуют, таких как отслеживание состояния рабочего процесса и тому подобное, которые находятся за пределами вашего бизнеса. проблема домена

user100930 03 сен ’09 в 16:40 2009-09-03 16:40
2009-09-03 16:40

Хотя то, что вы спрашиваете, возможно, нет ничего «простого» в развертывании собственного хоста рабочего процесса на основе среды выполнения.NET 3.x. Возьми это от кого-то, кто сделал это. Это станет намного проще в.NET 4.0, поэтому также стоит учесть, что ваше решение устареет через несколько месяцев.

Если ваш проблемный домен содержит только рабочие процессы на основе документов, я настоятельно рекомендую вместо этого рассмотреть решение SharePoint. Пожалуйста, смотрите следующие ссылки для получения дополнительной информации об этой опции:

user89263 03 сен ’09 в 16:50 2009-09-03 16:50
2009-09-03 16:50

Несколько лет назад я работал над проектом, в котором была внедрена система рабочих процессов. Это было домашнее решение, поскольку база данных уже существовала. В основном мы предоставили веб-интерфейс для решения на основе какао.

Легкая программа для документооборота USU

Вы можете использовать BPM-решение с открытым исходным кодом (я видел JBPM для java, вы можете найти хорошее решение на основе ASP с открытым исходным кодом). Чаще всего это решение основано на процессах, другими словами, вы определяете процесс или рабочий процесс в XML-файле. Каждый Approver — это узел, и следующий узел в дереве появляется, если только родительский узел утвердил. Вы можете получить хорошую документацию по этому вопросу в Интернете.

Также ASP не будет проблемой. Для вашего собственного решения я бы предложил сначала создать базу данных. В основном вам нужен способ хранения древовидной структуры в базе данных. Параллельно можно обрабатывать, если два узла имеют одного и того же родителя, вы можете поместить атрибут наподобие has_approved и flow будет развиваться дальше, только если оба узла has_approved = 1.

Читайте также:
Лучшая программа для создания схем для вышивки

Это более широкая тема, я надеюсь, что в этом посте все ясно. Также, если вы берете BPM-решение с открытым исходным кодом, выберите наиболее простое, потому что вам придется вносить изменения в код в соответствии с вашим конкретным решением.

user116768 03 сен ’09 в 16:41 2009-09-03 16:41
2009-09-03 16:41

Это не так сложно реализовать. Я нашел это достаточно простым, ему не нужно было огромное упакованное решение.

Вам необходимо определить, какие элементы должны контролироваться (документы). Затем вам нужно определить, в каких состояниях (или статусах) могут находиться эти документы. В статусах записывается, на каком этапе находится документ в процессе обработки. (Где это в вашем «рабочем процессе»). Вы уже сделали это в своем посте.

Конечный автомат — отличный шаблон для обработки документов в различных статусах: http://en.wikipedia.org/wiki/State_machine

Вам все еще нужно составить список каждого состояния, в котором может находиться документ, и что с ним происходит, чтобы переместить его в новое состояние. Вы уже сделали большую часть работы. Код для вашего задания не должен занимать больше страницы или двух.

Присвойте каждому документу номер, чтобы вы могли его отслеживать, и присвойте ему статус, который показывает, где он находится в вашем процессе. Обычно оба из них сделаны с числом, но не должны быть.

Что-то вроде этого:

Источник: stackru.com

Автоматизированная сборка документа «Текст программы» по ЕСПД с помощью python-docx

Документ «Текст программы» (далее – Документ) входит в состав комплекта программных документов, перечень которых определен ГОСТ 19.101-77. ГОСТ, бесспорно, достаточно старый, однако его требования до сих пор востребованы при разработке программной продукции, соответственно требуется и разработка рассматриваемого Документа.

Содержание Документа определено ГОСТ 19.401-78 и должно включать в себя либо символическую запись на исходном языке, либо символическую запись на промежуточных языках, либо символическое представление машинных кодов (и т.п.).

Учитывая объемы современных веб приложений, разрабатываемых с использованием нескольких фреймворков, подготовить данный документ без использования автоматизации достаточно сложно.

Возможно два варианта создания документа:

Первый вариант зависим от загруженности разработчиков. Чтобы сформировать текстовый файл с кодом программы, кто-то из команды разработчиков должен отвлечься, выгрузить код проекта из репозитория, написать программу, которая обработает выгруженный код и выдаст текстовый файл. Файл может быть размером как в пару мегабайт, так и в пару сотен мегабайт, его нужно вставить в Документ и как-то оформить. Вставка такого объема информации в файл Microsoft Word может занять как 30 минут, так и несколько часов. При этом, когда вставка будет завершена, Документ будет не структурирован и не читаем.

Второй вариант зависим от технических навыков исполнителя, но предпочтителен с точки зрения отсутствия необходимости привлечения людей, не имеющих отношения к разработке документации, вследствие чего будем автоматизировать именно этот вариант.

Автоматизация рассматриваемого Документа заключается в том, чтобы перенести текст кода программы в документ с заданным форматированием и структурой, чтобы в дальнейшем им можно было воспользоваться (маловероятный, но имеющий право на жизнь вариант использования).

Библиотеки, осуществляющие взаимодействие с файлами офисного пакета Microsoft Office с использованием технологии OLE, есть практически для всех языков программирования. Для Python это библиотека python-docx. Описание библиотеки доступно по ссылке. Установить библиотеку можно командой:

!pip install python-docx

Общий алгоритм разработки Документа представляет собой последовательность шагов:

  1. Подготовка шаблона документа;
  2. Подготовка скрипта сборки на Python;
  3. Обновление содержания и числа страниц;
  4. Сохранение в PDF.

Шаг 1

Кроме требований ГОСТ шаблон Документа должен удовлетворять следующим требованиям (последовательность шагов описана для Microsoft Word 2019):

Шаг 2

Папка с проектом содержит значительное число файлов, часть которых не являются кодом. К ним относятся графические файлы интерфейса программы, файлы фреймворков, а также файлы программ, используемых в процессе разработки и оставляющих после себя следы (GIT, SVN, Docker). Все эти файлы необходимо отфильтровать.

Читайте также:
Как разработать мотивационную программу для сотрудников

Функция, которая будет отфильтровывать только файлы, удовлетворяющие условию, выглядит следующим образом:

def check(string): result = False if string[-3:] == ‘.js’: result = True if string[-4:] == ‘.vue’: result = True if string[-5:] == ‘.json’: result = True if string[-4:] == ‘.css’: result = True return result

Чтобы получить список файлов, удовлетворяющих условиям фильтра, сначала необходимо получить список всех каталогов в директории проекта:

folder = [] for i in os.walk(folder_name): folder.append(i)

Из полученного списка каталогов читаем имена всех файлов во всех директориях проекта, и те, которые удовлетворяют условиям фильтра, складываем в отдельный список:

paths = [] for address, dirs, files in folder: for file in files: if check(file): paths.append(address+’\’+file)

Перед обработкой полученного списка файлов необходимо подготовить функцию, которая будет считывать содержимое файла в одну строку с сохранением разметки переносов строк. Это необходимо для дальнейшего ускорения вставки кода в Word.

def read_file(filename): f = codecs.open(filename, «r», «utf_8_sig» ) file = [] for line in f: file.append(line) file = ».join(file) f.close() return file

Используя функцию read_file, считываем содержимое отфильтрованных файлов, попутно вставляя строки-разделители каталогов и файлов. Это понадобится для автоматического формирования содержания.

total_code_file = []
for i, path in enumerate(paths): if i == 0: catalog = path[folder_name_len:].split(»)[1] total_code_file.append(‘Каталог ‘+catalog+’n’) if path[folder_name_len:].split(»)[1] != catalog: catalog = path[folder_name_len:].split(»)[1] total_code_file.append(‘Каталог ‘+catalog+’n’) total_code_file.append(‘Файл ‘+path[folder_name_len:]+’n’) total_code_file.append(read_file(path)) total_code_file += ‘n’

Для переноса полученного кода программы подключаемся к документу, ищем контрольную фразу, заменяем ее на пустую строку и начинаем вставлять полученный код. Если код содержит слово «Каталог», форматируем его в стиле заголовка 2 уровня, если содержит слово «Файл» – в стиле заголовка 3 уровня, остальной текст форматируем в стиле кода программы:

doc = Document(sample_file) for p in doc.paragraphs: if » in p.text: p.text = » for line in total_code_file: if line.rstrip() > » and line.split()[0] == ‘Каталог’: p.insert_paragraph_before(line.rstrip(), ‘ЗАГ_2’) elif line.rstrip() > » and line.split()[0] == ‘Файл’: p.insert_paragraph_before(line.rstrip(), ‘ЗАГ_3’) else: p.insert_paragraph_before(line.rstrip(), ‘КОД’)

По завершении сохраняем документ. Программная обработка документа завершена.

Шаг 3

После вставки текста программы в Документ необходимо открыть его в Microsoft Word, выделить все (Ctrl+A) и обновить автозаполняемые поля (F9). Данную операцию необходимо выполнить дважды, так как поля обновляются последовательно, и после формирования содержания итоговое число страниц изменится.

Данная операция занимает время, так как Word выполняет расчет страниц, последовательно обрабатывая документ до конца.

Шаг 4

Полный код проекта доступен по ссылке.

Описанный вариант автоматизации не обрабатывает ошибки, связанные с разными кодировками файлов, и имеет варианты развития:

  • обработка ошибок, связанных с кодировкой файлов;
  • автоматическая выгрузка архива проекта;
  • программный запуск пересчета полей автозаполнения.

Источник: habr.com

Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.

Reload to refresh your session.

Spanri / edsm-v1 Public

Vue.js, верстка, DRF. Система электронного документооборота для ВУЗа. Можно посмотреть на heroku (только там пароль нужен).

Spanri/edsm-v1

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Читайте также:
Программа сбора сведений о системе не может открыть nfo файл

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

1ая версия диплома (защищено на 5). Вторая версия (в разработке) — edsm-v2

Vue.js / Django (rest framework) проект

Развернуть проект (работает для убунту 19.10, остальное хз)

  • Скачиваем проект
  • Скачиваем питон 3.7
  • Скачиваем virtualenv (я просто в synaptic скачала рандомный virtualenv)
  • Для пакета psycopg2 нужны эти штуки, скачиваем их sudo apt-get install python3.7-dev sudo apt-get install -y libpq-dev
  • Создаем venv, у меня так создается (в корне проекта):

virtualenv —python=/usr/bin/python3.7 venv

Интерфейс в виде скринов показан в самом низу, чтобы не мешаться тут.

Можно не запускать, если нужно тестить только сервер! (приложение в целом тоже можно посмотреть без фронтенда, запустив только сервер, потому что на сервере уже есть папка со всем «скомпилированным» фронтендом)

Не забудьте установить npm! Для того, чтобы проходили запросы на сервер, нужно в браузере отключить cors. Например, в firefox это можно сделать с помощью дополнения «CORS Everywhere». Чтобы посмотреть фронтенд, надо сделать 3 первые команды внизу и зайти на фронтенд.

# перейти в папку с фронтендом cd frontend # установить зависимости npm install # запустить с горячей перезагрузкой localhost:8080 npm run dev # построить для продакшена с минификацией npm run build # построить для продакшена и посмотреть bundle analyzer report npm run build —report

Не забудьте установить python!

# установить зависимости pip3 install -r requirements.txt # собрать статические файлы, для того, чтобы # запустить клиент на сервере python manage.py collectstatic # миграция таблиц для правильной работы с бд python manage.py migrate # Нужно настроить глобальные переменные (для почты, для бд, для # хранилища амазона и так далее). Все значения секретные, поэтому # нужно писать разработчику, если он даст — сможете протестировать. # Ниже пример настройки глобальной переменной. Это для виндовс, # для юниксов вместо set — export set EDMS-MAIL-PASSWORD=password # запустить python manage.py runserver # зайти в администратора (данные суперюзера или админа, который есть в # бд (то есть если если известен аккаунт на edms-mtuci.herokuapp.com и # он админский) или суперюзера). Первая строка — создание суперюзера # (если нет админского аккаунта) python manage.py createsuperuser http://localhost:8000/api/admin/login/?next=/api/admin/ # зайти в приложение, которое фронтенд http://localhost:8000

Статусы связи документа и пользователя

Есть таблица Notif, она связывает документ и пользователя. Отношение связи показывает поле status

Status Что значит
Владелец
1 Не владелец, нужна подпись, очередь еще не подошла
2 Не владелец, нужна подпись, очередь подошла
3 Подпись есть, владелец подписанного документа видит уведомление
4 Подпись есть, владелец подписанного документа НЕ видит уведомление
5 Не владелец, подпись не нужна, может только смотреть документ
6 В таблице нет, ставится при возвращении документов для конкретного пользователя тем документам, которые были подписаны этим пользователем (чтобы отличить от документов, которые принадлежат пользователю и находятся в уведомлениях «Ваш документ подписали.»)
7 Подписант отказался подписывать

Веб-приложение (данные для входа спросить у разработчика, но он может и не дать их)

Панель администратора (данные администратора спросить у разработчика, но он может и не дать их)

Вход

Вход (регистрацию делает админ)

Главная, все документы

Главная, все документы

Главная, общий доступ (остальные вкладки похожи на «все документы»)

Документ не владельца (виден ему, ибо он должен его подписать)

Подписант отказался подписывать и вот это увидел владелец документа

Запрос подписи, письмо на почте

Регистрация, письмо на почте

Сброс пароля, письмо на почте

Профиль с уведомлениями (фиолетовое — не прочитано)

Администрирование

Администрирование

Помощь

Помощь (открывается по ссылке в футере)

Сделала Аня, 2019

About

Vue.js, верстка, DRF. Система электронного документооборота для ВУЗа. Можно посмотреть на heroku (только там пароль нужен).

Источник: github.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru