A Practical Approach to Computer Systems Design and Architecture - CodeProject



A Practical Approach to Computer Systems Design and Architecture - CodeProject

3. How do documents flow through this system?
*Select* and *upload* the document by the user > System will validate the input file > *Files added* to "to be approved" section > Administrator *Approves and publishes* the file > File is available for users.

3.1. Do we need a workflow management system here?
I don't think so, let's hardcode the workflow, since we don't expect them to be dynamically adjusted. This is not a very complex system. So it is not necessary to have a separate module to manage workflows, and I am happy without it.

Now, we have found a few granular level operations belonging to the document uploading section. Let's list them as below:

Client side:
Select a document from the local directory base
Read the byte stream to system memory
Send it via the web to the server

Server Side:
Read the byte stream from memory
Write it to a local temporary location for validations
Input Validation Module validates the input file
Move the validated file to the correct user's shared location
Add this new file to the repository system as a "File to be Approved"
Load the files that are to be approved for the system administrator to view them
System administrator validates the content of the file and approves them to be viewed online
Change the file metadata status from "tobeApproved" to "Approved"
Note: Ideal place for a diagram..

3.2. Are we going to have versioning here?
Yes, we need to have versioning. So any update to an existing file will run through a version handler that assigns the correct version number. Note: This can be analyzed further deep..

3.3. Do we need to notify users when a new document is successfully published?
The user who owns (uploads) the document will get an email noting the reject/ accept status. In addition to that, we have to send another notification to users who have subscribed to be notified as this operation happens. Note: This introduces a new module to the system named Notification module. I will not dig into this section either.

3.3. Can a user undo an update?
I need to talk to the client about this.

3.4. Can multiple users checkout a document at the same time?
Let's stop this now…


Read full article from A Practical Approach to Computer Systems Design and Architecture - CodeProject


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts