Data Driven vs Event Driven model/architecture?

emilly picture emilly · Feb 11, 2017 · Viewed 16k times · Source

I heard the terms Data Driven and Event Driven model from different folks in past. I did google but these terms are still vague to me as both of them looks similar to me

Data driven programming is a programming model where the data itself controls the flow of the program ( not the program logic) where in case of Event driven programming , it is the event not the data itself controls the flow of the program.

Per mine understanding event is also the data . For example in employee based web application - If user clicks the create employee button, here event is create employee(which is also kind of data only) and data is employee related information.

Now at server first it will be event which will decide what will be flow of program and then data(employee related information) will also control the flow of execution like if permanent employee different method will be executed and if temporary it will be different

So is not every thing a data driven architecture ? If no what is the difference between them ? Any web based example will help

Answer

cassandrad picture cassandrad · Apr 4, 2017

data itself controls the flow of the program ( not the program logic)

I guess you are not completely understand what is “flow” in this context. Flow is logic itself. For example, if you are executing some method that does A, then B, then C to it's arguments, logic would be “Apply A, B, C” and flow would be the same if actions A, B, C are extracted to separate methods. So, flow and logic are synonyms.

Data driven programming means that some general code exists. It does not contain any business logic, it does not control flow. It's just a tool to read and process data and output result. What controls flow and logic is data itself. So, if you want to change business logic (literally change result of your program), you change data, not code.
And your code is, well, it is a kind of pipeline that executes commands depending on input data. You can think of such code as of eval function in javascript.

In Event driven programming logic is controlled by events. And that means that data is only data, and all business rules are placed in code. Event would carry some data, and logic could be changed depending on event's data, but the difference here is where these changing logic rules are placed — in data or in code; and in case of EDP, the logic is in code.

Also, take a look at this question, some answers could shed some light on the subject.