itdhq
itdhq
ITD Systems company blog
42 posts
Don't wanna be here? Send us removal request.
itdhq · 7 years ago
Text
Alfresco DevCon 2018 Summary
While we are waiting for presentations and videos from Alfresco DevCon, let us share what we remembered from this conference.
Alfresco succeeded to gather more than 270 people on the revived DevCon. As compared with BeeCon 2017 there is one change that we like: Alfresco really brought the most of their engineers to the conference! They didn't say "Developers have deadlines and sprints, they could not come". Alfresco organized a conference, Alfresco made everything to make it successful. We thank them for it. It was cool.
Thomas DeMeo told us what to expect from Alfresco in the nearest future. Alfresco 6.0.a (Early Access) has been available since November 2017, but it doesn't look as new major release. Looks like real 6.0 with significant architectural changes (that will break compatibility with all previously written code) will be released during Spring. Waiting for it with horror. Fixes for everything that will be broken should be available during Autumn 2018.
What to expect from Alfresco in the future? Finally Alfresco should get new microservices architecture. Identity service should become an independent component and cover both Alfresco Content Services (aka Alfresco Community/One) and Alfresco Process Service (aka Activiti). A new recommended way to build extensions will be to use REST API and to subscribe to Events. Welcome to the JIRA style of configuration. :)
From one point of view it's nice to see that Alfresco modifies its basics and architecture that were built in 200x and tries to follow modern trends. From other point of view we will miss that ways to extend the core of the repository and break everything using Java API. Alfresco is better than others especially because it allows to do this (for the time being).
The talk we really liked was about analytics. Michael Suzuki showed us a way to build analytics from the data stored in Alfresco. After many attempts to create ready-to-use solution for analytics, Alfresco introduced how to retrieve needed reports from SOLR via SQL requests and how to illustrate them with Apache Zeppelin. It was nice.
What about us?
This time only @aviriel represented ITD Systems at the conference. All developers had to work on their projects hard during January. Oksana presented a talk "Overcoming common knowledge: 100k nodes in a single folder" (presentation) and received the award "The best voted talk of the conference"! Looks like many Alfresco users meet this problem and search for a solution. Here are some screenshots if you missed the talk:
youtube
We will update links after Alfresco publishes video recordings from the conference.
Thanks to those who came to the conference, it was a pleasure to see you again. Sad to miss those who could not come. We hope to see you next year!
Thanks for photos to Francesco Corti, Angel Borroy and other community members.
If you missed the conference and want to read a detailed review of what happened, you can look at this blog post of keensoft.
0 notes
itdhq · 8 years ago
Text
Execute an arbitrary Java class in Alfresco remotely
If you are Alfresco developer and use Java to implement features you need, you have to restart Alfresco really often to update your code during development or testing time. If you know what is Alfresco JavaScript Console, you are defenetely suffer that there is no similar tool for Java code.
We are not magicians and we didn't implement a tool with all features of JavaScript Console for Java code, but we already have something to share with you. Here is our new extension that is named Alfresco Java Code Executor. It allows remote execution of an arbitrary Java class. AJCE is just a webscript that receives Java byte-code as a request payload, loads this class and executes it.
It's easy to use it:
curl \ -X POST \ -u admin:password \ --data-binary @PATH_TO_CLASS_FILE \ -H 'Content-Type: application/octect-stream' \ http://localhost:8080/alfresco/s/api/ajce
You can download this extension on Github. Leave us your feedback, create issues and pull requsts, you are welcome!
0 notes
itdhq · 8 years ago
Text
Manage task due dates in Alfresco admin console
Last week we released new Alvex component Business Calendar. It helps to set workflow tasks due date. Now you can configure due dates for tasks of all workflow types in Admin Console!
This component brings two great features:
You don't need to setup due dates in listeners of the workflow definition. You don't need to redeploy workflow definition after every change! You can configure due dates in Alfresco Share Admin Console after the workflow started (but before the task in assigned).
Due date is calculated in accordance with business calendar (excluding weekends and national holidays). If you say "2 days to execute this task" and user starts this task on Thursday then its due date will be on Tuesday (Friday + 2 non-working days + Monday).
Note: If the workflow allows user to configure the due date manually on some form, then the value entered by user will override default value in Admin console.
Of course you can configure this component! Upload csv with national holidays calendar for this (or next) year and follow the sample to use it instead of default one (Russian).
0 notes
itdhq · 8 years ago
Text
BeeCon 2017 Summary
Last week we attended BeeCon 2017 in Zaragoza after three months of preparations to the conference. We were one of organisers of this great event, delivered three talks (check schedule to find them), met many interesting people. It was a good week spent in Zaragoza! Here are some statistics from the conference:
0 notes
itdhq · 9 years ago
Text
Alvex 3.0 Slowpoke... release?
Tumblr media
Use Alfresco 5.1? Need Orgchart? Want to upload files right from task details page? Search for a solution to attach external classifier to the field in Alfresco Share? Now you can use Alvex on Alfresco 5.1! We name it Alvex 3.0, but to be honest it's not a major release, it's a just a milestone when all components are ready to be used on Alfresco 5.1. It may be not ready to be installed on mission-critical systems, but should be considered stable enough to give it a try.
What are the changes?
Independent components
As promised we've split Alvex into a number of independent components. Good news are that we introduce a number of new small components, bad news — not all components were migrated. We decided to redesign and rework some components, so they are not included into the bundle at the moment.
Following repositories are available at Github:
Utils — common configuration files, FTL templates and code that supports components inter-communication
Orgchart — extends standard Alfresco users and groups functionality by adding complete organizational chart
Uploader — upload new files to Alfresco repository from any task form or metadata edit form
Workflow permissions — Files Permission Manager, Lock Manager, Permissions for groups to limit access to start business on per process type basis
Project management — special site type to aggregates documents and tasks; relations between workflows, workflow discussions, new task page and other workflow-related features
Datagrid — replaces default Alfresco datagrid to provide auto-generated datagrid search, configurable columns, custom cell renderers and custom item actions
Masterdata — extends default Alfresco content model LIST constraints to use dynamic and external lists of values
Custom workflows — Assign a task, Request Document Approval and Distribute Documents workflows
Manager dashboard tasks — pages and dashlets for supervisors to monitor tasks and workflows of users in the orgchart divisions he manages
Inform policy — informs creator, editors and all users mentioned in specific associations about any changes made to document
Infavorites document association — adds favorite content nodes and folders into user associations. Informs user about changes of the favourited documents, If is used along with Inform Policy.
Middle Name — adds person middle name to People API, new user page and view user form in admin console, user profile, header
Use https://github.com/ITDSystems/alvex to build several components or download pre-built JARs for all components. This repository contains README that explains usage of the new Alvex and displays build status for each component.
Important note: Components are not self-contained. At least it's necessary to install Utils together with any other component you want to use. Few complex components still depend on other components, like Custom Workflows depends on Uploader and Orgchart.
Development
SDK
All Alvex components use Alfresco SDK 2.2. Thus it's possible to use all facilities provided by SDK.
All components may be built and installed as AMP packages. Just build a component and install it. Besides that JARs packaging is also supported. Moreover, it's the recommended way to package Alvex components. One can simply build and install single JAR, but also there is a simple way to build and packages several components. In that case Maven will produce a ZIP file with JARs for selected components and all dependencies that have to be installed. For more details about this feature refer to README.
Travis CI
We use Travis to check commits and pull requests. Travis builds a component and runs integration-test target to see if Alfresco starts with installed component. Each component repository contains a badge that represents current build status.
Nexus
Now we have Nexus. If you need a specific release, you can simply download it from Nexus. Successful builds are automatically published to Nexus by Travis CI on every push.
So there are actualy few ways one may use Alvex components:
download required JARs from Nexus and install them to Alfresco;
clone Alvex component repository to build compenent from source;
use component as a depdendecy in pom.xml;
build Alvex bundle with desired components only;
download pre-built Alvex bundle from Nexus.
Supported Alfresco versions
Now all components are compatible with Alfresco 5.1.x and 5.2.b. At the moment Alvex is guaranteeted to be compatible with latest Alfresco versions only.
What about Alvex Enterprise?
We don't distinguish Community and Enterprise editions any more. There will be stable builds (releases) that we support like it was with Alvex Enterprise. But all sources are open now, so you can download, customize and use unsupported snapshots as it was with Alvex Community. We open source all features and all components except Board Collaboration and few features in Document Registers for now. These components will be reworked and released as open source too a little bit later
If you need something new in Alvex, there are actually two ways:
Join the development process: create issue in the repository if you want some feature to be implemented, submit a pull request if you know how to implement it, translate a component to your language at CrowdIn if you think you know your language. Contributions are welcome! We would like to thank Alfresco community members who helped us with migration: Douglas C. R. Paes, Younes REGAIEG, Torsten Werner.
Contact our sales. If you need a new feature in Alvex quickly, you need something custom that cannot be a part of Alvex or you want something completely new, become our customer to get a feature implemented the way you need it.
0 notes
itdhq · 9 years ago
Text
Alfresco Inform Policy Extension
While you are waiting for new Alvex for Alfresco 5, we decided to create new small Alfresco extension to brighten up the waiting. :)
Alfresco Inform Policy extension allows Alfresco to inform users about changes in documents they work with. Users get an email when someone uploads the new version of the document. User receives a message in the following cases:
if this user created the document
if this user modified the document earlier
if this user is mentioned in associations of the document
Extension lives at Github: https://github.com/ITDSystems/alfresco-inform-policy-extension-repo. Released extension v.0.7 for Alfresco 5.0-5.1 can be downloaded here.
How to use?
Install extension to Alfresco as AMP package.
Check that you configured OutboundSMTP for Alfresco. Extension does not work if mail.from.enabled is false or not set!
Set your preferences in alfresco-global.properties:
Mail preferences
documentchangeinform.mail.from (String) - notification from address
documentchangeinform.mail.subject (String) - notification subject
Group preferences
documentchangeinform.creator (boolean) - enable notifications for document creator
documentchangeinform.lasteditor (boolean) - enable notification for last editor of the document
documentchangeinform.associated (boolean) - enable notification for everyone in target associations of document
documentchangeinform.editors (booolean) - enable notification for version creators
Start Alfresco.
Template of the message can be found at Data Dictionary/Email Templates/Document Change Notification/ in Alfresco repository. You can customize it if needed.
That's all. Users will receive notifications on document updates.
0 notes
itdhq · 10 years ago
Text
Alfresco SDK: fixing mysteriously slow Tomcat start
During our current Alfresco project I encountered new Alfresco Maven SDK for the first time in real life. (Alvex development is based on Maven for few years already, but it is still on our custom Maven infrastructure, that was created before Alfresco released Maven-based SDK.)
My first impression from Alfresco Maven SDK 2.1.1 was astonishment. I asked it to start testing environment (embedded Tomcat with H2 Database) with
mvn clean integration-test -Pamp-to-war
And know what? It was horribly slow - about 5 minutes to start the server. I never saw Alfresco to be so slow on trivial operations. (BTW, later we observed the same issue with Alfresco CE installed by stock installer.)
It was NOT normal. So, the fun of investigative debugging started. Long story short:
jstack is your friend in similar cases - it allows to understand what server is really doing during mysterious pauses;
the issue was caused by network misconfiguration.
Tomcat was hanging on java.net.Inet6AddressImpl.lookupAllHostAddr() For some reason Alfresco (a) wants to use `hostname`, not localhost, (b) does not crash on hostname lookup failure, making it quite hard to understand, what’s the root cause of the issue. The obvious fix - just add your hostname in /etc/hosts, pointing to 127.0.0.1 and ::1. That’s it! Startup time is below 50 seconds now.
0 notes
itdhq · 10 years ago
Text
Customizing the Share Header Menu in Alfresco 5.x
For a long time I haven't tried to do anything with Share Header Menu in Alfresco, and I was surprised why so many people write posts about it? It should be easy and simple as it was in Alfresco 3.4 or 4.0. Yesterday I tried to add a new item to the Header in Alfresco 5, and now I understand why do they write so many posts. This post summarizes all points of customization, because I didn't find a tutorial that can answer to all my questions.
I think that it will be an improper solution to copypaste good texts written by other community members to my post, so I give links to the blogs and tutorials that describe how to solve specific tasks.
For all types of customization you should create an extension:
Create a Share extension project using Alfresco Maven SDK or extend an existing project in which you need to customize header.
Create a folder src/main/amp/config/alfresco/web-extension/site-data/extensions and src/main/amp/config/alfresco/web-extension/site-webscripts/{PATH_TO_YOUR_CUSTOMIZATION}, where {PATH_TO_YOUR_CUSTOMIZATION} is something like com/alvexcore/header. Your custom files will live in these folders.
Follow "Creating the Extension Module" section of the Customizing the Share Header Menu (Part 1) tutorial by Dave Draper to create the module. The only bad thing in that post is that it is for Alfresco 4.2, so Dave builds JAR file and the structure of the folders is not consistent with Alfresco Maven SDK 2. Go back to point 1 and 2 to deal with it.
After the project is created you can do following things in it:
Adding new item to the header: "Adding a menu item to the header" section of the "Working with the new Aikau framework in Alfresco Share 4.2" tutorial by Ole Hejlskov.
Removing an item from the header: "Removing Menu Items" section of the "Customizing the Share Header (Part 3)" tutorial by Dave Draper.
Extending existing item in the header: The most complex part of the customization. It's described in "Customizing the Share Header" Part 1, Part 2 and Part 3.
Reordering items in the header: There is no way to add your item into the beginning of the list in a good manner. The only way to do it is to remove default Alfresco items (see point 2) and add them back after your new item (see point 1). To see what to add you need to find the source code of the header in Alfresco Share repository. For example, you can do it at Github by following the path share/share/src/main/resources/alfresco/site-webscripts/org/alfresco/share/imports/share-header.lib.js.
Change the style of the header: "Change Share Header" blog post by Tahir Malik.
Making your customizations work on all pages: The most magical action, that is not described anywhere (thanks to Ole Hejlskov who helped me to deal with it in IRC). If you add new items or remove existing ones as it is described above, your module will not work on Faceted Search page and all other pages fully written on Aikau. To make it works you need to add a new section to the configuration of your module:Do not try to add "applyAlways" to all customizations, it breaks everything, I tried ;) Add <auto-deploy>true</auto-deploy> to the module if you want it to work after Alfresco sturtup without enabling it in the Modules page.
0 notes
itdhq · 10 years ago
Text
Custom Workflow Sample
All files of the workflow are published to Github. Here we will tell about the stages of this workflow, how to build it, and install it to Alfresco.
Workflow consist of the five stages:
Initiator of the workflow assigns a task to review a contract draft to a number of users. Also initiator attaches a file (or files) to the task and fill a field “Contractor” by selecting a name of the contractor from a list of predefined values (master data connected as JSON file).
Reviewers read the document. At the time of review a document is locked, so reviewers cannot edit files while the task is not completed by all reviewers. They can download file, edit it and upload as another document, or write their comments in the field "Comments".
If at least one reviewer rejects a document, initiator receives a task to revise it. Initiator sees all comments and files. He can edit a document and send it to the reviewers again.
If all reviewers approved a document, then initiator receives a notice that review is completed. He selects a site with document register in which the document will be registered. When user clicks "Register" button, document is automatically added to the selected register, system assign ID to a document, fill the field "Registration Date", "Contractor", "Signatory" (assignee of the next task), attach all files from the task.
The next task called "Sign a document" is sent to the user who has the role "CEO" in the org chart. This task includes some "offline" work. Person can download, print, sign documents or you can integrate Alfresco with some Digital Signature solution. After the work is done user completes the task. At this moment the status of the document in the register is changing to "Signed" and the field "Date of signing" is filled with the current date.
Prerequisites:
Alfresco 4.2.4 / 4.2.f with installed Alvex Enterprise 2.1.3 on top of it. Alvex should be installed as AMP (not JAR).
Org Chart should be created in Admin Console or using API. Create a role "CEO" and attach it to the top branch of the org chart. Select a user who has this role.
Site with created document register to store contracts (type: alvexdt:agreement). User with "CEO" role and initiator of the workflow should have RW permissions to the register.
Attach external master data source to Alvex and name it "Contractors". For example, you can use http://www.alvexsoftware.com/files/sample.json. Attach master data to the document register.
Build
Download workflow sources from Github.
To see the workflow scheme and to build a package, import them to Eclipse as two projects: Tutorial Workflow Repo (tutorial-workflow-repo folder) and Tutorial Workflow Share (tutorial-workflow-share folder).
To build a project create configuration in Eclipse:
Click Run -> Run Configurations, then select Maven and click New launch configuration.
Enter name and base catalog of the project Tutorial Workflow Repo. As a goal use package.
Save configuration. Click Run.
In the same way create a configuration for Tutorial Workflow Share project.
Run created configurations to build projects.
Install amp packages from target folders to Alfresco. Do not forget to allow users to start new workflow (use "Workflow Permissions" tab in Admin Console for it.
Another option is to build projects without Eclipse. Go to tutorial-workflow-repo folder and use "mvn package" command. Repeat for tutorial-workflow-share.
0 notes
itdhq · 10 years ago
Text
Comic strips about Nebh
During last months we have been working on the new product called Nebh. We are not ready to announce the first release of Nebh and to explain what is it, but we are ready to share with you a few comic strips about our work on Nebh.
We published these comic strips at Twitter last month, so in this post we only aggregate all strips.
          If you want to see more comic strips about Nebh and to be the first who will meet Nebh, follow Nebh twitter.
0 notes
itdhq · 10 years ago
Text
Big changes in Alvex structure and architecture
We’ve been discussing future development of Alvex, considering compatibility with Alfresco 5.0 and other different issues. As the result we came up with the new Alvex structure and some changes in our roadmap.
As you know many developers of extensions for Alfresco have similar problem - Alfresco likes to update Share between major releases so much that extensions become non-compatible with new Alfresco versions. We worked hard to make Alvex work with both Alfresco versions (4.2 and 5.0). Finally we decided to release two different distributions: for old Alfresco and for the new one.
We started with Alfresco 3.4, and Alvex got over big changes between 3.4 and 4.0, then between 4.0 and 4.2. Having different distributions was never a problem, when we had a small number of Enterprise customers. We could help customers to update the system and drop support of the old Alfresco versions quite soon. Now it turns up to be quite a problem. Some customers prefer to update Alfresco immediately, whether others prefer to wait till new branch of Alfresco becomes more stable.
While trying to solve problems with Alfresco compatibility, we, unfortunately, faced lots of various hacks and bugs in the code. Fixing small compatibility issues turned into dozens of "if" statements.
So we decided to undertake serious measures against such issues.
Alvex Community for Alfresco 4.2
Today we released the last Alvex Community version for Alfresco 4.2. We added a number of new features, the stability of the present features is also improved. So those, who use Alvex Community in production may use this new release for a long time, if they do not want to upgrade to Alfresco 5.0. We will not release more Alvex Community versions compatible with Alfresco 4.2.
Alvex Enterprise for Alfresco 4.2
Today we released Alvex Enterprise 2.1.1 that is compatible with Alfresco 4.2. There are not many new features, but the stability of the present features is improved. We will not add other new features to this branch, but we will continue to fix bugs in this branch of Alvex Enterprise that will be compatible with Alfresco 4.2.
Alvex for Alfresco 5.0
Starting from tomorrow Alvex will be divided into several independent components. Many customers ask us to release Alvex Orgchart, Document Registers, My Workflows dashlet as independent solutions, so they can use these features separately without installing components they do not need. So we decided to do it.
Some small features in new Alvex might be lost, because components are redesigned to work independently. But this allows us to add new features easier, and it also makes the support easier.
Upgrade path for our Enterprise customers
During next two weeks we will contact all our customers with active subscriptions and discuss their plans to upgrade Alfresco to 5.0. We will carefully check that all components customers need will work on 5.0 and will be integrated between each other.
Pricing for new Alvex will be changed. We will publish it as soon as new components be released. All customers with active subscriptions may use all Alvex components and renew their subscriptions on conditions of old pricing.
Future
As you may see this decision does not solve the problem completely: when Alfresco will release 5.1 or 6.0 version we may meet the same issue again. But it will be easier for us, we will be able to release new versions faster.
Frankly speaking we have quite vast plans of developing Alvex. We are going to move Alvex from Share and develop custom user interface. We understand that it is a big change, but we believe that many customers and partners will support us in this decision.
In October 2014 we drank beer with one person from Alfresco's technical management (let us not publish his name :) ), and he said: "Alfresco Share is good for big projects. System integrators customize it, and only after 3-5 years customers think about updating Alfresco. So every upgrade is a new unique project, for which you should rewrite all your customizations. But for the product based on Alfresco - it's better to develop custom user interface" or something like that. We want to yield to this advice.
However, it causes many questions like "How to make it extendable?", "How to make the migration process simple?", "How not to lose important Share features?" and so on. So we will not bring to life these plans in the nearest future, but we’ve started working on it. Nevertheless, the primary task for the next months is to divide Alvex to 5-6 components that should work both independently or together.
Summary
This point is for those who was too lazy to read all these words above and just clicked "PageDown" few times.
Today we released Alvex Community 2015.02 and Alvex Enterprise 2.1.1. These releases are compatible with Alfresco 4.2 ONLY.
Alvex as a complete solution is dead. If you are in shock, start reading this blog entry from the beginning.
We will release different products that will be named something like "Alvex OrgChart", "Alvex Document Registers" during next months. They will be compatible with Alfresco 5 only.
We started working on building new Alvex, that will be based on the same backend, but the user interface will be completely reworked.
If you use Alvex Enterprise and have an active subscription, then you can continue to use Alvex as a complete solution for Alfresco 4.2 further, we will support it and release new versions till all customers will not migrate to Alfresco 5.
Feedback
It is important for us to hear a feedback from you, if you are interested in Alvex future:
What Alvex components do you want to use for Alfresco 5.0 first of all?
What Alfresco and Alvex features you want to see in the new Alvex user interface? What nonexistent features do you want to see?
We created a survey to make it easier to answer these questions. As an alternative option you may contact us using ping [at] itdhq [dot] com email address, we will appreciate your time and thoughts.
0 notes
itdhq · 10 years ago
Text
Dropping Alfresco user dashboard configuration
Usual situation with companies who start using Alfresco: users start playing with newly installed system, configure their dashbloard, create sites. And then business management says "let's go to production". These words mean that all users should start from the beginning. All of them should have the same dashlets and links on the first page. So administrator should drop all changes users did on their dashboards, but should not touch any data and sites.
In this situation administrator can ask all users to configure their dashboards, does it himself for dozens or hundreds of users, or use a script that will configure all dashboards automatically. We want to tell about the third way.
Let's imagine that current user dashboard looks like this:
presets.xml
Default dashboard configuration is stored in the tomcat/webapps/share/WEB-INF/classes/alfresco/site-data/presets/presets.xml file.
Copy a file to tomcat/shared/classes/alfresco/web-extension/site-data/presets/presets.xml.
Find a section <preset id="user-dashboard">. It's a configuration of the user dashboard that we need. Delete all other presets because we do not want to override them.
In the <pages> section you may find <template-instance> field. Update it to change the default layout. Available values are:
dashboard-1-column
dashboard-2-columns-wide-left
dashboard-2-columns-wide-right
dashboard-3-columns
dashboard-4-columns
In the <components> section you may select dashets to show. URL of all dashlets can be found at http://{{server}}:{{port}}/share/page/index/family/user-dashlet page in your Alfresco instance. Use <region-id> tag to place a dashlet to the location on the dashboard you like.
After completing your default dashboard configuration you should restart Alfresco. To check the configuration create a new user and login to Alfresco. After that you can delete the test user.
Dropping users' dashboard configuration
The issue is that our new dashboard configuration will not apply automatically to the dashboards of those users who already logged in to Alfresco. To apply it to the dashboard of all users we need to drop users' configurations. Install Alfresco JavaScript console and use the following script to do it:
Result
So when users login next time, Alfresco will not find any configuration and our new layout will apply.
Script is available for downloading on Github.
0 notes
itdhq · 11 years ago
Text
Collection of impressions from Alfresco Summit
Last week we participated in Alfresco Summit 2014. This year the conference was held in London. Here are some interesting facts from the conference.
There were a lot of speculations during the last year that good old Alfresco DevCon would be replaced with marketing Alfresco Summit. To be honest, we were afraid of it too. But these fears were wrong. Summit had two clear tracks - analytic and case studies vs technical stuff. And both were good.
Order of the Bee presence makes Summit more friendly and funny. Many people in the t-shirts with bees were ready to answer any technical question and to explain what is the Order of the Bee.
Alfresco presented new applications based on Activiti. Contract management and new Activiti Enterprise are pretty nice. This direction of thoughts gave us an idea on how to make Alvex better. After we convert our ideas to the code, you can wait for a big update from us.
A spirit of community and open source was here again at it was on DevCon 2011 and 2012.
We described straight all the fear and loathing under the hood of current master data module - what we really do not like about Alfresco implementation of certain services, how many Alfresco beans we overloaded and which hacks were required. And know what? Derek Hulley (@derekhulley) came to our session just to tell that he was the person who wrote that services years ago and that our patches are welcome. Thanks Derek! It's *exactly* what "good old DevCon" stands for!
We played a Buzzword Bingo game during our presentation. 35 people in the audince tried to win a honey pot. Finally we presented 4 honey pots brought from Russia to the winners.
Alfresco presented power adapters to everyone. It was very nice because of many european people on the conference and an issue with UK plugs. We took an extension cord with us to the conference, so we got acquainted with many new people with whom we shared a power adapter. :)
As usual keynote by John Newton was one of the most expected sessions. This time John presented an idea of the Digital Enterprise, so we could make a lot of nice photos. Presentation is published to SlideShare already.
During the last Lightning Talks session we presented Data Spider, our extension to capture a content from FTP/CIFS to Alfresco and to assemble a metadata of the documents from pieces extracted from folder and file paths.
Special thanks to Richard Esplin for his support and work during Summit.
The Summit has been ended with a Bee party. Alfresco Technical management kindly sponsored our beer. 40+ bees and Alfresco technical staff discussed accumulated questions.
Bee Party. No comments.
Thanks for the photos to @marsbard, @alfresco, @rwetherall, @MaxOrain, and to us.
0 notes
itdhq · 11 years ago
Text
Locking documents in workflow
One more new feature for developers that we introduce in Alvex 2.1 is locking documents in workflows.
When you assign a task to review a document to several reviewers, you don't want the document to be changed before all reviewers complete the task. If someone updates the document between first and second assignee review the document, then actually people review different versions of the document. To avoid such situation we should lock the document for the "Document Review" stage.
So now you can prohibit users to update, delete or change in any other way a document during some workflow stages. For example, you can lock a document on the stage of approving the document, and unlock it after all reviewers completed a review task.
To lock all documents in the workflow package add the following bean to workflow context (sample):
This bean describes that all documents in the workflow package should be locked on the start of Review Document task in alvex-parallel-review-20 workflow.
To unlock all documents in the workflow package add the following bean to the same context:
This bean describes that documents should be unlocked on the start of Revise Document task in the same workflow or if the workflow has been canceled or completed.
There is one problem that you can meet while using this feature too actively. Alfresco does not support lock ID. So if you started 2 workflows that lock the same document, then the document will be unlocked following conditions in the first workflow. We cannot track are there any workflows that lock the document still active or not. So we just unlock the document upon the request from the workflow.
0 notes
itdhq · 11 years ago
Text
Items auto-numbering in Document Registers and Data Lists
Alvex has been providing auto-numbering feature for documents in the registers since 1.3 version. How did it work?
Select ID format: %{inc}, %{fullYear}-%{month}/%{monthInc} or other.
Add new document to the register and see automatically formed number in the “ID” field: 1, 2, 2014-08/1…
Change ID to the one you like.
Save the document.
You are not allowed to modify ID, it is assigned one time during creating a document.
But not everyone was happy with this behaviour. In some cases you may need to assign a document ID manually without any ID formats and number suggestions. In other cases you need fixed auto-numbering without any chance of changing ID.
So in Alvex 2.1 we improved auto-numbering. Now it includes:
Three modes of the auto-numbering:
Suggest the next ID automatically, allow manual correction
Assign the next ID automatically, no manual change allowed
Assign the next ID manually, disable automatic ID generation
An option to allow ID change for existing items
Both features are configurable on per registry basis. So, you can have different configurations for registries of the same type.
Let`s take a deeper look at new features.
Configuring the behaviour
All configurations are done on per-register basis. It means that you use “/alvex-auto-numberer.ftl” control template for your field that contains ID of the item in Share configuration. Then you may select the behaviour for the register while register creation or configuring.
Use Case #1: “Suggest the next ID automatically, allow manual correction” mode
This mode is similar to the one that works in old Alvex releases. And it is the only one that exists in Community edition:
Documents should have IDs
IDs are sequential. Samples:
1, 2, 3…
2014-08/1, 2014-08/3, 2014-09/1…
Some documents require sub-numbers or extra information inside ID that should be entered manually. Samples:
1, 2R, 3…
2014-08/1, 2014-08/3, 2014-09/1-ND…
Additional feature: Now Alvex can suggest the next number if current one was taken by somebody else while you were filling the form.
Creating a document with an automatically assigned ID:
Creating a document with a manually corrected ID:
Trying to create a document with ID that is already in use:
Alvex notifies the user that ID is already in use and suggests another number:
Use Case #2: “Assign the next ID automatically, no manual change allowed” mode
Documents should have IDs
IDs are sequential.
Manager can reset a counter or change the current value of the counter
No manual changes of ID allowed. Samples:
1, 2, 3…
2014-08/1, 2014-08/3, 2014-09/1…
Creating a document:
Viewing the list:
Use Case #3: “Assign the next ID manually, disable automatic ID generation”
Documents should have IDs
IDs doesn’t have any fixed format. People enter IDs manually while document registration.
Samples:
RDP-14, OF16/1, SUP-7/1-14
Why do we still use auto-numbering control template in the Share configuration if we don’t need it for this register? Because you may still need auto-numbering in some registers of the same type. It’s per-register configuration. Also this control provides UI for ensuring unique IDs.
Creating a document — ID is not generated automatically:
Enter ID manually:
Viewing the list:
Allowing ID change for existing items on per-register basis
In some document registers you enter ID only once — during the document registration. After ID is assigned to the document it could not be changed. But in other cases you want to change ID sometimes. Now you may configure behaviour of this feature on per-register basis.
This feature exists both in Alvex Community and Alvex Enterprise
Click “Edit Document”
ID field will be shown as on “View” screen if you not set a check “Allow ID change”:
You can modify the value of the ID field if you set a check “Allow ID change”:
Alvex 2.1 will be released in September. But you may already find this features by downloading Alvex Nightly Build from the website.
0 notes
itdhq · 11 years ago
Text
Restructuring of the company
As you may know, our company and the most of Alvex engineers are located in Russia. It was ok for years, because the most of our customers were located in Russia too. However, we see recently a lot of interest in Alvex from all over the world. It's not that comfortable for our customers to work with Russian legal entity - international taxes are not simple, there are issues with deal registration, two-language agreements require additional work, Russian jurisdiction causes fear, uncertainty and doubt in general.
We don’t want these formal issues to become a showstopper in our relations with partners and customers. So we decided to move our headquarter to the United Kingdom. It helps us to:
make our work more transparent for the customers,
govern our international contracts by UK laws,
sign international contracts without additional paperwork.
Greet Alvex Software Limited, a resident of the United Kingdom!
Note: We don’t move our engineering and support teams to the UK. At least for now. This restructuring affects only our formal relations with customers and partners outside Russian Federation. So you will continue seeing “ITD Systems” company name still often: on Github, on www.itdhq.com website, etc.
0 notes
itdhq · 11 years ago
Text
Alvex Datagrid: Custom Item Actions
In previous blog post we started looking at Alvex Datagrid extensibility points. This post will cover one more important thing - adding custom actions for datalist items (you know, that buttons in the right column).
We are going to use Alfresco Share extension modules mechanism, you can find details on it in this blog post by Dave Draper. However, our extensions will use features that are unique for Alvex Datagrid, so you need either Alvex EE / CE or separate Alvex Datagrid on top of your Alfresco installation.
We create typical config for Alfresco Share extension module:
You can see here that we extend "documents-registers" with our patches from "custom.documents-registers". We are going to extend js controller only this time.
There are two cases for datagrid actions - you may want either just a link for some node-specific page or your custom logic is coded as a client side js.
The first example targets link-based actions:
There are four things to care about for link-based action:
href - link template, "nodeRef=" part will be processed for each datalist item and real nodeRef will be provided automatically.
permission - what permissions the user should have on the item to perform this action. Possible options: "edit", "delete" or just "" if view permission is enough.
label - the name of your action. It's usual label id from any available i18n message bundle.
className - it is used in css to provide an icon for your action, example will be provided in few seconds.
The second example is about custom js based actions:
You can see the only difference with the previous sample - there is no "href", but there is "func" - the name of the function to call. Obviously, we are to provide the implementation of this function.
Let's make a use of custom register from the previous post. We will add an "Approve" action, that will just set today as a signing date of the contract. Of course, real life examples will be more complex - most probably, they will require digital signature and so on. But we need just an example, so this complexity is beyond the scope of current post. Action implementation:
Let me repeat myself from the previous post - if you are familiar with Alfresco UI based on YUI, the function looks pretty obvious. The object representing current item is passed to our function, we create and send request to change one of its properties, after the property is changed we update the UI. If you are new to Alfresco client-side development - I guess, you still get the point, and you can check appropriate documentation for details.
We need only two small pieces to complete our actions. The first one - let's choose custom icons for them. We are going to use for this example default icons provided by Alfresco. Of course, you can use your custom ones. Actions have classNames set, and these names can be used in css now:
The last thing - loading our client side js and css. I’m going to do it quick and dirty and just add in my Share config this section:
That's it. If you deploy these actions, you will see that your datagrid now looks like this:
If you click on the first action, default "Manage permissions" page is opened.
Clicking "Approve" action sets signing date of the contract.
P.S. All the files involed are available on https://github.com/ITDSystems/alvex-courses-extras/tree/master/2014-06-20/custom-datagrid-actions
P.P.S. After you deploy everything, you immediately notice one issue - we have now "Approve" button for all datalists / registries, even for those that have no signing date property. We are working on fixing this issue in the next releases.
0 notes