... The courtyard was the middle of the hot summer of 2013. The company X got a young and slightly green sysadmin, with a basic understanding of administration and even more basic knowledge of php and those involved in mysql, html, css, js.
The company was also saturated with fashionable ideas for the concept of “ISUP” (Project Management Information System), except that they did not pray, believing that with the introduction of it, milk rivers would flow and by pressing 1 button any order would be executed accurately, qualitatively and fully automatically.
But, due to some peculiarities of the work of company X, the “standard” systems out of the box, to a part or unfortunately, did not fit, and from that moment this story began ...
I do not know when and how the decision was made by the company’s management that the order = project, and we are working according to the principles of “project management”, but by the time I became a sysadmin, there was already a whole set of conditional rules, according to which the company worked . The most remarkable feature of this work was the complete absence of a general, hmm, let's call it the “database of projects (orders)” and the state of the data.
When a new order arrived, the manager would go into the gugldox to a certain nameplate, it would contain order numbers, using the “manual auto increment” method a new project number would be generated, which would also be entered into the nameplate so that the next time not to duplicate the project. Then a form was printed, with the name of the project, its number ... in general, with the necessary data for identification. After the “registration stage”, the project was given a personal folder and it was sent further by department, the number of printed leaflets with information about the equipment, work, dates, suppliers was constantly forced to add a project folder in weight and volume. After the completion of the project or the client’s refusal, the folder, at times very well-fed, was sent to the archive, which was served by the usual cabinet.
The management set itself 2 strategically important tasks:
The management clearly understood that the paper exchange system had a number of inconveniences: from the banal lack of storage space, to the topical loss of project sheets (folders), which resulted in delays in the project or in general - failures. With the increase in orders, these inconveniences turned into critical problems that need to be solved "just yesterday."
As a result, it was decided to create some giant, called "ISUP" based on MS Project. It was written quite extensive (about 150-200 pages) documentation describing business processes that should have happened to the project during its "life cycle".
The price tag of this implementation was around a six-figure amount: server + software. All licensed. Since the amount was somewhat small and buying everything was not a task for 1 day, it was decided to somehow alleviate the current situation. Therefore, the following idea was implemented: a spreadsheet was entered, which indicated the name of the project, the stage that it passed, responsible for the stages and the date of completion / refusal. The table was updated by an individual, collecting information from similar tablets that were in each department. Thanks to this “solution”, the situation has more or less stabilized, the number of “jambs” has decreased, but along with the “solution” came “bonuses” in the form of not always relevant information in the department tables due to reasonable or contrived excuses, but, as they say, bezrybe and cancer - fish.
Time passed, but the implementation of the project was hampered for various reasons, and the “bonuses” from the “solution” became more and more significant and painful. And then a “bright idea” appeared in my head - what if I made a small tablet in MySql:
There was an open question about access and who, what should have been done and where is the project now "located"? As a result, the “list” was overloaded with functionality.
From this point on, the management began to think about whether it was necessary to spend a six-figure amount on a cat in a bag, if there is an IT department manager and his subordinate system administrator who, literally, on their knees and for a couple of days did “so much”.
')
In general, from that moment on, a carte blanche was given to develop your own project management system based on the business processes that were developed under the project management system.
Under its own system was allocated a separate computer, which was raised apache + php + mysql.
Inside, the system was an ordinary site written in a functional style.
connecting through mysql_connect. Fortunately, that code has already been lost, so we can do without examples of how not to do it.
Unfortunately, I can’t show a very recent example, for obvious reasons, however, as a hobby, a small project was created (see link at the very end of the article), in which an analogue of the system that resulted in, without a number of features of business processes firms and without a couple of features, the implementation of which I, too, can not show.
However, I’ll tell you about the project implementation, which is on the gita.
The base system runs on mysql.
The whole system ideologically "revolves" around the project. The project has a unique number, but what if the project can be repeated, that is, the client will order the same service again? For this, the numbers are placed in a separate table tbl_project_num, in which the number and number of repetitions
Further, each project is fragmented at a stage, at 1 point in time only 1 stage can be active, but in each stage there can be any number of tasks running with or without a specific sequence that are not tied to the status of the stages. Like this:
Total we get: the project with the stages and tasks that are assigned on the basis of the project stage.
Separately, I want to mention the planning of the project:
You can plan the whole project, then start it in semi-automatic mode - well, you have to press the “transfer the project further” button, and you still have to write a reason if the stage is overdue. I just want to recall the wish of the management “to have everything on one button,” although in fact it doesn't work like that in 99% of cases - there is always some kind of “but”. Although, in our case, this is due to the peculiarities of the business processes of the company / type of projects, so far nothing has been done here ...
Since there may be more than one project, or according to the task some message came, the event log was invented, in the analog of the system it looks like this:
The principle of operation is quite simple: in the database, triggers are created to create / change entries in tasks, projects, comments to tasks, correspondence in projects, in general, everywhere where you need to receive an alert. When a trigger is triggered, a record is written to the database in a specific table: what happened, where to go, whom to show:
In fact, here you can deploy a whole cycle of articles, how and why each individual module was implemented. Mention the interface and why it is made that way, although I am never a designer and my opinion is very subjective. Now I would like to mention a little more about the implementation in php.
The whole system is written in php using MVC (and where without it?). Someone sawed his first forum, someone - a guest book, and here I am - a small and light engine, I saw everything. "Killer fitch", in relation to other engines - no. Features, like everywhere else: creating a module, the ability to create plugins, the ability to write modules without using MVC - with a regular script, but with a few reservations - the use of classes is still present: a template engine, work with databases, configs, etc. You can create and use separate builds: in fact, ready sites, switching parameters in settings and / or changing them in session to site. It is possible to work with the crown right out of the box, but this is indeed another story.
It all started with pranks and "temporary replacement of spreadsheets", and it came to the project management and planning system, with the ability to store files related to projects, with correspondence in tasks and projects. Simple, like a corner of a house, not tied to a specific operating system, with source code "on hand", able to run even on a home NAS, if the situation requires it. But this is the lyrics.
System requirements:
PS : If the article passes the moderation, I really want to say hello and say thanks to my former head of the department - he will know me for sure on screenshots with instructions and text. Without him, I would not have learned what he, in fact, taught me, although reluctantly.
Source: https://habr.com/ru/post/324612/
All Articles