Как автоматизировать бизнес процесс при помощи программирования

Автоматизируем бизнес-процессы с Camunda и Spring Boot: отказоустойчивая реализация BPM-схем

Привет! Недавно мы разработали для российского банка и запустили сервис, который помогает пользователям при получении финансовых услуг. Как и всегда в финтехе, сервис должен был отвечать требованиям безопасности, отказоустойчивости и надежности. А для его внедрения нужно было решить еще одну интересную задачу – разобраться в бизнес-процессах банка и улучшить их автоматизацию, используя движок Camunda BPM.

Изучая задачу, мы выяснили, что материалов об автоматизации бизнес-процессов в Camunda немного, особенно на русском языке. Поделимся своим опытом реализации проекта на Camunda, Java и Spring Boot.

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

Что такое Camunda и что она дает бизнесу

Camunda BPM, говоря простыми словами, — это ВРМ-движок, который позволяет автоматизировать бизнес-процессы предприятия с помощью нотации BPMN. По сути, он переродился в большой отдельный фреймворк или, если угодно, самостоятельную платформу. Ее можно использовать для моделирования, автоматизации, интегрирования, оркестрации и отладки бизнес-процессов. С помощью платформы любой бизнес-процесс можно рассматривать с точки зрения некой программной сущности, к которой применимы не только бизнес-абстракции, но и ООП.

АВТОМАТИЗАЦИЯ БИЗНЕС ПРОЦЕССОВ. Какие процессы автоматизировать? 9 Шагов. Система управления

Что почитать и посмотреть по основам

  • Официальный форум Camunda.
  • YouTube — свой канал Camunda, есть Camunda Con, есть видео на русском языке по основам процессных приложений и межпроцессному взаимодействию, но информация разрозненная и придется анализировать, проецировать на свой проект. По крайней мере, нам пришлось.

Важно: Бизнес-процессы, протекающие в Camunda BPM, можно рассматривать с точки зрения ООП

Camunda BPM позволяет создать блок-схему на основе нотации BPMN, которая будет понятна подавляющему большинству. Открытый исходный код делает ее использование безопасным, а развитое сообщество делает знания доступными.

Camunda BPM написана на Java, а, если точнее, является Spring-приложением. Она не ограничивает разработчиков никакими условно «своими» инструментами. Вся логика исполнения задач в ней ведется путем запуска делегатного кода в соответствии со схемой, который уже пишется на чистой Java. Такой способ создания бизнес-схем в десятки раз быстрее, чем разработка подобных приложений в чистом коде.

Возвращаясь к утверждению о рассмотрении Camunda-процессов с точки зрения ООП, отметим, что реализация делегатного кода позволяет полностью инкапсулировать логику Java-кода от логики BPM-схемы. Например, в схеме может быть условная задача, ведущая логирование. Java-реализация ее делегата будет вызывать условный сервис-логгер на основе локальной переменной, заданной на BPM-схеме. Сама реализация логгера будет скрыта от схемы и не будет зависеть от нее. Это позволит разработчику в любой момент поменять как стратегию логирования, так и саму схему без последствий для всего процесса.

Суровая реальность

Camunda была призвана сделать так, чтобы разработчики и аналитики говорили на одном языке, но, зачастую, реальность вносит свои коррективы.

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

Но есть и минусы. Такая схема может содержать краткую формулировку задачи, например, “проверить клиента”, которая подразумевает несколько этапов, принятие решения по итогам каждого и обобщение полученных решений в единый результат, возможно, с последующей передачей этого результата во внешние системы.

Понятно, что в этот момент на схеме или в коде появляются обработчики ошибок, логгеры, служебно-технические элементы. Так одна “аналитическая” задача в Java-реализации становится объемной и сложной, или на схеме вырастает количество шагов, а каждый из них обрастает обработчиками и альтернативными путями. В итоге схема быстро становится запутанной, трудной для дальнейшей поддержки и модификации, а добавление нового функционала может повлечь за собою переработку огромного участка как схемы, так и делегатного кода. И по сути она содержит огромное количество однотипных элементов.

Вот так может выглядеть предыдущая схема в реальном деплое:

Очевидно, что схема разрослась, стала тяжелее. Но есть и плюсы: все задачи стали атомарны, появились ветви поведения в случае возникновения ошибок.

Осознание проблемы

Если попробовать отделить, инкапсулировать схему и бизнес-логику Java-кода, можно сделать следующее:

  • Отказаться от дублирования однотипных элементов, как на схеме.
  • Использовать универсальную и переиспользуемую реализацию делегатов в Java-коде.
  • Оптимизировать и ускорить течение процесса.
  • Упростить обработку технических ошибок и выстроить логику поведения процесса при их возникновении — практически без участия Java-кода. Это существенно упростит отладку и ручной разбор проваленных процессов, находящихся в инциденте.
  • Радикально уменьшить количество процессов, “падающих” в инциденты при возникновении технических исключений.
  • Заложить крепкую базу для дальнейшего развития.

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

Декомпозиция и атомизация

Если внимательно посмотреть на процессное приложение и проанализировать его узлы, можно увидеть множество повторяющихся функций: запросы к внешним системам, логирование, обработка ошибок, отправка коллбэков и т.д. Другими словами, нужно критически оценить процессное приложение, выделить из него объекты, которые можно легко инкапсулировать. Но во что? В Java-код?

Нет, это было бы нелогично, потому что в этом случае схема окажется крепко связана с ее Java-реализацией. В этом случае есть смысл посмотреть в сторону процессных пулов.

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

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

Здесь мы видим, как основной процесс (нижний) отправляет сообщение, на которое подписан стартер другого пула. При наступлении события второй пул начинает новый инстанс процесса, делает запрос и формирует ответ в основной процесс, после чего успешно завершается. Основной процесс в это время ждет наступления события ответа стороннего пула, в который он отправил запрос. Когда сообщение приходит, то процесс идет дальше. Если его нет в указанный временной интервал, процесс понимает, что внешнее вычисление недоступно или провалено и завершается.

Что это дает

  • Возможность переиспользования кода. Если по процессу нужно несколько раз вызывать один и тот же код в разных условиях, можно просто формировать определенные сообщения и вызывать соответствующие атомарные процессные пулы.
  • Инкапсуляцию программной реализации схемы от ее бизнес-представления. Не важно, как будет переделываться основная схема, по каким путям будет вестись процесс. Все взаимодействия уже вынесены в отдельные мелкие процессы, что полностью развязывает руки: достаточно лишь сформировать запрос и ждать ответ.
  • Количество и вероятность падений основного процесса резко сводится к минимуму. До такого разделения процесс находился в неопределенности из 4 состояний:
  • ответ пришел,
  • ответ не пришел, потому что упал внешний микросервис,
  • ответ не пришел, потому что упал основной процесс в момент отправки запроса,
  • ответ не пришел потому что превышен тайм-аут.

С таким разделением процесс всегда находится в строго одном состоянии: ответ или пришел, или процесс ждал и завершился. Для бизнеса имеет значение, как именно завершился процесс: ошибкой или нет. Но это будет корректное завершение, не инцидент. Это важно, поскольку не висящий в инциденте процесс не «ест» ресурсы, а ошибки можно легко логировать, собирать статистику, настраивать алертинг и анализировать.

  • Уже не важно, что случается с мелкими процессами. Они могут делать, что угодно: падать, не падать. Важен только результат: ответ внешнего ресурса. Да и то не всегда, ведь основной процесс не должен гарантировать работоспособность внешних систем. Например, возможно, что в процессе не будет смысла ждать ответа от микросервиса нотификаций или ответа может совсем не быть. В нашем проекте все мелкие пулы строились максимально устойчивыми к работе в любых условиях: падения приводили к корректному завершению, но ответа не присылали, а основной процесс шел по ветке «я не получил ответ» и, исходя их этого, действовал дальше.
  • Резко уменьшается сложность основного процесса. Сложная логика может разноситься по отдельным небольшим пулам, которые проще дебажить. Например, проверка клиента может выглядеть примерно так:

Здесь видно, что во внешнем пуле происходит одновременный вызов нескольких задач. Рассмотрим этот момент подробнее.

Параллелизация процессных вычислений

Camunda позволяет запускать ветви процессных вычислений параллельно. Для этого существует специальный шлюз Parallel Gateway, с помощью которого поток можно разделить на параллельные или объединить несколько параллельных вычислений в один поток. Понятно, что для ускорения течения процесса было бы неплохо вынести некоторые вещи в параллельные потоки. Если логика независимая, то ее можно выполнять параллельно, например, сделать одновременно несколько запросов к внешним системам и ждать ответов сразу от всех:

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

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

Сломалось? Бывает

Исключения неизбежны. Уже несколько раз звучала фраза «попытка повтора». Разберем, что это такое.

Коробочная версия Camunda имеет возможность повторить проваленную транзакцию. Под транзакцией имеется в виду внутренний камундовский механизм исполнения делегатного кода. Началом транзакции является, например, пометка async before или async after на задаче в моделлере. Когда движок встречает эту пометку, он коммитит свою информацию в БД и начинает новый асинхронный поток. Это важно.

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

из официальной документации Camunda

Когда возникает техническое исключение, т.е. любая не-бизнес ошибка, например, поделили на ноль и забыли проверку на null, транзакция делает rollback и пробует стартовать снова. И так по дефолту 3 раза подряд без пауз. Попытка повтора стартует при возникновении обычного исключения, которое в мире BPMN называется техническим, а не BpmnError. Возникший BpmnError обрывает процесс без попытки повторов. Представьте, насколько, благодаря этому, повышается отказоустойчивость процесса.

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

Пожалуй, самой большой проблемой является обработка технических исключений и BPMN-ошибок, а также проектирование логики их обработки для беспрерывного течения процесса. Часть ошибок, связанных с обработкой ответов от внешних источников, мы уже рассмотрели, когда обсуждали деление на процессные пулы. Напомню, что сам вызов инкапсулировался в отдельный мини-процесс, а основной или получал ответ и двигался дальше, или уходил по тайм-ауту в ветку «я ответа не получил».

Теперь давайте посмотрим на тот самый маленький процесс:

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

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

Также видно, что есть возможность создавать отправку ответов для критичных запросов. Отметим, что улавливание ошибок работает только в случае BpmnError с определенным кодом, поэтому, технически необходимо ловить любой Exception, и перебрасывать BpmnError с нужным кодом, который слушается ErrorBoundaryEvent.

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

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

По своей сути — это отдельный подпроцесс пула процесса, который стартует только при наступлении какого-либо события, на которое он подписан. Например, если такой подпроцесс подписать на событие BpmnError с кодом, например, MyCustomBusinessError, то при наступлении этого события сработает обработка, и по ее завершению процесс корректно завершится. Да, он завершился не успехом, но корректно. В этих подпроцессах также можно повесить разную логику обработки одного и того же события в зависимости от внешних условий, например, опционально уведомлять об уводе заявки в ошибку при прохождении процессом какой-то условной точки.

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

Также не рекомендуем завершать процессы, если в течение процесса возникают какие-то юридические обязательства, например, подписывается договор. Как же обрабатывать подобные ошибки? Часть технических ошибок, например, связанных с недоступностью внешних сервисов, отсекается автоматическими повторами в рамках заранее оговоренного тайм-аута. Но как быть, если процесс упал, ретраи прошли, но условный внешний микросервис по-прежнему лежит? Мы приходим к понятию ручного разбора или, как мы называем их внутри команды, компенсации.

Как это работает? Любые ошибки отлавливаются, делегатам при необходимости дается возможность отретраиться и, если все равно удача не улыбается, процесс уходит в ошибку, но с нужным кодом, например, COMPENSATION_ERROR. Этот код отлавливает уже другой event-based подпроцесс, он все обрабатывает, логирует, оповещает и при этом не имеет возможности свалиться в неположенном месте, только там, где нужно, он отдельным делегатом кидает техническое неотлавливаемое исключение и падает в инцидент.

Зачем так делать? Для мониторинга можно использовать EXCAMAD — это внешняя админка для Camunda, аналог Cockpit, обладающая крутой функциональностью. Она подсвечивает красным процессы в инциденте. Эти процессы можно модифицировать или перезапустить с нужного места.

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

А что там с кодом?

Понятно, что каждая задача на схеме, скорее всего, — это какой-то класс Java, реализующий интерфейс JavaDelegate. Также очевидно, что каждый шаг, каждая ступень процесса должна быть качественно залогирована, настроена обработка ошибок. Поэтому логично воспользоваться абстрактными классами и настроить иерархию делегатов. Например, родительский делегат может выглядеть примерно так:

Как это работает? Делегат реализует интерфейс JavaDelegate, определяет метод execute(), в котором в try-catch блоке проводит базовое логирование и вызывает абстрактный метод run(). Любое исключение будет отловлено, залогировано и передано в метод executeHandling(), где по умолчанию проводится оборачивание выброшенного исключения в BpmnError с нужным кодом ошибки, отлавливаемым на схеме. Это дает невероятное удобство: в каждом конкретном делегате не будет нужды дублировать основные методы.

Как видно из фрагмента, делегату будет нужно лишь переопределить один метод run() и, при необходимости, метод обработки ошибок.

Наверное, месседжей придется много писать?

Да. Но все они должны быть небольшими, легко отлаживаемыми и простыми. На деле все должно свестись к написанию одного сервисного компонента, который должен уметь отправлять запросы и ответы на основе переданного в него DTO-объекта сообщения.

Сам процесс отправки сообщений представляет собой корреляцию сообщения к конкретному процессу по processInstanceId или processBusinessKey.

runtimeService.createMessageCorrelation(«ORDER_ADDED») .processInstanceId((String) delegateExecution.getVariable(«parent»)) .setVariable(«approved», true) .correlate();

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

Всегда хочется чего-то еще

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

Считаем, что это решение, как и любое другое, можно дополнительно улучшать. Например, отказаться от контекста Camunda в пользу документо-ориентированной базы данных MongoDB. Это даст мгновенный слепок всего процесса на любом этапе, позволит избежать записи в БД самой Camunda клиентских данных, а также решит множество проблем с сериализацией непримитивных типов и позволит стартовать новый процесс с уже имеющимся набором данных.

Надеемся, статья была вам полезна. В следующий раз мы расскажем об особенностях тестирования моделей процессов Camunda и обсудим best practice.

Продолжение здесь.

  • camunda
  • bpmn
  • spring boot
  • java
  • бизнес-процессы
  • автоматизация бизнес-процессов
  • Блог компании SimbirSoft
  • IT-инфраструктура
  • Проектирование и рефакторинг
  • ERP-системы
  • Управление продуктом

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

Как программисту ускорить время решения задач благодаря инструментам автоматизации

В коммерческой разработке очень важно время выполнения задачи. Чем меньше его уходит на выполнение конкретной задачи с сохранением результата — тем лучше. Программисты, работающие в штате и выполняющие больше задач, чем коллеги, быстрее продвигаются по карьерной лестнице. Во фрилансе все еще проще — чем больше задач можно выполнить, тем можно больше взять заказов, следовательно, увеличить свой заработок “здесь и сейчас”. С помощью инструментов автоматизации и оптимизации работы ускорить написание кода без вреда качеству может даже начинающий программист.

Инструменты, повышающие продуктивность программиста

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

Библиотеки компонентов

Известны также как “дизайн-системы”. Они позволяют использовать стандартизированные “строительные блоки” для создания программных проектов распространенных типов. Таким образом вам не требуется писать один и тот же код или прописывать код для примитивных элементов, например, кнопок, так как можно воспользоваться уже готовым шаблоном. Помимо самих “блоков” подобные сервисы предлагают готовые паттерны проектирования, руководства по использованию компонентов, документация, дополнительные сведения об объектах, средства комментирования проектов, шаблон документации для готового продукта и так далее.

Среди доступных компонентов заложены самые базовые — аватары, иконки, кнопки, бейджики, контекстное меню, выпадающие списки, анкеты, поля заполнения форм, обработчики, всплывающие окна, слайдеры, интерактивные подсказки и еще много чего по мелочи. Их можно достаточно быстро собрать в единую конструкцию без необходимости прописывать много кода. Также данные компоненты легко встраиваются в уже готовый проект, так как они являются универсальным решением.

Из преимуществ готовых дизайн-систем отмечают следующее:

  1. Возможность гармонично и более быстро развивать пользовательские интерфейсы по мере расширения продукта компании или конкретного проекта. При этом библиотека компонентов может быть запросто расширена, если у проекта появится какой-то дополнительный функционал.
  2. Приведение элементов интерфейса и их функциональности к единому виду во всем проекте или проектах компании. Дело в том, что при применении дизайн-системы создание продукта происходит по заготовленным заранее шаблонам. Стандартизация делает интерфейс более понятным пользователю и упрощает поддержку продукта.
  3. Работа дизайнеров, верстальщиков и программистов значительно ускоряется, так как нет необходимости заново “изобретать колесо” — все шаблоны уже есть в библиотеке. При этом они могут быть запросто изменены, чтобы внешний вид продукта не выглядел “шаблонным”.
  4. Можно быстро делать редизайн продукта — достаточно просто выбрать другой шаблон и настроить его под свои нужды. В приложении или на сайте выбранный элемент сменится на тот, что нужно автоматически. Это позволит сэкономить время на рутинной переработке кнопок, форм и прочих элементов.
  5. Улучшается взаимодействие UX-дизайнеров и программистов. Первым не нужно продумывать технические моменты, что позволяет сосредоточиться на реализации пользовательского опыта. Вторым же не потребуется тратить много времени на реализации базового функционала.

Базовая дизайн-система кнопок

Дизайн-систему можно создать как самостоятельно, например, только для проектов конкретной компании, так и использовать уже готовые решения. Некоторые из них полностью бесплатны, другими можно загрузить за небольшую плату. Библиотеки компонентов больше пригодятся веб-разработчикам и разработчиков приложений для мобильных устройств, но могут быть интересны и для других сфер программирования.

Средства автоматической проверки кода

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

Средства автоматической проверки кода могут быть встроены как в редактор кода (по умолчанию или в виде дополнительных плагинов), так и использоваться в виде отдельных сервисов. Также в Git существует возможность дополнительно перепроверить код перед отправкой в репозиторий.

Пример работы ESLint

Существуют как “общие” линтеры, подходящие для большинства языков программирования, но позволяющие найти только самые элементарные ошибки, типа, пропущенной точки с запятой. Такие средства уже встроены во многие среды разработки. Есть и более “углубленные” линтеры, подходящие только под конкретный язык программирования или их группу. Например, у JavaScript есть ESLint.

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

Средства корректного форматирования кода

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

Подобный инструментарий реализован по умолчанию в некоторых средах разработки и редакторах, например, Visual Studio Code. Однако он работает только в том случае, когда форматирование напрямую влияет на правильность прочтения кода, например, с языком Python. Плюс, встроенный инструмент не исправляет ошибки в форматировании, а только отмечает их. За исправление отвечает только разработчик.

Для корректного форматирования кода рекомендуется использовать сторонние плагины или сервисы. Одним из таких решений является Prettier. С его помощью происходит преобразование кода в соответствии с настройками, заданными пользователем. Такая возможность позволяет быстро привести внешний вид кода к стандартам, заданным в конкретной среде разработчиков, проекте или компании. При этом сильно экономится время на правильном расставлении пробелов, табуляции, знаков препинания.

Автоматизация тестирования

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

Чаще всего подобные тесты реализованы через CI/CD-системы. Для проведения автоматического тестирования они подключаются к репозиторию через специализированные сервисы. В зависимости от выбранного сервиса есть возможность задать предварительные настройки для проверки работоспособности кода и обнаружения багов и ошибок. Проверку можно настроить как для всего проекта, так и для отдельных его редакций, плюс, сделать так, чтобы в случае успешной проверки редакции автоматически включались в основной проект.

Пример работы Travis CI

Благодаря интеграции систем автоматического тестирования кода можно сэкономить время не только на тестировании в процессе разработки, но и основном тестировании, когда проект будет завершен. Плюс, ускориться сама разработка, так как вам будет проще отыскать ошибки в коде. Из сервисов автоматического тестирования рекомендуем обратить внимание на: Travis CI, CircleCI, GitLab CI/CD, Heroku CI.

Специальные провайдеры

Используются для веб-проектов, так как позволяют снять с разработчиков задачи по управлению и наладки серверной части. Такие провайдеры делятся на два основных типа:

  1. IaaS. Расшифровывается как Infrastructure as a Service (Инфраструктура как услуга). К ним относятся: Amazon Web Services, Google Cloud Platform и Microsoft Azure.
  2. PaaS. Platform as a Service — платформа как услуга. Известные сервисы Heroku и Netlify.

Главная страница Google Cloud Platform

Главная страница Google Cloud Platform

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

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

Дополнительные инструменты для повышения продуктивности работы

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

Планировщики задач

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

Главное окно Todoist

Главное окно Todoist

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

Программы мониторинга

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

Программы для концентрации

Если страдаете от того, что часто отвлекаетесь от работы на разные мелочи, то используйте различные программы для фокусировки внимания. Они могут как отключать все посторонние уведомления на некоторое время, так и просто быть выполнены в виде таймера, когда вам нужно на некоторое время полностью сосредоточиться на выполнении задачи. Улучшить концентрацию помогает метод Помодоро, когда на работу отводится 25 минут максимальной фокусировки внимания, а потом дается 5-минутный отдых. Цикл требуется повторять до тех пор, пока поставленная задача на день не будет выполнена.

Пример приложения для работы с методом Помодоро

Оптимизация написанного кода

Иногда возникает необходимости укротить написанный код, но при этом сохранить функционал. Обычно это делается в угоду оптимизации и удобочитаемости. Вместо того, чтобы тратить на эти процессы свое время, можно воспользоваться специальными сервисами AppVeyor, Jenkins, Mocha, Chai, Jest и другие. С их помощью можно выполнить оптимизацию кода или привести его в более удобочитаемое состояние.

Заключение

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

Источник: liquidhub.ru

Введение в бизнес-процессы: как автоматизировать деятельность компании

В начале карьеры я работал в строительной компании и с удивлением наблюдал, как менеджер по продажам вручную составлял договоры — на каждый у него уходило около часа. Тогда я предложил автоматизировать этот процесс с помощью сервиса для управления бизнесом «Битрикс24».

В результате договор составлялся за пять минут: единожды заполнялась форма с нужными данными, они автоматически подставлялись — документ готов. У менеджера по продажам освободилось время для обработки входящих лидов. На этом у него был завязан KPI, и внедрение бизнес-процесса высоко оценили и сотрудник, и руководство.

Сейчас я работаю в digital-интеграторе, и наша команда массово внедряет бизнес-процессы для крупных клиентов из разных сфер: медицина, финансы, телеком и e-commerce. Этот инструмент эффективен на всех уровнях: помогает сотрудникам быстрее выполнять задачи и значительно экономит ресурсы компании. В этой статье я расскажу, что такое бизнес-процессы, как они работают, и приведу примеры из практики.

Что такое бизнес-процессы

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

Бизнес-процессы запускаются на корпоративном портале «Битрикс24». Задачи автоматически создаются внутри процессов, переходят между людьми, назначаются исполнители, сохраняется заданная последовательность действий.

Задачи, по которым сотруднику нужно принять какое-либо решение или совершить действие, выводятся на главной странице «Битрикс24». Таким образом, сотрудник, открывая корпоративный портал, сразу видит свои текущие дела.

Руководство может отслеживать, на каком сотруднике или стадии «завис» бизнес-процесс, почему не удается завершить в срок. Для этого есть специальный журнал, в котором отражаются все стадии, пройденные по алгоритму выполнения.

Для менеджмента настраивается отдельный вид бизнес-процессов — управленческие, которые позволяют контролировать работу организации. Такие бизнес-процессы строят отчетность занятости сотрудников, формируют рабочие и сменные графики работ. Примерами могут быть «Контроль оплат», «Контроль объемов выполненной работы по проекту», «Формирование проектной документации», «Формирование отчетов о расходовании средств».

Зачем нужны бизнес-процессы

Об их внедрении, как правило, задумываются, когда растет число сотрудников и проектов, что сильно усложняет операционку: процессы, которые действенны в малом бизнесе, теряют свою эффективность при 100+ человек.

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

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

Один наш клиент часто пользовался сервисами Unisender, Sendpulse для отправки рассылок по клиентской базе. Они оба часто блокируют базу, несмотря на то, что пользователи дают согласие на обработку своих данных. Каждая рассылка у клиента проходила со скрипом и срывом сроком. Мы автоматизировали рассылки в «Битрикс24», после чего они уходили без блокировки, вся аналитика собиралась в CRM. Работу триггерных рассылок клиент оценил очень высоко, для его бизнеса это был один из основных каналов взаимодействия с клиентами.

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

Техническая сторона бизнес-процессов

Для реализации используется инструмент «Дизайнер бизнес-процессов» в «Битрикс24». С его помощью выстраиваются схемы, по которым работает компания.

Бизнес-процессы предлагаются в двух вариантах:

  • Последовательный — линейный алгоритм действий. Согласование счетов, договоров, оформление отсутствий.
  • Со статусами — нелинейный процесс, который включает несколько простых последовательных бизнес-процессов. Формирование документации с возможностью отправить в статус на доработку, составление коммерческого предложения — любой процесс, где нужно вносить правки.

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

Также к технической стороне относятся интеграции — к «Битрикс24» подключаются различные системы, участие которых необходимо для работы компании. Например, если автоматизируется выставление счетов, заявки в транспортные компании, то каталог товаров может быть синхронизирован с «1С-Склад».

Главное — алгоритм действий

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

Алгоритм действий — это 90% успешного внедрения бизнес-процессов.

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

Рекомендация следующая — привлекать персонал, который будет пользоваться системой, к процессу разработки. Должна быть адекватная обратная связь, так как сотрудникам с этими процессами работать. Бизнес-аналитики часто оторваны от реальных процессов, происходящих в компании. Никто не опишет бизнес-процесс лучше, чем сами сотрудники: они знакомы с рутинной деятельностью и порядком выполнения задач.

Для расстановки прав на бизнес-процессы важно четко понимать иерархию и принципы структуры организации.

Например, если процессы бухгалтерии надо скрыть от других сотрудников, то настраиваются соответствующие уровни доступа.

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

Я рекомендую вести «Базу знаний» в «Битрикс24». В ней можно подробно описать обязанности сотрудника и обучающие моменты по работе с бизнес-процессами. К сожалению, во многих компаниях обучение — процесс хаотичный. Сам по себе корпоративный портал — это инструмент, который организует и наводит порядок в работе предприятия.

Расширение функциональности — самописные решения

По запросу заказчика можно создавать уникальные процессы, расширяя базовую версию, но для этого нужно привлекать PHP-разработчиков. Расскажу на примере. Мы автоматизировали более 50 процессов для строительной компании, и нам не хватило возможностей коробочной версии «Битрикс24». Мы написали собственные дополнения:

  • Наследование данных. Внутри одного процесса открываются и завершаются несколько задач. При закрытии одной прикрепленные документы и комментарии не переносятся в другую и теряются. С помощью микрокомпонента мы сделали так, что комментарии со всех задач в независимости от их статуса подтягивались в единое окно. Пользователям стала доступна полная информация по процессу.
  • Динамические права доступа к папкам. При запуске нового бизнес-процесса на общем диске заводится связанная с ним папка для документов. По умолчанию доступ к ней выдается на уровне отдела. Нашему заказчику нужно было ограничить круг лиц, которые будут видеть папку на диске. В результате сотрудники стали видеть только папки, которые привязаны к бизнес-процессам, где они назначены ответственными, и не видеть те, где исполнитель — их линейный коллега.
  • Автозапуск. Чтобы вся информация о прошлом процессе сохранялась в следующем, мы настроили автоматический переход из одного этапа в другой. Например, процесс «Участие в тендере» переходит в «Согласование договоров» — пользователю не нужно вручную создавать новый.
  • ID бизнес-процессов. Чтобы сотрудники могли быстро ориентироваться и видеть соответствие задач и процессов, мы добавили в название каждой задачи год и ID процесса, к которому она относится: 2021/порядковый номер процесса/название этапа этого процесса.

Что может пойти не так

Сотрудники компании не всегда могут быть заинтересованы во внедрении бизнес-процессов. Хочу рассказать о негативном опыте, когда внедрить бизнес-процессы в работу организации не получилось.

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

Начальник описать процессы подчиненного не мог. Компания была зависима от этого специалиста, только он знал, как делать нужные заявки для транспортных компаний. Его руководитель так мне и сказал: «Я не могу его уволить, так как не смогу найти ему замену, а сам я эти отчеты никогда не делал».

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

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

Заключение

Когда решены все организационные и рутинные моменты, бизнес может сосредоточиться на маркетинговых активностях и повышении продаж. Если вы уже пользуетесь «Битрикс24», советую попробовать бизнес-процессы в работе. Все наши клиенты отмечают, что это положительно влияет не только на KPI, но и на развитие сотрудников в профессии — привыкнув к новому алгоритму работы, они становятся более заинтересованными в выполнении новых обязанностей и обучении. По отзывам, скорость обработки задач значительно повышается, и деятельность компании выходит на новый уровень.

Источник: vc.ru

Как автоматизировать бизнес процесс при помощи программирования

Содержание:

  • Когда нужно автоматизировать бизнес-процессы
  • Автоматизация работы с клиентами
  • Автоматизация маркетинга
  • Автоматизация управления проектами
  • Автоматизация бухгалтерских и налоговых отчетов
  • Автоматизация разработки и создания сайтов и приложений
  • Как избежать ошибок при автоматизации бизнес-процессов

Когда нужно автоматизировать бизнес-процессы

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

  • Бизнес растет и команда не справляется с текущими задачами, документы долго ждут проверки или подписи;
  • Задач слишком много и наступил хаос: постоянно возникают одни и те же ошибки, теряются данные о клиентах и заказах;
  • Нужно ускорить процессы, на которые уходит много времени, если делать вручную. Например, подготовка налоговой декларации.

Автоматизация работы с клиентами

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

CRM-система сохраняет контакты клиентов и информацию о сделках. При первом обращении клиента система автоматически заводит для него карточку, куда попадает контактная информация.

Все сервисы и компании, связанные с релокацией, на одной карте

Например, клиент интернет-магазина сделал заказ и оставил номер телефона, имя, email. Эти данные будут сохранены в его карточке. Когда менеджер узнает у клиента адрес доставки, он дополнит карточку этой информацией.

Каждый заказ или сделка тоже сохраняется в виде карточки, которая попадает в визуализированную воронку продаж. Этапы воронки настраивают под потребности бизнеса. Например, для туроператора может быть так: «Заявка», «Предложение у клиента», «Договор подписан», «Предоплата», «Полная оплата».

Информация доступна всем сотрудникам, которые имеют отношение к процессу, например, менеджерам и руководителю.

Когда клиент обращается в компанию во второй, третий, пятидесятый раз, менеджер видит не только имя клиента, но и историю взаимодействия с ним.

Вариантов CRM-систем много, мы остановимся на пяти самых популярных в России.

«Битрикс24» — CRM-платформа от компании «1С-Битрикс». Есть готовые решения по отраслям бизнеса — для интернет-магазинов, юридических компаний и оптовиков, но можно настроить по-своему.

Можно объединять с другими продуктами «1С-Битрикс» и со сторонними сервисами, например, с «1С:Бухгалтерией» или телефонией Mango Office.

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

Так в «Битрикс24» выглядит продвижение сделки по процессу

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

Воронка периодических покупок показывает текущее состояние постоянных клиентов: кто недавно совершил покупку, а кто собирается обратиться снова

RetailCRM — облачная CRM-платформа для интернет-магазинов. Менеджеры работают с заказами и следят за количеством товара на складе в одном окне — не нужно переключаться между разными сервисами.

Есть отдельный продукт для продаж в Instagram — retailCRM Chat.

Информация о сделках в RetailCRM в виде таблички: на каком этапе заказ, кто покупатель и откуда он пришел

Pipedrive — международная CRM, которой пользуются крупные компании по всему миру, но для малого и среднего бизнеса она тоже удобна. Можно объединить более чем со 150 сервисами.

Визуализация воронки продаж в Pipedrive

Zendesk — американский русифицированный сервис. Интегрируется с социальными сетями, блогами, чатами, встроенным коллтрекингом.

Интерфейс Zendesk: сотрудник службы поддержки переписывается с клиенткой в WhatsApp, и сообщения сразу попадают в CRM

Автоматизация маркетинга

Можно заниматься отправкой рассылок вручную, а можно использовать сервисы, которые помогают автоматизировать действия, связанные с рекламой и маркетингом. Например, настроить рассылки — и письма будут сами в нужной последовательности отправляться каждому, кто оставил электронную почту.

Расскажем о пяти сервисах, которые помогают автоматизировать работу с маркетингом.

SendPulse — русскоязычная email-платформа с понятным интерфейсом. Письма собирают в конструкторе, цепочки рассылок — в визуальном редакторе: чтобы отправить рассылку, не нужно быть программистом.

Сервис интегрируется по API с «Яндекс.Кассой», Bitrix, AmoCRM, Zapier и другими CRM и CMS. Есть бесплатная версия до 500 подписчиков и 15000 писем в месяц, но в этой версии нет интеграции с Google Analytics.

Цепочка из десяти писем, собрана в SendPulse: каждое следующее письмо отправляется после того, как получатель откроет предыдущее

MailChimp — email-платформа c полноценным сервисом даже в бесплатной версии, но на английском языке. Интегрируется с Google Analytics, Tilda, Facebook, Shopify. Бесплатная версия — до 2000 подписчиков или до 10 000 писем в месяц.

Пример письма, собранного в конструкторе MailChimp

Mindbox — российская CDP, customer data platform или платформа данных клиентов. Помогает собирать и хранить данные о клиентах и их обращениях в одном месте, сегментировать покупателей и построить с ними правильную коммуникацию с помощью писем, сообщений в мессенджеры и звонков.

Это позволяет персонализировать сайт и рассылки для каждого клиента и показывать товары, спецпредложения и рекламу, которые его заинтересуют.

Цепочка о брошенной корзине с email-рассылками, мобильными и вебпушами, SMS, собрана в Mindbox

eSputnik — CDP-платформа, которая помогает объединять данные контакта в одном профиле, настраивать сценарии взаимодействия с пользователем, когда он бросил корзину или просмотрел товары. Можно настроить товарные рекомендации по интересам пользователя.

Редактор писем в сервисе eSputnik

Calltouch — российский сервис коллтрекинга и сквозной аналитики: определяет, с какого рекламного канала пришел клиент. Это помогает измерять эффективность всех рекламных каналов и вкладывать деньги только в те, которые приносят доход.

Статистика по рекламной кампании в интерфейсе CallTouch

Автоматизация управления проектами

Построить командную работу над проектами — значит сделать процесс прозрачным и удобным для каждого его участника. В этом поможет автоматизация управления проектами.

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

Trello — один из самых популярных сервисов. Интуитивно понятный и функциональный интерфейс: одна задача — одна карточка. Работа над задачей делится на шаги — это колонки, по которым можно двигать карточку.

У Trello функциональный бесплатный тариф, ограничен 250 действиями в месяц С помощью Zapier можно интегрировать с онлайн-сервисами: Google Drive, MailChimp, Slack и другими.

Trello редакции Mindbox: всем пользователям сразу видно, сколько задач в работе и в каком они состоянии

«Планфикc» — рабочее пространство, в котором настраивают структуру компании и задают сотрудникам роли, чтобы у каждого был доступ только к определенным проектам, задачам и данным.

Можно пригласить в «Планфикс» временного сотрудника и дать ему доступ только к тем задачам, которые не являются коммерческой тайной.

В «Планфикс» задачи можно организовать не отдельными карточками, а в виде дерева, в котором большие задачи дробятся на подзадачи

Asana. В этом сервисе визуализируют задачи пятью способами: список, календарь, таймлайн, доски, личный планировщик. Каждый выбирает удобный для себя вариант. Сотрудники обсуждают задачи на разных уровнях: в самой задаче, в проекте и в чате команды.

Пример описания задачи в Asana

Автоматизация бухгалтерских и налоговых отчетов

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

Расскажем о двух программах, которые помогают автоматизировать бухгалтерский и налоговый учет.

«Контур.Эльба» — сервис электронной бухгалтерской и налоговой отчетности, есть отдельный функционал для малого бизнеса на УСН и патенте.

Система помогает ускорить сдачу отчетности в ФНС, ПФР и ФСС. Автоматически рассчитывает налоги с дохода и зарплат, создает платежки и напоминает, когда их нужно заплатить.

Помогает предпринимателю или бухгалтеру составлять счета, акты, накладные и УПД, а также передает их в систему электронного документооборота «Диадок».

Все бухгалтерские документы — в одном окне

1С: Упрощенка. Бухгалтерское ПО для компаний и ИП на упрощенной системе налогообложения от 1С.

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

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

Автоматизация разработки и создания сайтов и приложений

Не обязательно делать сайт с нуля — дизайн, верстку, кодинг. Есть конструкторы сайтов, которые помогают сэкономить деньги и время на разработке.

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

Расскажем о трех популярных конструкторах сайтов и одном конструкторе приложений.

uCraft подходит для небольших компаний и фрилансеров. На бесплатном тарифе доступен только базовый шаблон: можно сделать промостраницу или лендинг для сбора контактов. Есть возможность подключить собственный домен и работать с инструментами для SEO-продвижения.

Варианты шаблонов для разных бизнес-ниш в конструкторе сайтов uCraft

Wix — конструктор сайтов с технологией Dragdrop, чтобы просто перетаскивать готовые блоки в макет.

Есть также возможность собрать веб-сайт с нуля, но для этого нужны знания html-верстки.

Cайты на «Тильде» хорошо индексируются поисковыми системами, можно добавить мета-описания и заголовки на страницах для поисковой оптимизации сайта.

В бесплатной версии можно опубликовать только один сайт.

Готовые шаблоны сайтов в Tilda

IBuildApp — конструктор приложений для смартфонов на Android и iOS. Подойдет тем, кто не разбирается в разработке: простой draghttps://rb.ru/opinion/19-tools-for-business/» target=»_blank»]rb.ru[/mask_link]

Быстрый старт в IT: начинаем с автоматизации процессов

Обложка: Быстрый старт в IT: начинаем с автоматизации процессов

Привет! Меня зовут Андрей и я являюсь тимлидом команды разработки роботизированных процессов в компании Talan Systems.

Технология RPA (Robotic Process Automation) является одной из форм автоматизации бизнес-процессов, основанная на метафорическом программном обеспечении «роботов».

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

То есть запрограммированный «робот» использует UI, как и обычный пользователь, только во много раз быстрее.

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

О чем же пойдет речь?

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

«Робот» в данном случае — не что-то физическое, а ПО, которое может быть запущено на любом ПК, не требуя предварительной интеграции с многочисленными системами. Это достигается путем того, что для интеграции с любой системой вам достаточно будет понимать, как процессы данной системы выполняются пользователем, а после этого записать данные действия в виде алгоритма в одной из программ для автоматизации (RPA).

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

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

Для того чтобы «научить» робота (задать ему порядок действий в виде алгоритма) вам, как разработчику, достаточно вывести на рабочую панель создания проекта последовательные действия, именуемые Activity, вследствие чего вы создадите цепочку необходимых действий и ветвлений, если таковые требуются.

Activity в одной из программ для создания роботизированных процессов RPA — UIPath

На скриншоте выше выставлена цепочка последовательностей, которая показывает «роботу», что он должен:

  1. Нажать на кнопку.
  2. Ввести логин в форму ввода.
  3. Ввести пароль в форму ввода.

Почему это возможность начать карьеру?

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

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

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

17 вопросов джуну: что должен знать Junior-разработчик

17 вопросов джуну: что должен знать Junior-разработчик

Может ли быть все так просто? Отчасти

Для того чтобы начать создавать «роботов» действительно не нужно иметь углубленных знаний в программировании, в его классическом понимании (не нужно учить синтаксис языка либо изучать его устройство). Однако в процессе вашей работы над коммерческим проектом, с приобретением опыта написания алгоритмов в формате WorkFlow приходит осознание того, что можно достичь гораздо большей производительности создаваемых программных роботов, используя их в связке в программами, написанными на популярных языках программирования (таких как C#, Python, C/C++…).

Что же получается? Мы опять вернулись к тому, что нужно изучать языки программирования?

Это правда, однако давайте проанализируем, в какой ситуации находится человек, пошедший этим путём:

  1. Благодаря навыкам, которые человек получил путем написания программных роботов с помощью WorkFlow, он научился понимать и создавать структуру программ, в их обобщенном виде — без использования синтаксиса конкретного языка.
  2. После того, как человек понял структуру программ, на определенном этапе изучения он осознает, что в некоторых задачах, использование робота — является некоторой прослойкой, связывающей взаимодействие робота с UI-интерфейсом сервиса и вычислительную мощность программы заточенной на решение лишь одной задачи.
    Для примера: Мы пишем программного робота, который, повторяя действия пользователя (нажимает на кнопки, вводит текст), производит авторизацию на почтовом сервисе (Gmail, i.ua…), считывает все новые сообщения за сегодняшний день, формирует из текста полученных сообщений список и передает его в заранее написанную программу для NLP, которая сможет распознать структуру письма и передать данные про неё в программного робота, который визуализирует предоставленные программой данные в удобном для пользователя формате.

Этот кейс может использоваться в крупных компаниях, конкретно в подразделениях HR, у которых за каждый день скапливается огромный ворох электронных писем от людей, что хотят работать в данной компании, и является классическим применением RPA.

Возможности платформы роботизации вне использования программ написанных на сторонних языках программирования

Как было написано ранее:

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

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

Все доступные категории Activity в программе UIPath

В каждой из категорий, отображенной на данном скриншоте, содержится от 5 до 20 подкатегорий с десятками Activity, так что самостоятельную функциональность технологии точно не назовешь ограниченной.

Немного цифр

Глобальный рынок RPA:

  • В 2016 году объем рынка составил $271 млн.
  • 100-150% составил прирост мирового объема внедрений RPA в 2017 году.
  • Более 70% крупных международных компаний уже применяют технологии RPA.
  • Увеличение количества поисковых запросов в 2,5 раза за 5 лет.

Темпы роста рынка RPA (прогноз до 2021 года):

К 2021 году может вырасти до $3 млрд.

Ключевые факторы роста:

  • RPA-системы развиваются и адаптируются под большинство корпоративных процессов.
  • Синергия RPA-систем и искусственного интеллекта позволит влиять на процессы принятия управленческих решений.

Итог

Данная технология доступна всем и имеет достаточно низкий порог вхождения, так что даже те люди, кто еще не написал в своей жизни ни одной строки кода, смогут начать работать RPA разработчиком.

Надеюсь данная статья заинтересует молодых разработчиков в данной технологии и поможет без труда окунуться в мир коммерческой IT разработки.

Источник: tproger.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
Бизнес для женщин