|
Hi all,
I've started designing a document management system based on SQL Server and vb .net. I find this an interesting project, why? Document management systems have grown to be too complex. What are the main subjects to cover? I want to control the document flow through a product development project, then to the production cycle and maintenance. This means avoiding a catalog structure and always looking for the latest versions of CAD data, bill of materials and so on.
It would be nice to have some feedback, is this a good idea?
Best regards,
OAT
Norway
|
|
|
|
|
Sharepoint is flexible, and, I find relatively simple to utilize and learn, plus there are TONs of examples, source code, add ons, and it's industry standard, uses SQL Server, can use .NET plugins, and more... Seems kinda like a moot effort to write your own.
|
|
|
|
|
Yes, its a brilliant idea.
On the contraty, you can check for existing technologies like MOSS or DotNetNuke or other CMS on the features they provide.
|
|
|
|
|
Odd Arne wrote: is this a good idea?
That depends on what you're trying to achieve. There's a lot of those out there, and lots of competition means that there's a living market.
You stated yourself that the current DMS-systems are too complex. Do a quick-poll on your collegues and ask them what annoys them most about the current system. Ask them what features they miss, places where people get stuck, make a list - and check it twice
If you're looking for a fun project from which one can learn, then I'd say that you'd chosen a good candidate.
I are Troll
|
|
|
|
|
Should includes
(1) Business workflow (Approval system)<br />
(2) Access Level (Permission/Role)<br />
(3) Parsing of image documents<br />
(4) Versioning control<br />
(5) download and upload of documents
|
|
|
|
|
I am currently going down the same path and creating project and document management database software. I started the project because our company (4 employees) would not buy typical management software which is aimed at larger projects and companies. I started using excel, then had a brief stint in Outlook then I moved to Access and I am currently evaluating the move to C++ and mySQL. Anyhow my journey so far I have done the following things:
So far I have done the following:
Outlook
(Dont try programming with vbscript (forms for contacts, calender, tasks ...) unless you are a sucker for punishment)
Synchronize routines for outlook contacts to access
Rewired the outlook calendar to a timesheet program. It now synchronized with my access timesheet database.
I rewired the task manager to a project manager and then ran synchronization routine through exchange server to my other workers, but I kept overloading the buffers. This pretty much convinced me to switch over to ACCESS.
Document Control
Created a standard document that outline the font and format that all my documents all look and feel the same. Created excel and word templates that I base my forms, letters and so forth off of. I did write a little routine for document control which helps me know which document are allowed for use with my other employees.
Document Folders
Decide whether your folder locations will be and whether this information will be hard wired into the program or will you created a database that will track and add this information as your company changes. I created routine to create the folder structure automatically with each new project to maintain the consistency of the work flow. One problem that I am battling with my IT is that they want my folder paths to be reduced which affects file access and backing up data.
Synchronization
I plan to be able to incorporate using your laptop or packaging information on your jump drive to work at home or on the road. In effect I have created addition fields in my table with reference the origin of data, which would reference the equipment and the ID number of the field of the remote table. The other thing that I am tracking is Created Date, Modified Date, and Accessed Date which is something that typical word processing documents use. I am contemplating adding more fields such as the person who created or modified or last accessed the data. It would me more used to track how bad data was entered into the main database.
Search Engine
With project management and document management it is easy to get a lot of information to manage so I spent a considerable amount of time to come up with a solution.
Automation
The idea of the project was to reduce the work load not increase it, so I spent a great deal of time creating automation engines where possible. Its one of those things that you may spend a lot of time getting right, but I feel it will be worth it in the long run.
This is my journey todate. I hope that you can mine some useful nuggets of information from this. When I finally get my prototype done I am considering using a program call Qt which was coincidentally created in Norway. I am reading it right I should be able to use Qt compile a linux and microsoft version.
Regards,
David Lario
Canada
|
|
|
|
|
Hello to all.
I am hoping you can provide opinions based on real world experience as to whether developers need to have local administrator rights on their machines or whether they can run on lower authority and if so what the recommendations for the minimum settings to use would be? More details around the environment follow ...
Our organisation is large enough to have separate systems administration and development teams. The organisation has a Standard Operationg Environment (SOE) that is used for all general office workers. Our developers currently have local administrator rights on their standard logins. Due to some recent scares with viruses coming into the network the systems administration team is making a case to management to have the developers normal login accounts run at a similar privilege level as the general office workers and either:
- provide them with a second account to use to load / remove software
- request that they go through the service desk to get software installed
The overall environment is Windows XP with MS Office 2003, Outlook 2007 and some other tools. The development environment is .Net, C#, SQL Server 200/2005 and a variety of other tools.
Over to you ... what are your thoughts?
|
|
|
|
|
Well - if you run with elevated privileges, you're kind of assuming that your applications are going to be deployed on systems that require elevated permissions. If your applications are meant to run in a lower security level then you've just made it harder for yourself to test that your application will run in the environment that you want to use.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Thanks for the answer.
The vast majority of the applications being developed are web based. There is some middle tier components also developed using the .Net environment. We can operate on the basis that the deployments will run with appropriate security set and / or the correct impersonations being done. The appropriate security is highly unlikely to be anything like local administrator on the platforms that the application is being deployed to. In fact I suspect that it may be argued that running at lower privileges may enforce the correctness of the impersonations.
So my question extends out to cover: what would break if the development tools were run on a machine where the user was not running with local administrator privileges? Conversely what setting would need to be made to allow the development tools to work correctly without having to provide local administrator rights?
|
|
|
|
|
Pete makes a good point. I can't speak specifically to web applications, as you mentioned in your other post, but I have to agree that giving admin rights would encourage bad habits.
You don't, however, want to sandbox the developer too much. If you start blocking things like write access to the "Program Files" directory, you'll just have a bunch of angry geeks on your hands. The users may not need to touch that, but the developers will want to be able to test installers and such.
On the other hand, if you're ONLY doing web development, a complete lockdown might be possible. It would depend on exactly what's needed to run the IDE, compile, and deploy a web app... I'm sure someone else can give a more complete answer on that subset.
I would suggest, however, that you put a process in place for developers to request temporary admin access when necessary.
For example, I'm a front-office developer in a large company with a separate IT support staff... I can write freely to most of the hard drive and the registry, but I can't change system or security settings, or kill admin-level processes (Such as the scheduling app they use that occasionally makes my machine unusable for 20-30 minutes)... My only major gripe is not being able to run a defrag without asking one of the IT guys first.
|
|
|
|
|
Thanks for the comments.
I take the point about the temporary admin access and our IT area were thinking of either:
- providing the developer with a second account to use to load / remove software
note: this account would not be connected to email, etc. and so could not be used
full time to replace the main account
- request the developer go through the service desk to get software installed
note: software installation e.g. tools and other apps, is a fairly rare event in our environment
Your example is interesting. Do you know if you are set up as local administrator with group policy applied over the top to restrict your access to security, etc?
I look forward to other people's feedback as to minimum requirements for the IDE.
|
|
|
|
|
No, I'm not a local admin... Hence the inability to run a defrag. I think I'm in there as a "Power User"... Hard to tell, as I can't access the users/accounts config.
|
|
|
|
|
If you want faster development yes. Every time you put up a wall you slow down progress. Reverse the question and ask: Is it really a problem if my developer has admin access on his local machine? I mean, is it the development team that is bringing in these viruses/bad progs? Developers are usually pretty computer savvy, so sometimes I find this argument hard to swallow. Maybe anti-virus would be a better solution than locking access?
If you can't think of why this would be a problem, then why put up roadblocks? Here, your suggestions are wholly adding to the cost of development, and decreasing efficiency. Are viruses that prevalent in your network?
A user can be an admin on their machine and still have restricted access to other machines, and that may be a more viable solution.
|
|
|
|
|
This would really depend on how "in the weeds" your developers are getting. As a developer I find myself installing and removing applications almost every other day for integration testing and evaluating new development tools. In addition, I have occasion to stop and start services on my development box when things go haywire. Editing and removing registry entries is not uncommon as well. All of these are much easier with local admin rights.
If your developers are doing simple web development (HTML, Javascript, Flash..etc) then they probably don't need admin access. However, any of the higher languages (Java, C/C++, C#, Perl...etc) I would definitely recommend admin access.
One solution I have seen to your dilemma is install virtual environments. This allows the developers to create their own machines with what ever rights they want, while still controlling the actual hardware. Unfortunately, the virtual env. tends to be slower and can affect compile and testing times.
My guess is that your virus scares were not on the developer boxes, they tend to be more careful than your average user. This fight is not uncommon.
modified on Thursday, January 7, 2010 10:27 AM
|
|
|
|
|
I have a data model where each record has a "next version pointer" to track updates to the items. As it stands now, the object looks something like this:
Public MustInherit Class VersionedDataObject(Of T As VersionedDataObject(Of T))
Private _next As T
Public Property NextVersion() As T
Get
Return _next
End Get
Set(ByVal value As T)
If value Is _next Then Exit Property
_next = value
If _next Is Nothing Then
_nextVersions = Nothing
Else
_nextVersions = New NextVersionIterator(Me)
End If
End Set
End Property
Private _nextVersions As IEnumerable(Of T)
Public ReadOnly Property NextVersions() As IEnumerable(Of T)
Get
Return _nextVersions
End Get
End Property
End Class
The question is, when NextVersion is Nothing, would you return Nothing from NextVersions (as I am doing now) or an IEnumerable with no items?
|
|
|
|
|
Why don't you look at what .NET does itself, e.g. the methods operating on a Queue, such as Dequeue.
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Not a bad idea. My object does not directly implement IEnumerable like Queue or List (and isn't a 'collection' type of object), so I'll have to look for other objects to find some examples. For now I think I will go with suggestion from the other response.
|
|
|
|
|
I would return an empty enumerable from NextVersions. That way, the consumer of this property does not have to include a test for whether the IEnumerable is Nothing, but can just go ahead use it. If it's empty, then the iteration over the enumerator will simply do nothing. That makes life simpler for the person using your VersionedDataObject and takes away the risk of getting a NullReferenceException when someone forgets to check for Nothing. So, you can just do something like:
For Each version In myVersionedObject.NextVersions
' do something with version
Next
|
|
|
|
|
I think I will go with this approach. Like you said, it gives less room for error ("pit of success" and all that).
|
|
|
|
|
The concept of Run to Completion means, at least as it pertains to classes, that a method must run to its end before another method can be called on the same object. Adhering to this rule makes it easier to reason about a class's state.
I've often seen examples of this rule being broken or just ignored. How often does a class call one of its methods in the middle of another method? I've done this many times, and I've seen code authored by others do the same thing. As long as the method being called is read-only, I don't think RTC is being violated. But when it's a write method, I've wondered if this isn't an indication of a code smell.
I was looking at Sams Teach Yourself Object Oriented Programming in 21 Days. In the book is a step-by-step example of designing an object oriented blackjack game. Here's an excerpt of part of the code from that example:
public void play(Dealer dealer)
{
while(!isBusted() && hit())
{
dealer.hit(this);
}
}
public void addCard(Card card)
{
hand.addCard(card);
notifyListeners();
}
public boolean isBusted()
{
return hand.isBusted();
}
public void hit(Player player)
{
player.addCard(cards.dealUp());
}
There's a circular nature to this design which doesn't sit well with me. But setting that aside, what I want to get at is what the player class is up to in the play method. This method passes its instance to the Dealer which in turn calls the Players addCard method. This method adds a card to the player's hand. Back in the play method, the loop checks to see if the hand is busted. It's depending on the Dealer to make a change in its state elsewhere.
I don't know; maybe there's nothing wrong with this approach. It just seems fragmented to me. The play method is depending on state changes made via another method that it expects to be called while it (the play method) is still executing.
I'm not sure how I would approach this, but I was curious as to whether anyone else sees anything wrong with this.
|
|
|
|
|
We have an application which is run as a Windows Service. This application uses a dll that implements some business logic.
The service is running fine and now we have implemented some new business logic in this dll. None of the other dependencies have changed. The application remains unchanged. My question now is:
Do we have to recompile the application and reinstall the service? My personal view would be NO. Am I right?
A quick feedback would be much appreciated.
Thanks/RB
|
|
|
|
|
1. If the service will find every function with the same parameters, he will need, in this dll, then
you do not have to recompile or reinstall the service. It should run as before.
2. If you change some code of the dll, so that you have to change the code of your service.
Its normally enough to recompile the service. You do not have to reinstall it.
Greetings
Covean
|
|
|
|
|
|
There is no need of reinstalling of window service there......
But Question regarding business components... depending upon the type of assembly... if it is deployed in GAC... there is not need to recompile the window service... else need to recompile the service....
|
|
|
|
|
My requirement is the remote application sends some 15000 to 20000 messaages to be processed and the remote application happens to be done using microsoft technology then the remote application can directly add messages to MSMQ and then using the MSMQ adapter of BizTalk the messages can be picked up for further processing.
As MSMQ is used for In-Order delivery but at the same time it does not require the other application to be online that is if the messages coming are too much as mentioned above then they can very well sit in the qeue and wait for it to be picked by the MSMQ adapter, so I guess my driver here along with the ordered delivery messages it is also the number of messages coming and processing the same.
So, I was thinking of having MSMQ, so that the remote app can send the message to the MSMQ and the Biztalk would pickup the messages using the MSMQ adapter for further processing. Please share your thoughts ... or is there a better option to handle this scenario, please do reply
|
|
|
|